Como mudar um grupo sem pedir uma senha?

2

No linux, há dois arquivos em que as definições de grupo são especificadas. Um deles é /etc/group e o outro é /etc/gshadow . Eu quero que meu usuário regular seja capaz de trocar um grupo enquanto inicia um processo sem digitar senhas. É importante que o usuário não seja um membro desse grupo.

Eu consegui fazer isso configurando esses dois arquivos da seguinte maneira:

# cat /etc/group | grep audio
audio:x:29:pulse

# cat /etc/gshadow | grep audio
audio:*::pulse,morfik

E agora o usuário morfik é capaz de executar, por exemplo, este comando:

$ /usr/bin/sg audio -c "pulseaudio -D" 

$ ps -eo user,group,args | grep pulse
morfik   audio    pulseaudio -D
morfik   audio    /usr/lib/pulseaudio/pulse/gconf-helper

Mas há um problema com grpck , que fornece a seguinte saída:

# grpck
'morfik' is a member of the 'audio' group in /etc/gshadow but not in /etc/group

Se eu removesse o usuário do grupo audio do arquivo /etc/gshadow e tentasse iniciar o processo, receberia o seguinte erro:

sg[2378]: Failed to crypt password with previous salt of group 'audio'

Então a questão é: eu deveria estar preocupado com a mensagem de grpck ? Talvez haja uma maneira de corrigir o erro sg para que todos fiquem felizes?

    
por Mikhail Morfikov 22.11.2015 / 14:16

1 resposta

6

sg permite alternar o grupo primário para um grupo suplementar diferente (ou seja, um grupo para o qual o usuário está listado em /etc/group ) sem fornecer nenhuma autenticação ou para alternar o grupo primário para um que é mencionado em /etc/group inserindo a senha listada em /etc/group ou /etc/gshadow . Assim, usar sg , “sem digitar senhas” e “não deveria ser um membro desse grupo” é contraditório.

Se o usuário puder alternar livremente para o grupo, não há muito sentido em não torná-lo membro do grupo. A única vantagem real seria registrar quando acessarem o grupo.

A configuração que você tentou, com o usuário listado em gshadow , mas não em group , não é uma configuração suportada. O fato de ter dado algo parecido com o que você queria realmente me parece um erro - gshadow não deveria conceder associações a grupos que não estão listadas em group . O manual afirma “Você deve usar a mesma lista de usuários que em /etc/group ”. Se você violar essa recomendação, não conte com um comportamento sensato ou portátil.

Se você quiser permitir que um usuário execute um comando específico como um grupo, com o log, você pode usar o sudo. Execute visudo e adicione uma linha como esta depois de qualquer não- NOPASSWD que possa interessar a esse usuário :

morfik ALL = (morfik:audio) NOPASSWD: pulseaudio
    
por 23.11.2015 / 01:49

Tags