linux / setfacl - Imposta tutti i file / directory correnti / futuri nella directory padre su 775 con il proprietario / gruppo specificato


42

Ho una directory chiamata "membri" e sotto di essa ci sono cartelle / file. Come posso impostare in modo ricorsivo tutte le cartelle / i file correnti e quelli futuri creati lì per impostazione predefinita hanno 775 autorizzazioni e appartengono rispettivamente al proprietario / gruppo nessuno / amministratore? Ho abilitato ACL, montato, ma non riesco a ottenere il comando setfacl per farlo correttamente. Qualche idea su come realizzare questo?

Risposte:


62

In realtà ho trovato qualcosa che finora fa quello che ho chiesto, condividendo qui in modo che chiunque incontri questo problema possa provare questa soluzione:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R è ricorsivo, il che significa che tutto ciò che si trova in quella directory verrà applicato alla regola.
d è predefinito, il che significa che per tutti gli elementi futuri creati in quella directory, queste regole si applicano per impostazione predefinita. m è necessario per aggiungere / modificare le regole.

Il primo comando, è per i nuovi elementi (quindi la d), il secondo comando, è per gli elementi vecchi / esistenti nella cartella. Spero che questo aiuti qualcuno in quanto questa roba è un po 'complicata e non molto intuitiva.


2
Questo è esattamente ciò di cui avevo bisogno per convincere il proprietario di una directory dei nonni a poter modificare correttamente il contenuto delle nuove directory dei nipoti.
Joost,

Se sei l'unico utente del tuo Rpi, puoi sostituire g: groupname con pi: pi o just pi
SDsolar

È possibile specificare per utente, gruppi e altro in una riga, ad es -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
user2340939

18

Per andare con la risposta accettata ...

È possibile combinare questi comandi insieme come:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/

Questo è figo. Come mai hai impostato d:il primo oggetto anziché -Rmd? Posso dire che il secondo parametro non dovrebbe avere default- è strano il modo in cui Linux lo accetta.
JREAM,

1
@JREAM: Linux (in realtà getopt_long) invia l'intero argomento di opzione-m che viene analizzato a mano da setfacl, separando da virgole argomenti passati. Vengono aggiunti a un elenco collegato che viene ripetuto alla fine quando si cambia effettivamente l'ACL.
Benoit Duffez,

2

setfacl su linux ha le opzioni -de -kper manipolare i permessi di default che sono probabilmente quello che stai cercando (vedi man per maggiori informazioni).


1

È facile impostare in modo ricorsivo semplici autorizzazioni UNIX su richiesta di un utente debitamente autorizzato, le autorizzazioni di directory e file. Non è possibile imporlo automaticamente.

Si potrebbe dire agli utenti di usare il set umask di 0002, e questo aiuta a creare nuovi file a 0775 (a seconda dell'applicazione). Ma non è esecutivo.

La mia comprensione è che gli ACL non sono ereditati su sistemi UNIX / Linux. Sono impostati su richiesta.

Per quanto riguarda la proprietà di file / directory, sei praticamente sfortunato qui.

Per quanto riguarda la proprietà del gruppo di file / directory, impostando la directory set-gid bit (cioè g + s su DIRECTORIES), questo fa sì che la proprietà del gruppo venga ereditata.

Quello che ho fatto in tali situazioni è di eseguire uno script cron periodico di root che reimposta autorizzazioni / proprietà non conformi allo standard in tali directory.

Un altro processo (NON CONSIGLIATO) è di utilizzare lo stesso ID utente quando si lavora su questi file. Ciò potrebbe essere realizzato dall'utente che accede al sistema con il proprio UID e quindi utilizza sudo o su per eseguire come id. Questo non è ancora al 100% soprattutto per quanto riguarda ACL e bit di autorizzazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.