Como você concede acesso completo w / chmod a vários grupos? Precisa usar o ACL?

3

Primeiramente, obrigado pela leitura. Eu tive sucesso executando um job de plad launchd que está na minha pasta LaunchAgents. Basicamente chama um pequeno script de shell que chmod é permissões de uma pasta. Depois, tenho outro trabalho que chama outro script que o altera para o que era antes.

Agora, estou tentando descobrir como chmod as permissões de pasta / arquivo para um grupo específico. Eu percebo que cada pasta / arquivo tem um dono que pertence a um grupo. Sim, mas como posso dar permissões explicitamente a outro grupo de usuários por meio de um script de shell? Isso é possível? Eu também tenho lido sobre ACL's, esta é a rota que devo seguir?

Meu script é simples agora:

chmod -R 777 <FOLDERNAME>

depois de volta:

chmod -R 000 <FOLDERNAME>

Executando isso enquanto estiver logado como administrador.

Mas eu gostaria de conceder acesso para outro grupo, em teoria:

chmod -R 777 <FOLDERNAME> <GROUPNAME> < - yup, isso é o que eu estou pensando

    
por gabemartinez 30.09.2010 / 18:47

1 resposta

1

Você precisa de ACLs. Primeiro de tudo, seu sistema de arquivos deve ser montado com essa opção. Você pode remontá-lo com essa opção com:

# mount -o remount,acl /mount/point

Se você quiser esta opção estática (disponível após cada reinicialização):

# vi /etc/fstab
#...
/dev/partition  /mount/point  fstype  defaults,acl 1 2

A parte importante aqui é ", acl" na coluna de opções. Tudo o mais que você pode ignorar.

Você precisa instalar o acl package e usar setfacl . Para definir padrões para um diretório (cada novo arquivo e subdir criado terá esses acls):

# setfacl -d -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
  • O usuário de criação tem permissões totais
  • user1 leu apenas uma execução
  • mesmo para o grupo padrão
  • group1 leu o acesso para execução e gravação
  • group2 ler e executar
  • outros não têm chance aqui

Agora você deve definir permissões neste diretório (sim, apenas a opção strip -d):

# setfacl -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory

AVISO de que, se houver algum conteúdo nesse diretório, as permissões DEVEM ser explicitamente definidas. Você pode usar o find para configurar as permissões corretamente (lembre-se, os diretórios devem ter acesso de leitura e execução para as pessoas acessarem / listarem). Para começar com esse assunto, encontre ./ -type d-lhe subdiretórios na localização atual e o seguinte irá configurar as permissões padrão para cada uma destas:

# find ./ -type d -exec setfacl -d -m <acl> \{} \;
  • <acl> deve ser o acl desejado
  • \{} \; é uma sequência de escape para encontrar.

Se você quiser verificar as permissões herdadas pelos arquivos e diretórios criados, use getfacl

Você também pode usar a opção -R | - recursiva, mas isso pode atrapalhar as permissões de arquivos e diretórios.

    
por 30.09.2010 / 19:28