Quero que um usuário específico altere recursivamente o proprietário e o grupo de todo o conteúdo de um diretório específico, e apenas desse diretório. O diretório é uma espécie de “caixa de entrada”, onde um serviço grava arquivos e subdiretórios.
Atualmente, tenho um administrador sudo chown
, mas prefiro que o proprietário do destino faça isso sozinho, sem que esse usuário tenha mais permissões necessárias. Digamos que o proprietário original seja o “carrasco” e o proprietário final seja o “público”. Nenhum dos usuários está no mesmo grupo.
sudo chown -R audience:watchers /usr/files/pathofdir
Não está certo, porque não quero que o público tenha autoridade ilimitada para usar o chown. Meu primeiro palpite foi tentar adicionar "público" a /etc/sudoers com permissão para /usr/bin/chown e /usr/bin/chgrp. Mas isso é muita autoridade.
Pensei em escrever um roteiro exclusivamente para público, mas não sei como fazer com que esse roteiro tenha as permissões corretas e nada mais.
Qual é uma boa maneira de fazer isso?
Responder1
Você pode especificar um comando completo em sudoers
, com argumentos e tudo; nesse caso, o usuário terá autoridade para executar o comando especificado apenas com os argumentos especificados. Portanto, esta sudoers
entrada deve resolver o seu problema:
audience ALL=/usr/bin/chown -R audience\:watchers /usr/files/pathofdir
No entanto, acho que você deveria verificar as ACLs, pois suspeito que seu problema possa ser resolvido mais facilmente com o uso de uma ACL padrão no diretório. Veresta postagemPor exemplo.
Responder2
@Lasek apontou que eu provavelmente queria usar ACLS. Isso parece estar funcionando para mim:
sudo setfacl -RPdm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPdm group:watchers:rwX /usr/files/pathofdir
sudo setfacl -RPm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPm group:watchers:rwX /usr/files/pathofdir
Provavelmente existe uma sintaxe mais concisa, mas este é meu primeiro uso desetfacl