GNU/Linux >> Linux Esercitazione >  >> Linux

Autorizzazioni Linux 101

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.


Linux
  1. Reimposta la password di root su Linux

  2. Permessi Linux:un'introduzione a chmod

  3. Permessi dei file in Linux con esempio

  4. Aggiungi un utente Linux con autorizzazioni di root del documento

  5. Come installare VIM su Linux quando non ho i permessi di root?

Password predefinita di Kali Linux

Comprendere i permessi dei file Linux

Comando Umask in Linux

Comando Chmod in Linux (autorizzazioni file)

Come modificare le autorizzazioni in Linux

Comando Chmod in Linux