Comment définir les autorisations de fichier par défaut pour tous les dossiers / fichiers d'un répertoire?

254

Je souhaite définir un dossier tel que tout ce qui y est créé (répertoires, fichiers) hérite des autorisations et du groupe par défaut.

Permet d'appeler le groupe "média". Et aussi, les dossiers / fichiers créés dans le répertoire devraient avoir g + rw automatiquement.

Chris
la source
1
N'est-ce pas contrôlé par l'utilisateur qui crée le nouveau fichier / dossier et son umask?
Wadih M.
umask est lié à des autorisations, mais je ne pense pas qu’il permette de définir un groupe par défaut qui ne soit pas l’utilisateur lui-même.
Chris
1
Quel OS? Tags nécessaires. setfaclet les listes de contrôle d'accès par défaut n'existent pas sous AIX.
Amit Naidu

Réponses:

269

Je l'ai trouvé: appliquer des autorisations par défaut

De l'article:

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

Ensuite, nous pouvons vérifier:

getfacl /<directory>

Sortie:

# 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
Chris
la source
5
Yay pour le peu collant!
Gabe.
22
Ne confondons pas gid avec sticky bit.
Amit Naidu
10
g + s veillera à ce que le nouveau contenu du répertoire hérite de la propriété du groupe. setfacl ne change que le chmod, dans votre cas, donne l'autorisation à o = rx
Steen Schütt
10
Notez que la liste de contrôle d'accès doit être activée (incluse dans les options de montage du système de fichiers monté) pour que les autorisations de fichiers soient héritées.
sg23
11
Vous voudrez peut-être envisager d'utiliser 'X' à la place afin de ne définir que l'autorisation d'exécution sur les répertoires et non sur les fichierssetfacl -d -m g::rwX /<directory>
Adrian Gunawan
27

Ceci est un ajout à la réponse de Chris, basé sur mon expérience sur ma plate-forme Arch Linux.

L'utilisation du commutateur par défaut (-d) et du commutateur de modification (-m) ne modifiera que les autorisations par défaut, mais laissera les autorisations existantes intactes:

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

Si vous souhaitez modifier toute la structure des autorisations du dossier, y compris celles existantes (vous devrez créer une ligne supplémentaire et la rendre récursive -R:

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

par exemple.

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. 

( CREDIT pour markdwite dans les commentaires de la synthax de la ligne de révocation de tous les privilèges)

thebunnyrules
la source
2
Pour révoquer les privilèges de groupe (à titre d'exemple): sudo setfacl -d -mg :: --- / path
markdwhite le
1
Est-ce juste une faute de frappe en précisant setfacl -R -m g::rwx /<directory>deux fois dans votre réponse?
Shane Rowatt
0

Ajoutez vous-même / un utilisateur connecté au groupe www-data afin de pouvoir utiliser les fichiers créés par le serveur www-data

sudo usermod -a -G www-data $USER

Doit redémarrer / reconnecter pour que le groupe nouvellement ajouté prenne effet

cd /var/www

Ajoutez www-data en tant que membre du groupe du dossier html et votre utilisateur en tant que propriétaire. Nous en sommes donc propriétaires, ainsi qu'un membre du groupe.

sudo chown -R $USER:www-data html

Mettez votre nom d'utilisateur à la place de USER

Définissez les autorisations de lecture, d'écriture et d'exécution nécessaires, (ugo) u = utilisateur, g = groupe, o = autres

sudo chmod 750 html

Définissez le GID de HTML. Désormais, les fichiers nouvellement créés en HTML hériteront des autorisations de propriété:

sudo chmod g+s html

Cela crée les règles par défaut pour les fichiers / répertoires nouvellement créés dans le répertoire html et les sous-répertoires.

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

Assurez-vous que SELinux est installé, ignorez l'exigence de contexte www-data afin de permettre les autorisations d'écriture.

sudo setsebool -P httpd_unified 1

répertoire de liste pour voir les nouvelles autorisations appliquées

ls -ld html

Renvoie cette

drwxrwsr-x+   3 html www-data

Le signe de fin + signifie que ACL, Access Control List, est défini sur le répertoire.

Référence : Lien vers le forum

Bsienn
la source
-2

A l'aide de la commande suivante, vous pouvez définir l'autorisation par défaut pour un fichier:

chacl -R filename
utilisateur240513
la source
3
Comment cela diffère des autres réponses? Et donner des exemples
Romeo Ninov
3
Êtes-vous sûr que c'est ce que ça fait? linux.die.net/man/1/chacl indique qu'il supprimera une liste de contrôle d'accès.
Jeff Schaller