Come impostare le autorizzazioni di file predefinite per tutte le cartelle / file in una directory?


254

Voglio impostare una cartella in modo tale che qualsiasi cosa creata al suo interno (directory, file) erediti le autorizzazioni e il gruppo predefiniti.

Consente di chiamare il gruppo "media". Inoltre, le cartelle / i file creati all'interno della directory dovrebbero avere g + rw automaticamente.


1
Non è controllato dall'utente che crea il nuovo file / cartella e la sua umask?
— Wadih M.

umask si riferisce alle autorizzazioni ma non credo che faccia nulla con l'impostazione di un gruppo predefinito che non è l'utente stesso.
— Chris,

1
Quale sistema operativo? Tag necessari. setfacle gli ACL predefiniti non esistono su AIX.
— Amit Naidu,

Risposte:


269

L'ho trovato: Applicazione delle autorizzazioni predefinite

Dall'articolo:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

Successivamente possiamo verificare:

getfacl /<directory>

Produzione:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

5
Yay per la parte appiccicosa!
— gabe.

22
Consente di non confondere gid con bit appiccicoso.
— Amit Naidu,

10
g + s assicurerà che il nuovo contenuto nella directory erediti la proprietà del gruppo. setfacl cambia solo chmod, nel tuo caso imposta l'autorizzazione a o = rx
— Steen Schütt

10
Notare che ACL deve essere abilitato (incluso come una delle opzioni di mount per il file system montato) affinché le autorizzazioni dei file vengano ereditate.
— sg23,

11
Potresti prendere in considerazione l'uso di "X" invece in modo da impostare l'autorizzazione di esecuzione solo per le directory e non per i filesetfacl -d -m g::rwX /<directory>
— Adrian Gunawan

27

Questa è un'aggiunta alla risposta di Chris, basata sulla mia esperienza sul mio rig Arch Linux.

L'utilizzo dell'interruttore predefinito (-d) e dell'interruttore di modifica (-m) modificherà solo le autorizzazioni predefinite ma lascerà intatte quelle esistenti:

setfacl -d -m g::rwx /<directory>

Se si desidera modificare l'intera struttura delle autorizzazioni della cartella, comprese quelle esistenti (è necessario fare una riga aggiuntiva e renderla ricorsiva -R:

setfacl -R -m g::rwx /<directory>

per esempio.

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

( CREDITO per markdwite nei commenti per la sintassi della riga revoca tutti i privilegi)


2
Per revocare i privilegi di gruppo (come esempio): sudo setfacl -d -mg :: --- / path
— markdwhite

1
è solo un refuso che specifica setfacl -R -m g::rwx /<directory>due volte nella tua risposta?
— Shane Rowatt,

0

Aggiungi te stesso / utente registrato al gruppo www-data, in modo che possiamo lavorare con i file creati dal server www-data

sudo usermod -a -G www-data $USER

È necessario riavviare / accedere nuovamente per rendere effettivo il gruppo appena aggiunto

cd /var/www

Aggiungi i dati www come membro del gruppo della cartella html e il tuo utente come proprietario, quindi ne siamo proprietari così come membri del gruppo

sudo chown -R $USER:www-data html

Inserisci il tuo nome utente al posto di USER

Impostare leggi, scrivi, esegui l'autorizzazione come richiesto, (ugo) u = utente, g = gruppo, o = altri

sudo chmod 750 html

Impostare il GID di HTML, ora, i file appena creati in HTML erediteranno le autorizzazioni di proprietà:

sudo chmod g+s html

Questo crea le regole predefinite per i file / dir appena creati all'interno della directory html e delle sottodirectory.

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

Crea SELinux se installato, ignora i requisiti del contesto www-data in modo da consentire le autorizzazioni di scrittura

sudo setsebool -P httpd_unified 1

directory list per vedere le nuove autorizzazioni applicate

ls -ld html

Restituisce questo

drwxrwsr-x+   3 html www-data

Il segno finale + indica che ACL, Elenco controllo accessi, è impostato sulla directory.

Riferimento : collegamento al forum


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.