Suponha que eu tenha dois usuários Alice e Bob e um grupo GROUPNAME e uma pasta foo
, ambos usuários sejam membros de GROUPNAME (usando Linux e ext3).
Se eu salvar como usuário Alice um arquivo com foo
, as permissões são: -rw-r--r-- Alice Alice
. No entanto, é possível conseguir que todo arquivo salvo em algum subdiretório de foo
tenha permissões -rwxrwx--- Alice GROUPNAME
(por exemplo, proprietário Alice, grupo GROUPNAME)?
permissions
group
acl
umask
aluna
fonte
fonte
Respostas:
Você pode controlar os bits de permissão atribuídos com
umask
e o grupo criando o diretório setgid comoGROUPNAME
.Observe que você precisa fazer o
chgrp
/chmod
para cada subdiretório; ele não se propaga automaticamente (ou seja, nem os diretórios existentes nem os criados posteriormente em um diretório setgid serão setgid , embora o último esteja em grupoGROUPNAME
).Observe também que
umask
é um atributo do processo e se aplica a todos os arquivos criados por esse processo e seus filhos (que herdam oumask
efeito em seus pais nofork()
momento). Os usuários podem precisar configurá-lo~/.profile
e ter cuidado com coisas não relacionadas ao seu diretório que precisam de permissões diferentes. módulos podem ser úteis se você precisar de configurações diferentes ao fazer coisas diferentes.Você pode controlar as coisas um pouco melhor se puder usar ACLs POSIX; deve ser possível especificar uma máscara de permissões e um grupo e fazer com que eles se propaguem de maneira sensata. O suporte para ACLs POSIX é um pouco variável, no entanto.
fonte
-rwxrwx--- A G
)?Se possível, use as listas de controle de acesso (ACL) .
No Linux, verifique se o sistema de arquivos que você está usando suporta ACLs (a maioria dos sistemas de arquivos unix). Pode ser necessário alterar as opções de montagem para ativar as ACLs: com ext2 / ext3 / ext4, é necessário especificar
acl
explicitamente a opção de montagem, para que a entrada em/etc/fstab
seja semelhante/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Executemount -o remount,acl /
para ativar as ACLs sem reiniciar. Instale também as ferramentas de linha de comando da ACLgetfacl
esetfacl
, geralmente fornecidas em um pacote chamadoacl
.Agora que a configuração única foi concluída, altere a ACL do diretório para conceder ao grupo permissões de gravação e tornar essas permissões herdadas pelos arquivos recém-criados. No Linux:
Se ACLs não são uma opção, faça o diretório de propriedade do grupo
GROUPNAME
, e definir suas permissões para 2775 ou 2770:chmod g+rwxs /path/to/directory
. Os
aqui significa o bit setgid; para um diretório, significa que os arquivos criados nesse diretório pertencerão ao grupo que possui o diretório.Você também precisará definir umask de Alice e Bob para tornar todos os seus arquivos graváveis em grupo por padrão. O umask padrão na maioria dos sistemas é 022, o que significa que os arquivos podem ter todas as permissões, exceto a gravação por grupo e outras. Altere para 002, ou seja, para proibir apenas a permissão de gravação por outra. Você normalmente colocaria essa configuração no seu
~/.profile
:fonte
mount
comando com aremount
opção, para que ele não seja usadofstab
. Teracl
duas vezes significa que o sistema de arquivos já foi montado com aacl
opção e é inofensivo.acl
é o padrão para ext4 nos kernels recentes, a propósito (o patch ainda era novo quando escrevi esta resposta). P2: você pode executar os comandos em qualquer ordem.GROUPNAME
em vez deG
, para torná-la mais claraEsta questão é uma boa opção para Linux
acl
. Como você não indica seu sistema operacional, assumirei o Linux a seguir. Aqui está uma sessão de exemplo.Não conheço um
acl
tutorial muito bom , mas você poderia fazer pior do que http://www.vanemery.com/Linux/ACL/linux-acl.htmlObserve que o padrão
acl
se comporta como uma umask local. Como pelo menos no Linux, umasks são aplicadas globalmente, é a única maneira que conheço para obter o efeito de uma umask local. Por alguma razão, esse é um recurso pouco conhecido. A rede está cheia de pessoas perguntando sobre uma substituição local de umask, mas quase ninguém parece pensar em usaracl
.Observe também que você precisa montar a partição em que está trabalhando com
acl
suporte, por exemplo.A sessão segue:
Defina o grupo de
foo
como serstaff
e defina a ACL do grupo e o usuário defoo
comorwx
.Defina as acls padrão do usuário e do grupo
rwx
também. Isso define as permissões que os arquivos e diretórios herdamfoo
. Portanto, todos os arquivos e diretórios criados no foo terão permissões de gruporw
.Agora crie alguns arquivos
foo
como usuáriosfaheem
ejohn
.Listar arquivos. Observe que os arquivos pertencentes a
faheem
e os arquivos pertencentes ajohn
são criados com permissões de gruporw
.fonte