Como fazer com que os usuários definam ACLs em diretórios que não possuem?

3

Eu tenho um conjunto de diretórios de armazenamento em máquinas Linux, todas 770 / root: root (perms / owner: group), para as quais uso ACLs para gerenciar o acesso dos usuários. (Eu não consigo usar grupos unix, pois os diretórios são compartilhados através de uma rede, onde os grupos são gerenciados via LDAP, para os quais eu não sou um administrador).

Para cada diretório, um usuário tem acesso total ao rwx via ACLs e todos os outros têm acesso rx via ACLs.

Atualmente, tenho que responder manualmente às solicitações para adicionar / remover usuários, e gostaria que essa capacidade fosse passada para os usuários 'rwx' dos diretórios que eles possuem (porque sou um administrador de sistemas preguiçoso, naturalmente) .

A melhor solução que posso imaginar é criar um script / programa com root setuid que verifique o status da ACL 'rwx' do usuário chamador no diretório fornecido e permita que eles adicionem / removam usuários 'rx' da ACL , como em:

$ modify_acls.sh [--remove] [--add] <my_directory> <other_user>

Existe uma maneira mais fácil de fazer isso, ou a solução acima não funcionará por algum motivo?

    
por einonm 03.05.2017 / 21:18

2 respostas

1

Em vez de um shell script setuid, considere ativar um script específico com sudo .

Mesmo que seja usado com mais frequência, sudo não está restrito a "permitir que alguém execute qualquer programa como root". Você pode facilmente configurar "usuário A, B e C estão autorizados a executar apenas este script em particular como root" em /etc/sudoers . Veja man sudoers para detalhes.

Não há realmente uma vantagem de usar sudo em vez de um script setuid, exceto que em sistemas em que scripts setuid são completamente desativados por razões de segurança, a segunda alternativa simplesmente não funciona. Você ainda pode escrever um binário setuid personalizado, mas inserir uma linha em sudoers é mais simples, rápido e fácil de alterar mais tarde quando você deseja adicionar ou remover usuários.

    
por 04.05.2017 / 12:25
1

O uso de um script de shell provavelmente não funcionará, pois normalmente os scripts de shell setuid não são suportados no Linux.

Uma solução seria escrever um pequeno executável em C para fornecer a funcionalidade necessária e setuid root neste executável.

    
por 04.05.2017 / 06:06