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

23

Para arquivos criados a partir da conta testuser no diretório / var / www, eu preciso que eles tenham g + rwx como permissões, e www-data como grupo.

Como posso conseguir isso?

Estou criando os arquivos via SSH.

    
por Mr.Gando 23.01.2012 / 14:00

3 respostas

45

Para definir o grupo, atribua /var/www ao bit setgid :

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

Para também ajustar 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 usuário.

Para definir as permissões do grupo padrão, você terá que usar ACLs . Definir uma ACL "padrão":

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

Para também ajustar 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, é ativado por padrão; em ext3 ou ext4 você pode obter "Operação não suportada", caso em que deve ser ativado manualmente:

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

  • Permanentemente - um dos métodos abaixo:

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

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

por 23.01.2012 / 18:59
2

Isso pode ter feito algumas pessoas ficarem com a resposta 'grawity' no setgid, se o grupo da pasta for diferente do seu você pode precisar executar o chmod como root, mas você não receberá nenhum erro indicando que você 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
    
por 09.03.2016 / 02:45
0

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

    
por 23.01.2012 / 18:53