Comprendere i permessi di Linux e come controllare quali utenti hanno accesso ai file è un'abilità fondamentale per l'amministrazione dei sistemi.
Questo articolo tratterà le autorizzazioni standard dei file system Linux, approfondirà ulteriormente le autorizzazioni speciali e concluderà con una spiegazione delle autorizzazioni predefinite utilizzando umask .
Comprendere l'output del comando ls
Prima di poter parlare di come modificare i permessi, dobbiamo sapere come visualizzarli. Le ls comando con l'argomento elenco lungo (-l ) ci fornisce molte informazioni su un file.
$ ls -lAh
total 20K
-rwxr-xr--+ 1 root root 0 Mar 4 19:39 file1
-rw-rw-rw-. 1 root root 0 Mar 4 19:39 file10
-rwxrwxr--+ 1 root root 0 Mar 4 19:39 file2
-rw-rw-rw-. 1 root root 0 Mar 4 19:39 file8
-rw-rw-rw-. 1 root root 0 Mar 4 19:39 file9
drwxrwxrwx. 2 root root 4.0K Mar 4 20:04 testdir
Per capire cosa significa, analizziamo l'output relativo alle autorizzazioni in singole sezioni. Sarà più facile fare riferimento a ciascuna sezione singolarmente.
Dai un'occhiata a ciascun componente della riga finale nell'output sopra:
drwxrwxrwx. 2 root root 4.0K Mar 4 20:04 testdir
Sezione 1 | Sezione 2 | Sezione 3 | Sezione 4 | Sezione 5 | Sezione 6 | Sezione 7 |
---|---|---|---|---|---|---|
d | rwx | rwx | rwx | . | root | root |
La sezione 1 (a sinistra) rivela di che tipo di file si tratta.
d | Rubrica |
- | File normale |
l | Un collegamento software |
La pagina delle informazioni per ls ha un elenco completo dei diversi tipi di file.
Ogni file ha tre modalità di accesso:
- il proprietario
- il gruppo
- tutti gli altri
Le sezioni 2, 3 e 4 si riferiscono alle autorizzazioni utente, gruppo e "altri utenti". E ogni sezione può includere una combinazione di r (leggi), w (scrivi) e x autorizzazioni (eseguibili).
A ciascuna delle autorizzazioni viene assegnato anche un valore numerico, importante quando si parla della rappresentazione ottale delle autorizzazioni.
Autorizzazione | Valore ottale |
---|---|
Leggi | 4 |
Scrivi | 2 |
Esegui | 1 |
La sezione 5 descrive in dettaglio qualsiasi metodo di accesso alternativo, come SELinux o File Access Control List (FACL).
Metodo | Carattere |
---|---|
Nessun altro metodo | - |
SELinux | . |
FACL | + |
Qualsiasi combinazione di metodi | + |
Le sezioni 6 e 7 sono rispettivamente i nomi del proprietario e del gruppo.
Utilizzo di chown e chmod
Il comando chown
Il chown Il comando (cambia proprietà) viene utilizzato per modificare l'utente di un file e la proprietà del gruppo.
Per modificare la proprietà dell'utente e del gruppo del file foo per rootare , possiamo usare questi comandi:
$ chown root:root foo
$ chown root: foo
Esecuzione del comando con l'utente seguito da due punti (: ) imposta sia l'utente che la proprietà del gruppo.
Per impostare solo la proprietà dell'utente del file foo alla radice utente, immettere:
$ chown root foo
Per modificare solo la proprietà del gruppo del file foo , fai precedere il gruppo con due punti:
$ chown :root foo
Il comando chmod
Il chmod Il comando (cambia modalità) controlla le autorizzazioni del file per il proprietario, il gruppo e tutti gli altri utenti che non sono né il proprietario né parte del gruppo associato al file.
Il chmod il comando può impostare i permessi sia nella formattazione ottale (ad es. 755, 644, ecc.) che simbolica (ad es. u+rwx, g-rwx, o=rw).
La notazione ottale assegna 4 "punti" a lettura , 2 per scrivere e 1 per eseguire . Se vogliamo assegnare all'utente leggi permessi, ne assegniamo 4 al primo slot, ma se vogliamo aggiungere scrivi permessi, dobbiamo aggiungere 2. Se vogliamo aggiungere esegui , quindi aggiungiamo 1. Lo facciamo per ogni tipo di autorizzazione:proprietario, gruppo e altri.
Ad esempio, se vogliamo assegnare lettura , scrivi e esegui al proprietario del file, ma solo letto ed esegui per raggruppare i membri e tutti gli altri utenti, useremmo 755 in formattazione ottale. Sono tutti i bit di autorizzazione per il proprietario (4+2+1), ma solo 4 e 1 per il gruppo e altri (4+1).
La ripartizione per questo è:4+2+1=7; 4+1=5; e 4+1=5.
Se volessimo assegnare leggi e scrivi al proprietario del file ma solo letto ai membri del gruppo ea tutti gli altri utenti, potremmo usare chmod come segue:
$ chmod 644 foo_file
Negli esempi seguenti, utilizziamo la notazione simbolica in diversi raggruppamenti. Nota le lettere u , g e o rappresentare utente , gruppo e altro . Usiamo u , g e o insieme a + , - o = per aggiungere, rimuovere o impostare bit di autorizzazione.
Per aggiungere il esegui bit al set di autorizzazioni di proprietà:
$ chmod u+x foo_file
Per rimuovere leggi , scrivi e esegui dai membri del gruppo:
$ chmod g-rwx foo_file
Per impostare la proprietà per tutti gli altri utenti su lettura e scrivi :
$ chmod o=rw
I bit speciali:imposta UID, imposta GID e bit permanenti
Oltre alle autorizzazioni standard, ci sono alcuni bit di autorizzazione speciali che offrono utili vantaggi.
Imposta ID utente (suid)
Quando ha fatto causa è impostato su un file, un'operazione viene eseguita come proprietario del file, non come utente che esegue il file. Un buon esempio di questo è il passwd comando. Ha bisogno della denuncia bit da impostare in modo che la modifica di una password venga eseguita con i permessi di root.
$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
Un esempio di impostazione del suid un po' sarebbe:
$ chmod u+s /bin/foo_file_name
Imposta ID gruppo (sgid)
Il sgid bit è simile a suid bit nel senso che le operazioni vengono eseguite sotto la proprietà del gruppo della directory invece dell'utente che esegue il comando.
Un esempio di utilizzo di sgid sarebbe se più utenti lavorano dalla stessa directory e ogni file creato nella directory deve avere le stesse autorizzazioni di gruppo. L'esempio seguente crea una directory chiamata collab_dir , imposta il sgid bit e cambia la proprietà del gruppo in webdev .
$ mkdir collab_dir
$ chmod g+s collab_dir
$ chown :webdev collab_dir
Ora qualsiasi file creato nella directory avrà la proprietà del gruppo di webdev invece dell'utente che ha creato il file.
$ cd collab_dir
$ touch file-sgid
$ ls -lah file-sgid
-rw-r--r--. 1 root webdev 0 Jun 12 06:04 file-sgid
Il bit "appiccicoso"
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Lo sticky bit indica che solo il proprietario di un file può eliminare il file, anche se le autorizzazioni di gruppo lo consentirebbero altrimenti. Questa impostazione di solito ha più senso in una directory comune o collaborativa come /tmp . Nell'esempio seguente, la t in esegui colonna di tutti gli altri set di autorizzazioni indica che il bit permanente è stato applicato.
$ ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jun 12 06:07 /tmp/
Tieni presente che questo non impedisce a qualcuno di modificare il file; impedisce loro di eliminare il contenuto di una directory.
Impostiamo il bit appiccicoso con:
$ chmod o+t foo_dir
Da solo, prova a impostare lo sticky bit su una directory e assegnagli autorizzazioni di gruppo complete in modo che più utenti possano leggere, scrivere ed eseguire sulla directory perché si trovano nello stesso gruppo.
Da lì, crea file come ogni utente e poi prova a eliminarli come l'altro.
Se tutto è configurato correttamente, un utente non dovrebbe essere in grado di eliminare utenti dall'altro utente.
Si noti che ciascuno di questi bit può anche essere impostato in formato ottale con SUID=4, SGID=2 e Sticky=1.
$ chmod 4744
$ chmod 2644
$ chmod 1755
Maiuscolo o minuscolo?
Se stai impostando i bit speciali e vedi una S maiuscola o T invece di minuscolo (come abbiamo visto fino a questo punto), è perché il bit di esecuzione sottostante non è presente. Per dimostrare, l'esempio seguente crea un file con il bit sticky impostato. Possiamo quindi aggiungere/rimuovere il bit di esecuzione per dimostrare la modifica del caso.
$ touch file cap-ST-demo
$ chmod 1755 cap-ST-demo
$ ls -l cap-ST-demo
-rwxr-xr-t. 1 root root 0 Jun 12 06:16 cap-ST-demo
$ chmod o-x cap-X-demo
$ ls -l cap-X-demo
-rwxr-xr-T. 1 root root 0 Jun 12 06:16 cap-ST-demo
Impostazione del bit di esecuzione in modo condizionale
A questo punto, abbiamo impostato execute bit utilizzando una x minuscola , che lo imposta senza fare domande. Abbiamo un'altra opzione:usare una X maiuscola invece di minuscolo imposterà esegui bit solo se è già presente da qualche parte nel gruppo di autorizzazioni. Questo può essere un concetto difficile da spiegare, ma la demo qui sotto aiuterà a illustrarlo. Nota qui che dopo aver provato ad aggiungere il esegui bit ai privilegi di gruppo, non viene applicato.
$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+X cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
In questo esempio simile, aggiungiamo prima il bit di esecuzione alle autorizzazioni del gruppo utilizzando la x minuscola e poi usa la X maiuscola per aggiungere autorizzazioni per tutti gli altri utenti. Questa volta, la X maiuscola imposta le autorizzazioni.
$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ ls -l cap-X-file
-rw-r-xr--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ chmod o+X cap-X-file
ls -l cap-X-file
-rw-r-xr-x. 1 root root 0 Jun 12 06:31 cap-X-file
Capire umask
La umask maschere (o "blocca") bit dal set di autorizzazioni predefinito per definire le autorizzazioni per un file o una directory. Ad esempio, un 2 in umask l'output indica che sta bloccando la scrittura bit da un file, almeno per impostazione predefinita.
Usando la umask comando senza argomenti ci permette di vedere l'attuale umask collocamento. Sono presenti quattro colonne:la prima è riservata allo speciale suid, sgid o sticky bit e le restanti tre rappresentano il proprietario, il gruppo e altre autorizzazioni.
$ umask
0022
Per capire cosa significa, possiamo eseguire umask con una -S (come mostrato di seguito) per ottenere il risultato della mascheratura dei bit. Ad esempio, a causa di 2 valore nella terza colonna, la scrittura il bit è mascherato dal gruppo e dalle altre sezioni; solo leggi ed esegui possono essere assegnati per quelli.
$ umask -S
u=rwx,g=rx,o=rx
Per vedere qual è il set di autorizzazioni predefinito per file e directory, impostiamo il nostro umask a tutti zeri. Ciò significa che non stiamo mascherando nessun bit quando creiamo un file.
$ umask 000
$ umask -S
u=rwx,g=rwx,o=rwx
$ touch file-umask-000
$ ls -l file-umask-000
-rw-rw-rw-. 1 root root 0 Jul 17 22:03 file-umask-000
Ora, quando creiamo un file, vediamo che le autorizzazioni predefinite sono lettura (4) e scrivi (2) per tutte le sezioni, che equivarrebbe a 666 in rappresentazione ottale.
Possiamo fare lo stesso per una directory e vedere che i suoi permessi predefiniti sono 777. Abbiamo bisogno di execute bit sulle directory in modo da poterle attraversare.
$ mkdir dir-umask-000
$ ls -ld dir-umask-000
drwxrwxrwx. 2 root root 4096 Jul 17 22:03 dir-umask-000/
Conclusione
Esistono molti altri modi in cui un amministratore può controllare l'accesso ai file su un sistema. Queste autorizzazioni sono di base per Linux e possiamo basarci su questi aspetti fondamentali. Se il tuo lavoro ti porta in FACL o SELinux, vedrai che si basano anche su queste prime regole di accesso ai file.