Como definir permissões de arquivo padrão para todas as pastas / arquivos em um diretório?

254

Quero definir uma pasta para que qualquer coisa criada nela (diretórios, arquivos) herda as permissões e o grupo padrão.

Vamos chamar o grupo de "mídia". E também, as pastas / arquivos criados no diretório devem ter o g + rw automaticamente.

Chris
fonte
1
Isso não é controlado pelo usuário que está criando o novo arquivo / pasta e sua umask?
Wadih M.
umask se relaciona a permissões, mas não acredito que faça alguma coisa ao definir um grupo padrão que não seja o próprio usuário.
Chris
1
Qual SO? Tags necessárias. setfacle ACLs padrão não existem no AIX.
Amit Naidu

Respostas:

269

Encontrei: Aplicando permissões padrão

Do artigo:

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

Em seguida, podemos verificar:

getfacl /<directory>

Resultado:

# 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
fonte
5
Yay para o pedaço pegajoso!
Gabe.
22
Não confunda gid com bit pegajoso.
Amit Naidu
10
O g + s garantirá que o novo conteúdo do diretório herde a propriedade do grupo. O comando setfacl só muda o chmod, no seu caso define a permissão para o = rx
Steen Schütt
10
Observe que a ACL deve estar ativada (incluída como uma das opções de montagem para o sistema de arquivos montado) para que as permissões de arquivo sejam herdadas.
sg23
11
Você pode querer considerar o uso de 'x' em vez de modo que só irá definir permissão de execução em não diretórios de arquivossetfacl -d -m g::rwX /<directory>
Adrian Gunawan
27

Esta é uma adição à resposta de Chris, baseada na minha experiência no meu equipamento Arch Linux.

O uso da opção padrão (-d) e da opção de modificação (-m) modifica apenas as permissões padrão, mas deixa intactas as existentes:

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

Se você deseja alterar toda a estrutura de permissão da pasta, incluindo as existentes (você precisará fazer uma linha extra e torná-la recursiva -R:

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

por exemplo.

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 para markdwite nos comentários para a sintaxe da linha revogar todos os privilégios)

thebunnyrules
fonte
2
Para revogar privilégios de grupo (como exemplo): sudo setfacl -d -mg :: --- / path
markdwhite
1
isso é apenas um erro de digitação especificando setfacl -R -m g::rwx /<directory>duas vezes na sua resposta?
Shane Rowatt 02/09
0

Adicione você / usuário registrado ao grupo www-data, para que possamos trabalhar com arquivos criados pelo servidor www-data

sudo usermod -a -G www-data $USER

Precisa reiniciar / entrar novamente para que o grupo recém-adicionado entre em vigor

cd /var/www

Adicione www-data como membro do grupo da pasta html e seu usuário como proprietário, para que nós o possuamos e também um membro do grupo

sudo chown -R $USER:www-data html

Coloque seu nome de usuário no lugar de USER

Defina a permissão de leitura, gravação e execução conforme necessário, (ugo) u = usuário, g = grupo, o = outros

sudo chmod 750 html

Defina o GID do html, agora, os arquivos criados recentemente em html herdarão as permissões de propriedade:

sudo chmod g+s html

Isso cria as regras padrão para arquivos / diretórios recém-criados no diretório html e subdiretórios.

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

Faça o SELinux, se instalado, ignore o requisito de contexto www-data para permitir permissões de gravação

sudo setsebool -P httpd_unified 1

diretório de lista para ver novas permissões aplicadas

ls -ld html

Retorna isso

drwxrwsr-x+   3 html www-data

O + à direita significa que a ACL, lista de controle de acesso, está definida no diretório

Referência : Link para o fórum

Bsienn
fonte
-2

Usando o seguinte comando, você pode definir a permissão padrão para um arquivo:

chacl -R filename
user240513
fonte
3
Como isso difere de outras respostas? E dê alguns exemplos #
Romeo Ninov
3
Tem certeza de que é isso que faz? linux.die.net/man/1/chacl indica que ele removerá uma ACL.
Jeff Schaller