Impara il comando Linux 'setfacl'
L'utility Setfacl imposta gli elenchi di controllo di accesso (ACL) dei file e directory. Sul riga di comando, una sequenza di comandi è seguita da una sequenza di file (che a sua volta può essere seguita da un'altra sequenza di comandi, ecc.).
- Le opzioni -m, e -X aspettarsi un ACL sulla riga di comando. Più voci ACL sono separate da caratteri virgola (`,'). Le opzioni -M, e -X leggere un ACL da un file o da standard input. Il formato della voce ACL è descritto nella sezione VOCI ACL.
- Il --set e --set-file opzioni impostano l'ACL di un file o di una directory. L'ACL precedente viene sostituito. Le voci ACL per questa operazione devono includere le autorizzazioni.
- Il -m (--modifica) e -M (--modifica-file) le opzioni modificano l'ACL di a file o rubrica. Le voci ACL per questa operazione devono includere le autorizzazioni.
- Il -x (--rimuovi) e -X (--rimuovi-file) le opzioni rimuovono le voci ACL. Solo voci ACL senza il permanenti sono accettati come parametri a meno che non sia definito POSIXLY_CORRECT.
Quando si leggono da file utilizzando il -M, e -X opzioni, setfacl accetta l'output getfacl produce. È presente al massimo una voce ACL per riga. Dopo un cancelletto (`#'), tutto ciò che si trova alla fine della riga viene trattato come un commento.
Se setfacl viene utilizzato su un file system che non supporta gli ACL, setfacl opera sui bit di autorizzazione della modalità file. Se l'ACL non si adatta completamente ai bit di autorizzazione, setfacl modifica i bit di autorizzazione della modalità file per riflettere l'ACL il più vicino possibile, scrive un messaggio di errore nell'errore standard e ritorna con uno stato di uscita maggiore di 0.
Utilizzo di Setfacl
Per prima cosa, prova a impostare un elenco di base per una cartella nel tuo directory principale. Dato che lo stai provando per la prima volta, creane uno nuovo con cui giocare. In questo modo, non rischierai di chiuderti fuori da documenti importanti.
mkdir ~/acl-test.
Quindi, usa setfacl per concedere a un altro utente sul tuo sistema l'accesso alla cartella. Setfacl utilizza il -m flag per modificare gli elenchi di controllo di accesso per un file. Questo di solito significa aggiungere un utente o un gruppo.
setfacl -m u: nome utente: rwx ~/acl-test/
Il tu prima dei primi due punti dice al comando che stai parlando di un nome utente. Il rwx a seguito della seconda sovvenzione Rleggi, writo, ed eXecute permessi.
Lo stesso funziona per i gruppi specificando G invece di tu prima del primo colon.
setfacl -m g: nomegruppo: rwx ~/acl-test/
Funziona come l'esempio precedente, tranne per il fatto che concede le autorizzazioni all'intero gruppo.
Il -X la bandiera funziona al contrario di -m. Revocherà l'accesso all'utente o al gruppo specificato.
setfacl -x u: nome utente: w ~/acl-test/
Il comando revoca all'utente l'accesso in scrittura alla directory.
Puoi anche modificare direttamente i permessi per tutti gli utenti attuali. Ciò include il proprietario del file e tutti gli utenti aggiuntivi a cui sono state concesse le autorizzazioni. Questa è una sorta di scorciatoia, usando il comando esistente ma omettendo il nome utente.
setfacl -m u:: rx ~/acl-test/
Ciò garantisce a tutti gli utenti esistenti le autorizzazioni di lettura ed esecuzione ma rimuove l'accesso in scrittura.
Lo stesso funziona con il -X flag e rimozione dei permessi.
setfacl -x u:: w ~/acl-test/
Questo è essenzialmente lo stesso dell'esempio precedente, invertito.
setfacl ti consente anche di copiare gli elenchi di controllo degli accessi da un file all'altro. Assicurati che il tuo utente abbia pieno accesso alla cartella di test e crea due nuovi file con cui lavorare.
tocca ~/acl-test/file{1,2}.txt.
Ora, modifica i permessi del primo file.
setfacl -m u: nome utente: rx ~/acl-text/file1.txt.
Ora puoi reindirizzare i risultati di getfacl, il comando per recuperare le informazioni ACL correnti, in setfacl.
getfacl ~/acl-test/file1.txt | setfacl --set-file=- ~/acl-text/file2.txt.
Il secondo riempimento avrà le stesse autorizzazioni del primo.
Infine, puoi rimuovere tutte le voci ACL estese create dal comando. Questo lascerà il file con le autorizzazioni utente e di gruppo che aveva originariamente. Per fare ciò, usa il flag -b.
setfacl -b ~/acl-test/
Questi sono gli usi più comuni di setfacl. Se vuoi approfondire, la parte successiva di questa guida è un'analisi tecnica completa del comando.
Ripartizione tecnica di Setfacl
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file...
setfacl --restore=file.
permessi
Al proprietario del file e ai processi in grado di CAP_FOWNER viene concesso il diritto di modificare gli ACL di un file. Questo è analogo ai permessi richiesti per accedere alla modalità file. (Sugli attuali sistemi Linux, root è l'unico utente con la capacità CAP_FOWNER.)
Opzioni
-b, --rimuovi-tutto
- Rimuovere tutte le voci ACL estese. Le voci ACL di base del proprietario, del gruppo e di altri vengono conservate.
-k, --remove-default
- Rimuovere l'ACL predefinito. Se non esiste alcun ACL predefinito, non vengono emessi avvisi.
-n, --no-maschera
- Non ricalcolare la maschera dei diritti effettivi. Il comportamento predefinito di setfacl è di ricalcolare la voce della maschera ACL a meno che non sia stata fornita esplicitamente una voce della maschera. La voce della maschera è impostata sull'unione di tutte le autorizzazioni del gruppo proprietario e di tutte le voci di utenti e gruppi denominati. (Queste sono esattamente le voci interessate dalla voce della maschera).
--maschera
- Ricalcolare la maschera dei diritti effettivi, anche se è stata fornita esplicitamente una voce della maschera ACL. (Vedi il -n opzione.)
-d, --default
- Tutte le operazioni si applicano al Predefinito LCA. Le voci ACL regolari nel set di input vengono promosse a voci ACL predefinite. Le voci ACL predefinite nel set di input vengono scartate. (Se ciò accade, viene emesso un avviso).
--restore=file
- Ripristina un backup dei permessi creato da `getfacl -R' o simile. Tutti i permessi di una sottostruttura di directory completa vengono ripristinati utilizzando questo meccanismo. Se l'input contiene commenti del proprietario o commenti di gruppo e setfacl viene eseguito da root, vengono ripristinati anche il proprietario e il gruppo proprietario di tutti i file. Questa opzione non può essere mischiata con altre opzioni eccetto `--test'.
--test
- Modalità di prova. Invece di modificare gli ACL di qualsiasi file, vengono elencati gli ACL risultanti.
-R, --recursive
- Applicare le operazioni a tutti i file e le directory in modo ricorsivo. Questa opzione non può essere mischiata con `--restore'.
-L, --logical
- Passeggiata logica, segui i collegamenti simbolici. Il comportamento predefinito è seguire gli argomenti dei collegamenti simbolici e saltare i collegamenti simbolici incontrati nelle sottodirectory. Questa opzione non può essere mischiata con `--restore'.
-P, --fisico
- Camminata fisica, salta tutto collegamenti simbolici. Questo salta anche gli argomenti del collegamento simbolico. Questa opzione non può essere mischiata con `--restore'.
--versione
- Stampa la versione di setfacl ed esci.
--aiuto
- Stampa la guida che spiega le opzioni della riga di comando.
Fine delle opzioni della riga di comando. Tutti i parametri rimanenti vengono interpretati come nomi di file, anche se iniziano con un trattino.
Se il parametro del nome del file è un singolo trattino, setfacl legge un elenco di file dallo standard input.
Voci ACL
L'utility setfacl riconosce i seguenti formati di immissione ACL:
[utente predefinito]:]uid [:permanenti]
- Permessi di un utente designato. Permessi del proprietario del file se uid è vuoto.
[d[efault]:] g[roup]:gid [:permanenti]
- Autorizzazioni di un gruppo denominato. Autorizzazioni del gruppo proprietario se gid è vuoto.
[d[errore]:] m[chiedi][:] [:permanenti]
- Maschera diritti effettivi
[d[efault]:] o[ther][:] [:permanenti]
- Permessi di altri
Gli spazi tra i caratteri delimitatori e i caratteri non delimitatori vengono ignorati.
Le voci ACL corrette, incluse le autorizzazioni, vengono utilizzate nelle operazioni di modifica e impostazione. (opzioni -m, -M, --set e --set-file). Voci senza permanenti campo sono utilizzati per cancellazione di voci (opzioni -X e -X).
Per uid e gid è possibile specificare un nome o un numero.
Il permanenti campo è una combinazione di caratteri che indicano i permessi: leggi (R), Scrivi (w), eseguire (X), esegui solo se il file è una directory o ha già il permesso di esecuzione per qualche utente(X). In alternativa, il permanenti il campo può essere una cifra ottale (0-7).
Voci create automaticamente
Inizialmente, file e directory contengono solo le tre voci ACL di base per il proprietario, il gruppo e altri. Ci sono alcune regole che devono essere soddisfatte affinché un ACL sia valido:
- Le tre voci di base non possono essere rimosse. Ci deve essere esattamente una voce di ciascuno di questi tipi di voci di base.
- Ogni volta che un ACL contiene voci utente denominate o oggetti gruppo denominati, deve contenere anche una maschera di diritti effettiva.
- Ogni volta che un ACL contiene voci ACL predefinite, devono esistere anche le tre voci di base ACL predefinite (proprietario predefinito, gruppo predefinito e altri predefiniti).
- Ogni volta che un ACL predefinito contiene voci utente denominate o oggetti gruppo denominati, deve contenere anche una maschera dei diritti effettivi predefinita.
Per aiutare l'utente a garantire queste regole, setfacl crea voci da voci esistenti alle seguenti condizioni:
- Se un ACL contiene voci di utenti o gruppi denominati e non esiste alcuna voce di maschera, viene creata una voce di maschera contenente le stesse autorizzazioni della voce di gruppo. A meno che non -n viene data l'opzione, i permessi della voce della maschera vengono ulteriormente regolati per includere l'unione di tutti i permessi interessati dalla voce della maschera. (Vedi il -n descrizione dell'opzione).
- Se viene creata una voce ACL predefinita e l'ACL predefinito non contiene alcuna voce proprietario, gruppo proprietario o altri, all'ACL predefinito viene aggiunta una copia della voce proprietario, gruppo proprietario o altri ACL.
- Se un ACL predefinito contiene voci utente o gruppi denominati e non esiste alcuna voce mask, viene aggiunta una voce mask contenente le stesse autorizzazioni della voce gruppo dell'ACL predefinito. A meno che non -n viene data l'opzione, i permessi della voce della maschera vengono ulteriormente regolati per includere l'unione di tutti i permessi interessati dalla voce della maschera. (Vedi il -ndescrizione dell'opzione).
Esempi
- Concessione dell'accesso in lettura a un utente aggiuntivo
- setfacl -m u: lisa: r file
- Revocare l'accesso in scrittura da tutti i gruppi e tutti gli utenti nominati (usando la maschera dei diritti effettivi)
- setfacl -m m:: file rx
- Rimozione di una voce di gruppo denominata dall'ACL di un file
- setfacl -x g: file personale
- Copiare l'ACL di un file in un altro
- getfacl file1 | setfacl --set-file=- file2
- Copiare l'ACL di accesso nell'ACL predefinito
- getfacl -a dir | setfacl -d -M- dir
Conformità a Posix 1003.1e Draft Standard 17
Se la variabile d'ambiente POSIXLY_CORRECT è definita, il comportamento predefinito di setfacl cambia come segue: Tutte le opzioni non standard sono disabilitate. Il prefisso ``default:'' è disabilitato. Il -X e -X le opzioni accettano anche i campi di autorizzazione (e li ignorano).