Permitir que usuário não root altere as permissões de arquivo

1

Estamos desenvolvendo um aplicativo que possibilita alterar as permissões de arquivos de alguns arquivos que os usuários criaram.

Então, por exemplo o usuário "Bob" cria um arquivo em / srv / share / então bob é o dono do arquivo que ele criou e somente ele e root são capazes de definir as permissões apropriadas.

Agora, não gostamos de executar nosso aplicativo como root, devido a algumas preocupações de segurança. Então é possível no Linux dizer que um usuário "Application" é capaz de modificar as permissões de arquivos que outro usuário criou no diretório / srv / share? E só ai? Caso contrário, o usuário "Application" poderá alterar alguns arquivos do sistema e poderá se tornar root, o que não é uma intenção óbvia.

Digamos que Bob crie um arquivo "test.txt" em / srv / share / As permissões ficariam assim: UserOwner: Bob GroupOwner: AGroupName Permissões: 755

Agora vamos dizer que nosso aplicativo gostaria de alterar a permissão do arquivo "test.txt" para 770. Isso só é possível quando o aplicativo é executado como root. Eu sei que é possível alterar o umask ou usar ACLs padrão para que as permissões padrão mudem de novos arquivos criados, mas temos outro caso de uso que requer uma mudança dinâmica de permissões de arquivos específicos.

Atualmente estamos executando um Debian Stretch 9.3 com o Kernel 4.9.0-6.

Então, alguém tem uma ideia de como fazer isso? Ou simplesmente não é possível?

Editar: // Para deixar algumas coisas claras. Não queremos permitir que um grupo acesse o arquivo do Bob ou grave no diretório. Queremos alterar as permissões de arquivo, que só é permitido para o próprio usuário (Bob) e raiz de outro usuário não raiz, apenas neste diretório específico.

    
por ForJ9 04.04.2018 / 22:21

1 resposta

1

Você pode tentar a "pasta colaborativa". Por exemplo Eu quero que o "projeto" do grupo tenha acesso na pasta e o projeto de grupo (para que todos os membros desse grupo) possam modificar os arquivos. O mais importante é o chmod 2770, que significa 2 (sgid, os arquivos são criados com o dono do grupo) e o 770 é o acesso de leitura para o uid e o gid.

mkdir /projectfolder
groupadd project
chmod 2770 /projectfolder

Se você quiser a pasta de uso do projeto de grupo, mas não excluir arquivos de outros membro do grupo use sgid + sticky

mkdir /projectfolder
groupadd project
chmod 3770 /projectfolder

Claro, adicione bob ao projeto do grupo

Se isso não funcionar, a única solução (como eu sei) é sudo, é possível atribuir grupo e específico comando, por exemplo, edite com visudo

User_Alias    PROJECT = bob
Cmnd_Alias    BOBCMD = /sbin/chmod

bob ALL= BOBCMD

E se você precisar usar o chmod somente em uma pasta específica, você pode fazer um script bash e usar isso como um comando sudo. O script deve controlar se o usuário está ok, se dir estiver ok e, em seguida, executar o comando chmod.

    
por 04.04.2018 / 22:27