I file system utilizzano autorizzazioni e attributi per regolare il livello di interazione che i processi di sistema possono avere con file e directory.
Permessi di visualizzazione
Utilizzare l’opzione del comando ls-l
per visualizzare i permessi (o la modalità file) impostati per il contenuto di una directory, ad esempio:
ls ls-l/path/to/directory
La prima colonna è ciò su cui dobbiamo concentrarci., Taking an example value of drwxrwxrwx+
, the meaning of each character is explained in the following tables:
d |
rwx |
rwx |
rwx |
+ |
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., |
Le autorizzazioni che il proprietario ha sul file, spiegato di seguito. | Le autorizzazioni che il gruppo ha sul file, spiegato di seguito. | Le autorizzazioni che tutti gli altri utenti hanno sul file, spiegato di seguito. | Un singolo carattere che specifica se un metodo di accesso alternativo si applica al file. Quando questo carattere è uno spazio, non esiste un metodo di accesso alternativo. Un carattere. indica un file con un contesto di sicurezza, ma nessun altro metodo di accesso alternativo., Un file con qualsiasi altra combinazione di metodi di accesso alternativi è contrassegnato con un carattere+ , ad esempio nel caso di elenchi di controllo degli accessi., |
Ognuno dei tre autorizzazione triadi (rwx
nell’esempio di cui sopra) possono essere costituiti i seguenti caratteri:
Carattere | Effetto sul file | Effetto directory | |
---|---|---|---|
Leggi di autorizzazione (primo carattere) | - |
Il file non può essere letto., | Il contenuto della directory non può essere mostrato. |
r |
Il file può essere letto. | Il contenuto della directory può essere mostrato. | |
Autorizzazione di scrittura (secondo carattere) | - |
Il file non può essere modificato. | Il contenuto della directory non può essere modificato. |
w |
Il file può essere modificato., | Il contenuto della directory può essere modificato (creare nuovi file o cartelle; rinominare o eliminare file o cartelle esistenti); richiede l’autorizzazione di esecuzione per essere impostato, altrimenti questa autorizzazione non ha alcun effetto. | |
Esegui il permesso (terzo carattere) | - |
Il file non può essere eseguito. | Non è possibile accedere alla directory con cd. |
x |
Il file può essere eseguito., | È possibile accedere alla directory con cd; questo è l’unico bit di autorizzazione che in pratica può essere considerato “ereditato” dalle directory antenate, infatti se una qualsiasi cartella nel percorso non ha il bitx , non è possibile accedere neanche al file o alla cartella finale, indipendentemente dai suoi permessi; vedere path_resolution(7) per maggiori informazioni., |
|
s |
Il bit setuid quando si trova nella triade utente; il bit setgid quando si trova nella triade di gruppo; non si trova nella triade degli altri; implica anche che x è impostato. |
||
S |
Come s , ma x non è impostato; raro su file normali, e inutile sulle cartelle., |
||
t |
The sticky bit; it can only be found in the others triad; it also implies that x is set. |
||
T |
Same as t , but x is not set; rare on regular files, and useless on folders. |
See info Coreutils -n "Mode Structure"
and chmod(1) for more details.,
namei -l path
.Esempi
Vediamo alcuni esempi per chiarire:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie ha pieno accesso alla directory dei documenti. Può elencare, creare file e rinominare, eliminare qualsiasi file nei documenti, indipendentemente dalle autorizzazioni dei file. La sua capacità di accedere a un file dipende dal permesso del file.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie ha pieno accesso tranne che non può creare, rinominare, eliminare qualsiasi file., Può elencare i file e (se il permesso del file consente) può accedere a un file esistente nei documenti.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie non può fare ‘ls’ nei documenti, ma se conosce il nome di un file esistente, può elencarlo, rinominarlo, eliminarlo o (se il permesso del file lo autorizza) accedervi. Inoltre, è in grado di creare nuovi file.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie è solo in grado di (se il permesso del file lo autorizza) accedere a quei file in Documenti di cui è a conoscenza. Non può elencare file già esistenti o creare, rinominare, eliminare nessuno di essi.,
Dovresti tenere a mente che elaboriamo i permessi delle directory e non ha nulla a che fare con i permessi dei singoli file. Quando si crea un nuovo file è la directory che cambia. Questo è il motivo per cui è necessario il permesso di scrittura nella directory.
Diamo un’occhiata ad un altro esempio, questa volta di un file, non di una directory:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Qui possiamo vedere che la prima lettera non èd
ma-
. Quindi sappiamo che è un file, non una directory., Successivamente le autorizzazioni del proprietario sono rw-
quindi il proprietario ha la capacità di leggere e scrivere ma non eseguire. Questo può sembrare strano che il proprietario non abbia tutte e tre le autorizzazioni, ma l’autorizzazione x
non è necessaria in quanto è un file di testo/dati, da leggere da un editor di testo come Gedit, EMACS o software come R, e non un eseguibile a sé stante (se conteneva qualcosa come il codice di programmazione python allora potrebbe essere molto bene)., Le autorizzazioni del gruppo sono impostate su r--
, quindi il gruppo ha la capacità di leggere il file ma non di scriverlo/modificarlo in alcun modo — è essenzialmente come impostare qualcosa in sola lettura. Possiamo vedere che le stesse autorizzazioni si applicano anche a tutti gli altri.
Modifica delle autorizzazioni
chmod è un comando in Linux e altri sistemi operativi Unix-like che permette di modificare le autorizzazioni (o modalità di accesso) di un file o directory.
Metodo di testo
Per modificare le autorizzazioni — o la modalità di accesso — di un file, utilizzare il comando chmod in un terminale., Di seguito è riportata la struttura generale del comando:
chmod who=permissions filename
Dove who
è qualsiasi da un intervallo di lettere, ciascuna che indica a chi viene dato il permesso. Sono i seguenti:
-
u
: l’utente che possiede il file. -
g
: il gruppo di utenti a cui appartiene il file. -
o
: gli altri utenti, cioè tutti gli altri. -
a
: tutto quanto sopra; usa questo invece di digitareugo
.,
Le autorizzazioni sono le stesse descritte in #Viewing permissions (r
, w
e x
).
Ora dai un’occhiata ad alcuni esempi usando questo comando., Si supponga che è diventato molto protettivo della directory Documenti e voluto negare a tutti, ma te stesso, le autorizzazioni di lettura, scrittura ed esecuzione (o in questo caso la ricerca e guarda) che:
Prima: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
Dopo: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
Qui perché si vuole negare autorizzazioni, non mettere tutte le lettere dopo il =
dove autorizzazioni vorresti essere inserito. Ora puoi vedere che solo le autorizzazioni del proprietario sono rwx
e tutte le altre autorizzazioni sono-
.,
Questo può essere ripristinato con:
Prima: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Dopo: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
Nel prossimo esempio, si desidera concedere autorizzazioni di lettura ed esecuzione per il gruppo e gli altri utenti, così si mettono le lettere per le autorizzazioni (r
e x
), dopo il =
, senza spazi.
Puoi semplificare questo per mettere più di una lettera who
nello stesso comando, e.,g:
$ chmod go=rx Documents
who
o le lettere di autorizzazione in un chmod
comando: si potrebbe avere chmod go=rx file
oppure chmod og=xr file
. È tutto lo stesso.,ider un secondo esempio, si supponga di voler modificare un foobar
file in modo che si dispone di autorizzazioni di lettura e scrittura, e di altri utenti nel gruppo users
che può essere colleghi di lavoro su foobar
, anche la lettura e la scrittura, ma gli altri utenti possono solo leggere:
Prima: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
Dopo: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Questo è esattamente come il primo esempio, ma con un file, non è una directory, e si concede il permesso di scrittura (solo per dare un esempio di concessione di ogni tipo di autorizzazione).,
Scorciatoie del metodo di testo
Il comando chmod consente di aggiungere e sottrarre autorizzazioni da un set esistente utilizzando+
o-
invece di=
. Questo è diverso da i comandi di cui sopra, che essenzialmente ri-scrivere le autorizzazioni (ad esempio per modificare un permesso r--
rw-
, hai ancora bisogno di includere r
nonché w
dopo il =
il comando chmod invocazione., Se hai persor
, toglierebbe l’autorizzazioner
mentre vengono riscritti con=
. Usare+
e-
evita questo aggiungendo o togliendo dal set corrente di autorizzazioni).,>Prima: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
Dopo: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Un collegamento diverso è il X
mode: questa non è una vera modalità file, ma è spesso usato in combinazione con il -R
opzione per impostare il bit di esecuzione solo per le directory, e lasciate invariate per i file normali, per esempio:
$ chmod -R a+rX ./data/
Copia autorizzazioni
è possibile dire chmod a copiare le autorizzazioni da una classe, dice il proprietario, e dare quelle stesse autorizzazioni di gruppo o anche tutti., Per fare ciò, invece di mettere r
, w
, o x
dopo =
, metti un’altra lettera who. e.g:
Prima: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
Dopo: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Questo comando essenzialmente traduce “per modificare le autorizzazioni di gruppo (g=
), per essere lo stesso come utente proprietario (=u
). Si noti che non è possibile copiare un set di autorizzazioni e concederne di nuove, ad esempio,:
$ chmod g=wu foobar
In questo caso chmod genera un errore.
Metodo numerico
chmod può anche impostare le autorizzazioni utilizzando i numeri.
L’uso dei numeri è un altro metodo che consente di modificare le autorizzazioni per tutti e tre i proprietari, il gruppo e gli altri contemporaneamente, nonché setuid, setgid e sticky bit. Questa struttura di base del codice è questa:
$ chmod xxx filename
Dove xxx
è un numero di 3 cifre in cui ogni cifra può essere qualsiasi cosa da 0 a 7., La prima cifra si applica alle autorizzazioni per il proprietario, la seconda cifra si applica alle autorizzazioni per il gruppo e la terza cifra si applica alle autorizzazioni per tutti gli altri.
In questo numero la notazione, i valori r
w
e x
hanno il loro numero di valore:
r=4w=2x=1
A venire con un numero di 3 cifre è necessario considerare quali autorizzazioni che si desidera che il proprietario, il gruppo, e tutti gli altri, e poi il totale dei loro valori., volete gruppo e tutti gli altri sono solo permessi di lettura ed esecuzione, si dovrebbe venire con i valori numerici in questo modo:
- Proprietario:
rwx
=4+2+1=7 - Gruppo:
r-x
=4+0+1=5 - Altri:
r-x
=4+0+1=5
$ chmod 755 filename
Questo è l’equivalente di utilizzando il seguente:
$ chmod u=rwx filename$ chmod go=rx filename
Per visualizzare le autorizzazioni esistenti di un file o di una directory in forma numerica, utilizzare le stat(1) comando:
$ stat -c %a filename
Dove l’ %opzione di una specifica uscita in forma numerica.,
la Maggior parte delle cartelle e directory sono impostato su 755
per consentire la lettura, la scrittura ed esecuzione per il proprietario, ma negare la scrittura per tutti gli altri, e i file sono normalmente 644
per consentire la lettura e scrittura per il proprietario, ma solo la lettura per tutti gli altri; fare riferimento all’ultima nota sulla mancanza di x
autorizzazioni non i file eseguibili: è la stessa cosa qui.,
Per vedere in azione con esempi considerare l’esempio precedente, che è stato utilizzato, ma con questo metodo numerico applicato invece:
Prima: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
Dopo: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
e Se fosse un eseguibile il numero sarebbe 774
se si voleva concedere l’autorizzazione eseguibile per il proprietario e il gruppo. In alternativa, se si desidera che tutti abbiano solo il permesso di lettura, il numero sarebbe 444
., Trattamento r
4, w
2 e x
come 1 è probabilmente il modo più semplice per lavorare fuori i valori numerici per l’utilizzo di chmod xxx filename
, ma c’è anche un metodo binario, dove ogni autorizzazione di un numero binario, e quindi che è a sua volta convertita in un numero. È un po ‘ più contorto, ma qui incluso per completezza.,
Considerare questo set di autorizzazioni:
-rwxr-xr--
Se si mette un 1 sotto ogni autorizzazione concessa, e 0 per ogni uno non concesso, il risultato dovrebbe essere qualcosa di simile a questo:
-rwxrwxr-x 111111101
È possibile convertire questi numeri binari:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
Il valore di cui sopra sarebbe quindi 775.
Considera che volevamo rimuovere l’autorizzazione scrivibile dal gruppo:
-rwxr-xr-x 111101101
Il valore sarebbe quindi 755 e userestichmod 755 filename
per rimuovere l’autorizzazione scrivibile., Si noterà che si ottiene lo stesso numero di tre cifre, non importa quale metodo si utilizza. Se si utilizza il testo o numeri dipenderà preferenze personali e velocità di digitazione. Quando si desidera ripristinare una directory o un file alle autorizzazioni predefinite, ad esempio leggere e scrivere (ed eseguire) il permesso al proprietario ma negare il permesso di scrittura a tutti gli altri, potrebbe essere più veloce usare chmod 755/644 filename
. Tuttavia, se si modificano le autorizzazioni in qualcosa di fuori dalla norma, potrebbe essere più semplice e veloce utilizzare il metodo text anziché provare a convertirlo in numeri, il che potrebbe portare a un errore., Si potrebbe sostenere che non vi è alcuna differenza significativa nella velocità di entrambi i metodi per un utente che ha solo bisogno di utilizzare chmod occasionalmente.
È anche possibile utilizzare il metodo numerico per impostare i bit setuid
, setgid
e sticky
utilizzando quattro cifre.
setuid=4setgid=2sticky=1
Ad esempio,chmod 2777 filename
imposterà bit di lettura/scrittura/eseguibili per tutti e abiliterà anche il bitsetgid
.
Bulk chmod
Generalmente directory e file non dovrebbero avere le stesse autorizzazioni., Se è necessario modificare in blocco un albero di directory, utilizzare find per modificare selettivamente l’uno o l’altro.
chmod solo cartelle a 755:
$ find directory -type d -exec chmod 755 {} +
chmod solo i file a 644:
$ find directory -type f -exec chmod 644 {} +
Modifica proprietà
chown cambia il proprietario di un file o di una directory, che è più veloce e più facile che modificare le autorizzazioni in alcuni casi.
Considera il seguente esempio, creando una nuova partizione con GParted per i dati di backup. Gparted fa tutto questo come root, quindi tutto appartiene a root per impostazione predefinita., Questo è tutto bene e bene, ma quando si tratta di scrivere dati sulla partizione montata, il permesso è negato per gli utenti regolari.
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
Come puoi vedere il dispositivo in/dev
è di proprietà di root, così come la posizione di montaggio (/media/Backup
)., Per cambiare il proprietario della posizione di montaggio si possono fare le seguenti:
Prima: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
Dopo: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
Ora la partizione di dati scritti dal nuovo proprietario, archie, senza alterare le autorizzazioni (come il proprietario triade già avuto rwx
autorizzazioni).
-
chown
cancella sempre i bit setuid e setgid. - Gli utenti non root non possono usare
chown
per” regalare ” i file che possiedono a un altro utente.,
Access Control Lists
Access Control Lists fornisce un meccanismo di autorizzazione aggiuntivo e più flessibile per i file system consentendo di impostare le autorizzazioni per qualsiasi utente o gruppo su qualsiasi file.
Umask
L’utilità umask viene utilizzata per controllare la maschera modalità di creazione file, che determina il valore iniziale dei bit di autorizzazione file per i file appena creati.,
Attributi dei file
Oltre ai bit della modalità file che controllano le autorizzazioni di lettura, scrittura ed esecuzione di utenti e gruppi, diversi file system supportano gli attributi dei file che consentono un’ulteriore personalizzazione delle operazioni sui file consentite. Questa sezione descrive alcuni di questi attributi e come lavorare con loro.
chattr e lsattr
Per i file system ext2 e ext3, il pacchetto e2fsprogs contiene i programmi lsattr e chattr che elencano e modificano rispettivamente gli attributi di un file.,/li>
u
: incancellabileA
: no atime aggiornamentiC
: no copy-on-writeD
: sincrono directory aggiornamentiS
: aggiornamenti sincroniT
: parte superiore della gerarchia di directoryPer esempio, se si desidera impostare il bit immutabile su alcuni file, utilizzare il seguente comando:
# chattr +i /path/to/file
Per rimuovere un attributo di un file basta cambiare +
-
.,
Attributi estesi
Da xattr(7): “Gli attributi estesi sono coppie nome:valore associate in modo permanente a file e directory”. Esistono quattro classi di attributi estese: sicurezza, sistema, attendibile e utente.
Gli attributi estesi vengono utilizzati anche per impostare le Funzionalità.
Attributi estesi utente
Gli attributi estesi utente possono essere utilizzati per memorizzare informazioni arbitrarie su un file., To create one:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
Use getfattr to display extended attributes:
$ getfattr -d foo.txt
# file: foo.txtuser.,3de557528">
--preserve=mode,ownership,timestamps,xattr
mv
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- mv silently discards extended attributes when the target file system does not support them.,
Per preservare gli attributi estesi con gli editor di testo è necessario configurarli per troncare i file al momento del salvataggio invece di utilizzare rename(2).
Suggerimenti e trucchi
Mantieni root
Usa il flag--preserve-root
per impedire achmod
di agire ricorsivamente su/
. Questo può, ad esempio, impedire di rimuovere il bit eseguibile a livello di sistema e quindi rompere il sistema. Per utilizzare questo flag ogni volta, impostarlo all’interno di un alias. Vedi anche .,
Vedi anche
- wikipedia:Chattr
- Linux File Permission Confusion
- Linux File Permission Confusion part 2
- wikipedia:Extended file attributes#Linux
- Extended attributes: the good, the not so good, the bad.
- Backup e ripristino delle autorizzazioni dei file in Linux
- Perché” chmod-R 777 / ” è distruttivo?