Suponha que meu umask seja 0077.
Eu tenho um diretório, foo
que eu quero ter permissões especiais aplicadas a ele. Todos os arquivos que eu criar foo
devem ser legíveis por todo o mundo e todos os diretórios devem ser legíveis e executáveis por todo o mundo.
Atualmente, se eu criar um arquivo, será 0600 e um diretório será 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Quero que o arquivo seja 0644 e o diretório 0755, independentemente do meu umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Como posso conseguir isso?
linux
permissions
access-control-list
umask
stickmangumby
fonte
fonte
Respostas:
Sim, o ACL pode fazer isso.
Verifique se o seu sistema de arquivos está montado com acl. Para verificar isso, digite
mount
. Você deve ver 'acl' listado entre outras permissões, por exemplo:Se não estiver montado com o acl, abra / etc / fstab e adicione 'acl' à lista de opções:
Agora, monte novamente o sistema de arquivos em execução com as novas opções:
Instale os utilitários acl. No ubuntu / debian, é o seguinte:
Seus novos amigos são
setfacl
egetfacl
. Usesetfacl
para alterar a acl padrão para um diretório:-d
define padrão,-m
modifica acl eo:r
concede a "outro" o direito de ler. A configuração padrão em um diretório é aproximadamente equivalente à configuração setgid em um diretório, mas, em vez de arquivos recém-criados que herdam o grupo, eles herdam a acl. Juntos, setgid e acl podem ser poderosos, porque você pode conceder permissões padrão a um grupo e fazer com que os arquivos recém-criados pertençam a esse grupo, para um umask eficaz por diretório, baseado em grupo.Verifique seu trabalho:
ls -l
agora deve mostrar um "+" extra indicando a presença de acl, além das permissões de arquivo padrão.Você pode obter informações detalhadas sobre o acl usando
getfacl
.fonte
setfacl
egetfacl
estão retornando a saída esperada, mas apenas os diretórios (não os arquivos) no diretório pai estão herdando a acl, e mesmo assim meu umask tem precedência sobre o padrão (se eles não são legíveis pelo mundo,default:other::r--
isso não permite que outro usuário acessá-los). Perdi algo óbvio?Você também pode forçar uma umask para o diretório, configurando a propriedade ACL da máscara assim:
fonte
Basta instalar o OnDir e configurá-lo corretamente de acordo com suas necessidades. Eu respondi a um problema semelhante localizado aqui .
fonte