Cosa fa l'autorizzazione "esegui"?


31

Sono scioccato dal fatto che ancora non capisco l'autorizzazione "Esegui" in Linux.

Esistono tre autorizzazioni: lettura, scrittura ed esecuzione. Capisco che leggere e scrivere letteralmente, ma cosa esegue esattamente?

Diciamo che ho example.phpcon il permesso di esecuzione. Cosa posso fare con example.php?

Risposte:


32

Fondamentalmente significa che puoi dire al sistema operativo di eseguire il codice nel file. Ad esempio, se il file fosse un eseguibile binario, l'accesso in scrittura consentirebbe di modificarlo, l'accesso in lettura consentirebbe di visualizzarlo, ma senza le autorizzazioni di esecuzione non sarebbe possibile eseguire il programma. Nel caso di uno script, è un po 'più complicato, poiché non è necessariamente necessario "eseguire" il programma, è possibile semplicemente leggerne il contenuto in un interprete, che a sua volta ha il privilegio di esecuzione, ma non è necessario eseguire permessi per lo script stesso.

Alcuni script in Linux sono essi stessi eseguibili, vedrai spesso una riga in alto come

#! / bin / bash o

#! / Bin / python

Quella riga dice al kernel che il file può essere eseguito chiamando il programma pertinente (e non è solo testo). Quindi puoi semplicemente eseguire il tuo script come

./script

invece di doverlo fare

python ./script


Cosa significa questo per i tipi di file non testuali, ad es. .pngo .avi?
iono,

1
Fondamentalmente lo stesso, l'estensione del file non ha importanza. Se hai #!/bin/bashall'inizio del tuo .avifile, verrà eseguito come bash. Se è un formato avi reale, probabilmente non sarai in grado di eseguirlo perché interpretarlo come comandi non avrà senso e fallirà.
Mifeet,

Il #!kernel è davvero interpretato?
masterxilo,

17

"esegui" consente all'utente di eseguire eseguibili. Per le directory è consentito immettere la directory utilizzando il comando cd.


1
L'accesso alla parte della directory è enorme. Non lo indovineresti mai solo dal nome della modalità stessa.
PrimitiveNom

2

Ai fini pratici, il permesso di leggere implica la capacità di eseguire.

Tuttavia non è vero il contrario; c'è un certo valore nella capacità di dare il permesso di eseguire il codice senza dare il permesso di leggerlo.


Questo in realtà ha molto senso.
masterxilo,

Ero confuso con READ / EXECUTE e mi aspettavo una risposta simile. grazie
T.Todua il

2

È per l'esecuzione di app dalla GUI o dalla riga di comando. Per un uso "normale" di php (tramite webserver), ciò non cambia nulla. Precisamente, dipende dalla configurazione, ma nella maggior parte dei casi non è necessaria l'autorizzazione + x per consentire il caricamento della pagina Web PHP tramite browser.

Per eseguire dalla riga di comando è necessario:

  • aggiungi #!/usr/bin/phpall'inizio dello script
  • aggiungi + x permesso
  • lo script deve trovarsi nel percorso di ricerca eseguibile (variabile di ambiente $ PATH) oppure è necessario specificare la directory in cui si trova prima del nome dello script. Potrebbe essere un percorso assoluto, come /etc/xdg/fooo /home/fred/bar, o una directory relativa, come dir1/prog1o ./prog2.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.