Questo articolo descrive come modificare le autorizzazioni su un server cloud Linux® utilizzando chmod
comando.
Cos'è il comando chmod?
In parole povere, chmod
sta per cambia modalità e viene utilizzato per impostare i permessi di file o directory in Linux. Gli utenti root usano chmod
per determinare quali utenti, gruppi e altri possono accedere a file o directory.
In genere, usi il chmod
comando nei seguenti formati:
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
L'uso delle opzioni con chmod
il comando è facoltativo. Il secondo esempio riceve l'uso più frequente. Senza un'opzione presente, chmod
modifica i permessi del file o della directory designati nel comando.
Autorizzazioni
In un sistema Linux, puoi utilizzare le autorizzazioni per fare riferimento al proprietario del file o della directory (utente), del gruppo che possiede il file o della directory (gruppo) o di chiunque altro acceda al file o alla directory (altri).
Indica queste autorizzazioni utilizzando la seguente notazione:
- caratteri alfanumerici (r, w, x)
- numeri ottali (0-7)
Ad esempio, hai un file chiamato example.txt e vuoi impostare le seguenti autorizzazioni:
- L'utente può leggere, scrivere ed eseguire il file.
- I membri del gruppo possono leggere ed eseguire, ma non scrivere il file.
- Gli altri possono solo leggere il file.
La seguente opzione di comando imposta le autorizzazioni desiderate per example.txt :
$ chmod u=rwx,g=rx,o=r example.txt
Questa opzione utilizza caratteri alfanumerici per indicare gli utenti che possono accedere al file e le autorizzazioni che desideri impostare per questi utenti designati.
- La lettera 'u' =utente
- La lettera 'g' =gruppo
- La lettera 'o' =altro
- La lettera 'r' =letta
- La lettera 'w' =scrivi
- La lettera 'x' =esegui
L'esempio seguente mostra come Linux rappresenta le autorizzazioni concesse nell'esempio precedente:
-rwxr-xr--
Le prime tre lettere (rwx) sono i permessi dell'utente. I secondi tre (r-x) rappresentano i permessi del gruppo e gli ultimi tre (r–) rappresentano i permessi degli altri.
Successivamente, abbiamo l'opzione ottale per il nostro example.txt esercizio:
$ chmod 754 example.txt
In questo esempio, i numeri 7, 5 e 4 rappresentano ciascuno l'utente, il gruppo e altri permessi. La prima posizione del numero determina i permessi dell'utente, il secondo numero determina i permessi del gruppo e il terzo numero assegna i permessi per gli altri.
Questi numeri non sono selezionati casualmente. Sommando i numeri 4, 2, 1 e 0 si determinano le autorizzazioni. I numeri hanno le seguenti assegnazioni:
- 4 sta per 'leggi'
- 2 sta per 'scrivere'
- 1 sta per 'esegui'
- 0 sta per "nessuno"
Pertanto, nel nostro esempio precedente, il 7 è determinato dalla combinazione di lettura (4), scrittura (2) ed esecuzione (1):4 + 2 + 1 =7. Il 5 è preso dalla somma di lettura (4), none (0) ed eseguire (1):4 + 0 + 1 =5. Infine, il 4 è una combinazione di read (4), none (0) e none (0):4 + 0 + 0 =4 .
Opzioni
In genere non è necessario utilizzare le opzioni in chmod
comando, ma nel caso, puoi usare le seguenti opzioni con chmod
:
-c
,--changes
:Fornisce un output dettagliato per le modifiche apportate-f
,--silent
,--silent
:silenzia la maggior parte dei messaggi di errore-v
,--verbose
:restituisce un messaggio dettagliato per ogni azione elaborata--no-preserve-root
:Ignora la deferenza normalmente data per impostazione predefinita alla directory / (root)--preserve-root
:non opera in modo ricorsivo nella directory / (root)--reference=RFILE
:imposta le autorizzazioni in modo che corrispondano a quelle di RFILE, ignorando qualsiasi MODE specifica-R
,--recursive
:le modifiche apportate a file o directory vengono applicate in modo ricorsivo--help
:Visualizza il messaggio di aiuto, quindi esce--version
:Visualizza le informazioni sulla versione, quindi esce
Extra
Oltre ai permessi già discussi, il chmod
comando può impostare altre tre autorizzazioni speciali in Linux.
- SUID (Imposta ID utente)
- SGID (Imposta ID gruppo)
- Punto appiccicoso
SUID
Un s
nel rwx
dell'utente set di autorizzazioni, sostituendo la x
, rappresenta questa autorizzazione, come mostrato nell'esempio seguente:
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
Le prime tre lettere in rwsr-xr-x
rappresentano i permessi dell'utente. Nota che invece di una x
c'è una s
nei tre slot di autorizzazione dell'utente. Invece di mostrare x
per eseguire, c'è un s
nel punto di esecuzione. Perché?
Nota: Il 4 davanti al solito set di autorizzazioni ottali rappresenta questa autorizzazione. Quindi invece di 755
, l'autorizzazione è scritta come 4755
.
Dovresti usare questa opzione con cautela perché questa particolare autorizzazione consente a un utente di eseguire un programma binario come se fosse il proprietario di quel programma anche se non lo è. L'esempio più noto di questo è il passwd
comando.
Nel caso di passwd
, l'utente è in grado di eseguire il programma anche se il programma binario è di proprietà di root. Tuttavia, poiché passwd
è impostato come SUID per impostazione predefinita, viene sempre eseguito come utente root.
Se un utente normale ha i permessi SUID su altri programmi binari, potrebbe eseguire comandi come root senza avere root
permessi. Consente un'escalation anormale dei privilegi che di solito richiedono sudo
privilegi di accesso.
I permessi SUID possono effettuare una precauzione incorporata nel sistema operativo Linux sotto forma di soli binari. Non influisce sugli script.
SGID
Un s
nel rwx
del gruppo set di autorizzazioni, sostituendo la x
in t r-x
segmento, rappresenta l'autorizzazione SGID, come mostrato nell'esempio seguente:
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
Questo s
è nel secondo gruppo di tre autorizzazioni, che abbiamo scoperto essere le autorizzazioni del gruppo in precedenza quando scritte in stile alfanumerico. Nel rendering ottale, un 2
davanti agli altri tre numeri di autorizzazione ottali denota questa autorizzazione. Invece di 755
, scrivilo come 2755
.
Come SUID, le autorizzazioni SGID funzionano solo sui binari. Non funzionano sugli script. Per quanto riguarda ciò che fa SGID, consente ai membri del gruppo senza privilegi di eseguire un file binario come se fossero l'utente root.
In genere, puoi utilizzare questa autorizzazione sulle directory in cui i membri del gruppo devono avere accesso all'interno della directory condivisa dal gruppo. Tutti i file creati in questa directory hanno lo stesso proprietario del gruppo, indipendentemente dal membro del gruppo che ha creato il file.
Punto appiccicoso
Un t
nel rwx
degli altri set di autorizzazioni, sostituendo la x
, rappresenta questa autorizzazione, come mostrato nell'esempio seguente:
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
Nota il t
nell'ultima serie di tre lettere. L'equivalente ottale di t
è un 1
davanti ai tre ottali di permesso. Invece di 777
, scrivilo come 1777
.
Cosa fa questo bit appiccicoso? In genere, utilizzi questa autorizzazione su un tmp directory e la sua funzione è impedire agli utenti di eliminare i file di proprietà di altri utenti. Di solito, se un gruppo ha accesso in scrittura a una directory, qualsiasi utente all'interno di quel gruppo può eliminare qualsiasi file all'interno di quella directory. Il permesso del bit appiccicoso lo ferma. Solo il creatore del file può eliminarlo.
Come best practice, dovresti impostare l'autorizzazione sticky bit su qualsiasi directory la cui altra autorizzazione è ottale 7 (lettura, scrittura, esecuzione). Nel nostro 754
ad esempio, vuoi usare l'autorizzazione sticky bit se gli ottali sono 757
dove 7 è il terzo ottale (che rappresenta il permesso degli altri).
Cheat sheet per le autorizzazioni per file e directory
Di seguito è riportato un rapido cheat sheet che spiega ogni parte dell'output di esempio:
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
:Il-
all'inizio ti dice che questo è un file. Und
all'inizio indica una directory.rwx
:le prime tre lettere rappresentano i permessi del proprietario del file e significano che il proprietario può leggere, scrivere ed eseguire il file example.txt.rw-
:le seconde tre lettere rappresentano i permessi del gruppo e significano che i membri del gruppo possono leggere e scrivere sul file, ma non possono eseguirlo.r--
:le terze tre lettere rappresentano i permessi degli altri e significano che chiunque non sia il proprietario o nel gruppo che possiede il file può solo leggere il file. Non possono scrivere sul file o eseguire il file.rack
:il proprietario del file.space
:il proprietario del gruppo.123G
:La dimensione del file in gigabyte. UnM
indicherebbe megabyte e unK
indicherebbe kilobyte.Feb 03 15:36
:Indica la data e l'ora dell'ultima modifica del file.example.txt
:Il nome del file. Se lo elenchi come '/example', è il nome della directory.