sudoers file e passwd apenas para o grupo selecionado

1

Eu tenho 3 usuários no grupo "produção": John, Steve e Bob. No grupo "vendas" estão: Sam e Jack.

Agora, gostaria de autorizar John a alterar as senhas de todos os usuários, mas apenas no grupo "produção", por isso ele não poderá fazer alterações em Sam e Jack.

No meu arquivo / etc / sudoers, tenho um alias para todos os usuários no grupo "produção":

User_Alias  PRODUCTION = %production    

E o problema é que não tenho ideia de como escrever isso:

john ALL =(root) /usr/bin/passwd steve, (root) /usr/bin/passwd bob, (root) /usr/bin/passwd jack    

... usando meu alias de PRODUÇÃO, portanto, se houver alguém novo adicionado a esse grupo, não será necessário adicioná-lo manualmente ao arquivo sudoers também.

Eu tentei algo assim em muitas variações:

john ALL =(root) /usr/bin/passwd PRODUCTION    

mas não funciona e neste momento não tenho mais ideias.

Eu apreciarei qualquer pista, muito obrigado!

    
por kamil55 01.12.2014 / 04:39

2 respostas

1

Isso é muito complicado para sudoers .

Você precisa escrever um script que verifique se o usuário pertence a esse grupo e chama passwd em caso afirmativo.

sudoers deve então ser configurado para que john possa executar esse script como root. Obviamente, o caminho para esse script deve ser gravável apenas para root .

#! /bin/bash

group="groupname"

test $# -ne 1 && exit 2

user="$1"

if id "$user" | grep -qF "(${group})"; then
        echo passwd "$user"
else
        echo "User '${user}' is not in group '${group}'."
fi

chamado como

./testscript username
    
por 01.12.2014 / 06:10
0

Sei que esta consulta tem dois anos, mas encontrei uma resposta que não envolve um script.

Você deve usar visudo para atualizar o arquivo /etc/sudoers . Veja a página sodoers(5) man. Você deve ver um exemplo que deve ser capaz de alavancar facilmente:

    USER HOST = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

O (s) usuário (s) definido (s) como USER tem permissão para alterar a senha de qualquer pessoa, exceto root, na (s) máquina (s) HOST. Note que isto assume que o passwd (1) não leva vários nomes de usuário na linha de comando.

    
por 19.06.2017 / 04:59