Como forçar grupos e permissões para arquivos criados dentro de um diretório específico?

Como forçar grupos e permissões para arquivos criados dentro de um diretório específico?

Para arquivos criados a partir dousuário de testeconta no diretório /var/www, preciso que eles tenhamg+rwxcomo permissões ewww-dadoscomo grupo.

Como posso conseguir isso?

Estou criando os arquivos via SSH.

Responder1

Para definir o grupo, dê /var/wwwosetgidpedaço:

chgrp www-data /var/www
chmod g+s /var/www

Para ajustar também os subdiretórios:find /var/www -type d -exec chmod g+s {} +

Isso fará com que todos os arquivos recém-criados herdem o grupo do diretório pai, em vez do grupo do usuário.


Para definir as permissões de grupo padrão, você terá que usarACLs. Defina uma ACL "padrão":

setfacl -m "default:group::rwx" /var/www

Para ajustar também os subdiretórios:find /var/www -type d -exec setfacl -m d:g::rwx {} +

Nota: O sistema de arquivos deve ter suporte ACL ativado. Às vezes está ativado por padrão; sobreext3ouext4você pode obter "Operação não suportada"; nesse caso, ela deve ser habilitada manualmente:

  • Para um sistema de arquivos atualmente montado:mount -o remount,acl /

  • Permanentemente -umdos métodos abaixo:

    • no nível fstab: edite /etc/fstabpara ter aclno campo de opções

    • no nível do sistema de arquivos:tune2fs -o acl /dev/diskname

Responder2

Isso pode ter deixado algumas pessoas presas na resposta 'grawity' no setgid. Se o grupo da pasta for diferente do seu, pode ser necessário executar chmod como root, mas você não receberá nenhum erro indicando que precisa fazer isso.

$ 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

Responder3

O grupo de arquivos que está sendo criado por um usuário é o grupo desse usuário (em /etc/group). As permissões são controladas pelo parâmetro UMASK Veja isso

informação relacionada