GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa significa chmod 777

Stai cercando di risolvere un problema di autorizzazione con il tuo server web e hai trovato informazioni su Internet, dicendo che devi chmod 777 ricorsivamente la directory web. Prima di farlo, assicurati di aver compreso cosa significa chmod -R 777 do e perché non dovresti mai impostare le autorizzazioni su 777.

Questo articolo spiega il modello di autorizzazioni di base di Linux e il significato dei numeri corrispondenti alle autorizzazioni.

Capire i permessi dei file Linux #

In Linux, l'accesso ai file è controllato dal sistema operativo utilizzando le autorizzazioni, gli attributi e la proprietà dei file. La comprensione del modello di autorizzazioni del file system Linux ti consente di limitare l'accesso a file e directory solo a utenti e processi autorizzati e rendere il tuo sistema più sicuro.

Ogni file è di proprietà di un particolare utente e di un gruppo e gli vengono assegnati diritti di accesso autorizzati per tre diverse classi di utenti:

  • Il proprietario del file.
  • I membri del gruppo.
  • Altri (tutti gli altri).

Esistono tre tipi di autorizzazioni per i file che si applicano a ciascuna classe utente e consentono di specificare a quali utenti è consentito leggere il file, scrivere sul file o eseguire il file. Gli stessi attributi di autorizzazione si applicano sia ai file che alle directory con un significato diverso:

  • Il permesso di lettura.
    • Il file è leggibile. Ad esempio, quando è impostata l'autorizzazione di lettura, l'utente può aprire il file in un editor di testo.
    • È possibile visualizzare i contenuti della directory. L'utente può elencare i file all'interno della directory con ls comando.
  • Il permesso di scrittura.
    • Il file può essere cambiato o modificato.
    • Il contenuto della directory può essere modificato. L'utente può creare nuovi file, eliminare file esistenti, spostare file, rinominare file...ecc.
  • Il permesso di esecuzione.
    • Il file può essere eseguito.
    • La directory può essere inserita utilizzando il cd comando.

I permessi dei file possono essere visualizzati usando ls comando. Ecco un esempio:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Il primo carattere mostra il tipo di file. Può essere un file normale (- ), directory (d ), un collegamento simbolico(l ), o qualsiasi altro tipo speciale di file.

I successivi nove caratteri rappresentano i permessi del file, tre triplette di tre caratteri ciascuna. La prima tripletta mostra le autorizzazioni del proprietario, la seconda le autorizzazioni di gruppo e l'ultima tripletta mostra le autorizzazioni di tutti gli altri.

Numero di autorizzazione #

Il permesso del file può essere rappresentato in un formato numerico o simbolico. In questo articolo ci concentreremo sul formato numerico.

Il numero di autorizzazione può essere composto da tre o quattro cifre, comprese tra 0 e 7.

Quando viene utilizzato un numero di 3 cifre, la prima cifra rappresenta i permessi del proprietario del file, la seconda il gruppo del file e l'ultima tutti gli altri utenti.

Le autorizzazioni di scrittura, lettura ed esecuzione hanno il seguente valore numerico:

  • r (leggi) =4
  • w (scrivere) =2
  • x (esegui) =1
  • nessuna autorizzazione =0

La cifra delle autorizzazioni di una specifica classe utente è la somma dei valori delle autorizzazioni per quella classe.

Ciascuna cifra del numero di autorizzazione può essere una somma di 4, 2, 1 e 0:

  • 0 (0+0+0) – Nessuna autorizzazione.
  • 1 (0+0+1) – Esegui solo l'autorizzazione.
  • 2 (0+2+0) – Solo permessi di scrittura.
  • 3 (0+2+1) – Scrivi ed esegui autorizzazioni.
  • 4 (4+0+0) – Solo permessi di lettura.
  • 5 (4+0+1) – Permesso di lettura ed esecuzione.
  • 6 (4+2+0) – Permessi di lettura e scrittura.
  • 7 (4+2+1) – Permesso di lettura, scrittura ed esecuzione.

Ad esempio, se il numero di autorizzazione è impostato su 750 significa che il proprietario del file ha l'autorizzazione di lettura, scrittura ed esecuzione, il gruppo del file ha le autorizzazioni di lettura ed esecuzione e gli altri utenti non hanno autorizzazioni:

  • Proprietario:rwx=4+2+1=7
  • Gruppo:r-x=4+0+1=5
  • Altri:r-x=0+0+0=0

Quando viene utilizzato il numero a 4 cifre, la prima cifra ha il seguente significato:

  • setuid=4
  • setgid=2
  • appiccicoso=1
  • nessuna modifica =0

Le tre cifre successive hanno lo stesso significato di quando si utilizza un numero a 3 cifre. Se la prima cifra è 0 può essere omessa e la modalità può essere rappresentata con 3 cifre. La modalità numerica 0755 è lo stesso di 755 .

Per visualizzare i permessi del file nella notazione numerica (ottale), usa il stat comando:

stat -c "%a" filename
644

Non usare mai chmod 777 #

L'impostazione delle autorizzazioni 777 su un file o una directory significa che sarà leggibile, scrivibile ed eseguibile da tutti gli utenti e potrebbe rappresentare un enorme rischio per la sicurezza.

Ad esempio, se modifichi ricorsivamente i permessi di tutti i file e le sottodirectory in /var/www directory in 777 , qualsiasi utente del sistema sarà in grado di creare, eliminare o modificare i file in quella directory.

Se riscontri problemi di autorizzazione con il tuo server web, invece di impostare ricorsivamente l'autorizzazione su 777 , cambia la proprietà del file in base all'utente che esegue l'applicazione e imposta le autorizzazioni del file su 644 e le autorizzazioni della directory per 755 .

La proprietà del file può essere modificata utilizzando il chown comando e permessi con il chmod comando.

Supponiamo che tu abbia un'applicazione PHP sul tuo server in esecuzione come utente "linuxize". Per impostare le autorizzazioni corrette eseguiresti:

chown -R linuxize: /var/wwwfind /var/www -type d -exec chmod 755 {} \;find /var/www -type f -exec chmod 644 {} \;

Solo il root, il proprietario del file o l'utente con privilegi sudo possono modificare le autorizzazioni di un file. Fai molta attenzione quando usi chmod , soprattutto quando si modificano ricorsivamente le autorizzazioni.

Conclusione #

Se gestisci un sistema Linux, è fondamentale sapere come funzionano i permessi di Linux.

Non dovresti mai impostare 777 (rwxrwxrwx ) autorizzazioni file e directory autorizzazioni. 777 significa che chiunque può fare qualsiasi cosa con quei file.

Sentiti libero di lasciare un commento in caso di domande.


Linux
  1. Cosa significa l'attributo "s" nelle autorizzazioni dei file??

  2. Cosa significa "rm is hash"?

  3. Cosa significa questo avviso?

  4. Cosa significa rc nei file punto

  5. Cosa significa #define X X?

Cosa significa essere "sh compatibile"?

Nessuna variabile DISPLAY X11 - cosa significa?

Cosa significa \b in un pattern grep?

Cosa significa la capacità ep?

Cosa significa %st in alto?

Cosa significa un + alla fine dei permessi da ls -l?