GNU/Linux >> Linux Esercitazione >  >> Linux

Perché ho bisogno di un bit "esegui" in modalità file su file system Unix?

Perché *nix non è abbastanza danneggiato al cervello da rendere un file "eseguibile binario" se ti capita di chiamarlo ".exe" o "script eseguibile" se ti capita di chiamarlo ".bat".

In Linux, il nome del file non ha importanza.

E i permessi che dai a un file fai importa.

Il che ha senso. IMHO...


Il bit di esecuzione è in qualche modo confuso tra l'essere un permesso e un identificatore del tipo di oggetto.

E no, non puoi "copiare sempre" il file nella tua home directory:solo se è leggibile da te.

I file possono essere eseguibili, ma non leggibili.

Hai ragione in quanto se un file è leggibile per te ma non eseguibile per te, puoi copiarlo e capovolgere il bit di esecuzione e usarlo. Forse. Ma potrebbe non funzionare. L'eseguibile può essere sensibile a dove è installato. Oppure il file può dipendere dal suo bit root setuid.

Non progetterei un sistema di autorizzazioni in questo modo partendo da una tabula rasa; non ha del tutto senso. L'autorizzazione all'esecuzione sarebbe separata da un attributo di tipo eseguibile e l'autorizzazione all'esecuzione non verrebbe sovraccaricata con l'autorizzazione alla ricerca (anche se fosse memorizzata in quel modo; l'API non la rivelerebbe a livello di maschera di bit).


Sono sorpreso che nessuno abbia menzionato i binari che girano con privilegi speciali. Wireshark viene fornito con un caso d'uso del mondo reale qui:una delle sue funzioni principali è catturare il traffico di rete, qualcosa che normalmente solo root può fare. Ha senso che tu voglia consentire a determinati utenti di catturare il traffico con Wireshark senza dover fornire loro l'accesso root completo, quindi Wireshark viene fornito con un file binario chiamato dumpcap che ha le capacità necessarie (CAP_NET_RAW e CAP_NET_ADMIN) abilitate. Questo codice binario è 0754 (rwxr-xr-- ) e il GID associato è un gruppo speciale installato da Wireshark. In questo modo, qualsiasi utente del gruppo può eseguire il file binario (generalmente tramite Wireshark) per acquisire il traffico e verrà eseguito con i privilegi necessari per farlo, ma un utente che non fa parte di quel gruppo non sarà in grado di farlo perché non lo farebbe t avere il permesso di esecuzione. Potrebbero comunque copiarlo nella loro home directory, ma la loro copia non avrebbe le funzionalità necessarie impostate, quindi non potrebbe effettivamente catturare alcun traffico.


Linux
  1. Perché abbiamo bisogno di mktemp?

  2. Perché stdout necessita di uno svuotamento esplicito quando viene reindirizzato al file?

  3. Perché abbiamo bisogno del file .so.1 in Linux?

  4. Perché i file .so sono eseguibili?

  5. Qual è lo sticky bit nei file system UNIX? Quando viene utilizzato?

Come rendere eseguibile un file in Linux

Come convertire un file Windows in un file UNIX

FSTAB &MTAB

I 10 migliori sistemi operativi basati su Unix

Comando AWK in Linux/Unix

Come modificare file binari su sistemi Unix