I file system utilizzano autorizzazioni e attributi per regolare il livello di interazione che i processi di sistema possono avere con file e directory.

Avviso: quando vengono utilizzati per scopi di sicurezza, le autorizzazioni e gli attributi difendono solo dagli attacchi lanciati dal sistema avviato. Per proteggere i dati memorizzati dagli aggressori con accesso fisico alla macchina, è necessario implementare anche la crittografia data-at-rest.,

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.,

Suggerimento: È possibile visualizzare le autorizzazioni lungo un percorso con 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 digitare ugo.,

Le autorizzazioni sono le stesse descritte in #Viewing permissions (r, we 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 rwxe 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
Nota: non importa in quale ordine si inseriscono le lettere 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 filenameimposterà 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).

Nota:

  • 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.

Attenzione: Per impostazione predefinita, gli attributi dei file non vengono preservati da cp, rsync e altri programmi simili.,

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: incancellabile
  • A: no atime aggiornamenti
  • C: no copy-on-write
  • D: sincrono directory aggiornamenti
  • S: aggiornamenti sincroni
  • T: parte superiore della gerarchia di directory
  • Per 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.

    Attenzione: Per impostazione predefinita, gli attributi estesi non vengono preservati da cp, rsync e altri programmi simili, vedere #Preserving extended attributes.

    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 preserves by default1 tar --xattrs for creation and extraction bsdtar -p for extraction rsync --xattrs
    1. 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?

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *