Pour les fichiers créés à partir du compte testuser situé dans le répertoire/var/www, j’ai besoin d’avoir g + rwx en tant qu'autorisations et www-data en tant que groupe.
Comment puis-je atteindre cet objectif?
Je crée les fichiers via SSH.
Pour définir le groupe, donnez à /var/www
le bit setgid :
chgrp www-data /var/www
chmod g+s /var/www
Pour ajuster également les sous-répertoires: find /var/www -type d -exec chmod g+s {} +
Cela fera en sorte que tous les fichiers nouvellement créés héritent du groupe du répertoire parent, au lieu de celui de l'utilisateur.
Pour définir les autorisations de groupe par défaut, vous devez utiliser ACL . Définissez une ACL "par défaut":
setfacl -m "default:group::rwx" /var/www
Pour ajuster également les sous-répertoires: find /var/www -type d -exec setfacl -m d:g::rwx {} +
Remarque: La prise en charge d'ACL doit être activée sur le système de fichiers. Parfois, il est activé par défaut. sur ext3 ou ext4 , vous pourriez obtenir "Opération non prise en charge", auquel cas elle doit être activée manuellement:
Pour un système de fichiers actuellement monté: mount -o remount,acl /
En permanence - une des méthodes ci-dessous:
au niveau fstab: éditez /etc/fstab
pour avoir acl
dans le champ des options
au niveau du système de fichiers: tune2fs -o acl /dev/diskname
Cela a peut-être bloqué quelques personnes avec la réponse 'grawity' sur setgid. Si le groupe du dossier est différent du vôtre, vous devrez peut-être exécuter chmod en tant que root, mais vous ne recevrez pas d'erreur indiquant que vous devez le faire.
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir
$ chmod g+s dir #no errors
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir #but nothing changed
$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo #and the group is still wrong
$ Sudo chmod g+s dir
$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar 9 10:44 dir #the setgid bit is now on
$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar 9 10:51 withsudo #and group is set
Le groupe de fichiers créé par un utilisateur est le groupe de cet utilisateur (dans/etc/group). Les permissions sont contrôlées par le paramètre UMASK , voir ceci