Maneira bash do Linux para usuários sem privilégios se apropriarem do conteúdo de apenas um diretório específico?

Maneira bash do Linux para usuários sem privilégios se apropriarem do conteúdo de apenas um diretório específico?

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 sudoersentrada 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

informação relacionada