Eu gostaria de permitir que certos usuários su para outra conta de usuário sem ter que saber a senha dessa conta, mas não permitir o acesso a qualquer outra conta de usuário (ou seja, root).
Por exemplo, eu gostaria de permitir que Tom o DBA su para o usuário oracle, mas não para o usuário ou root do tomcat.
Imagino que isso possa ser feito com o arquivo /etc/sudoers - é possível? Se sim, como?
Sim, isso é possível.
Em /etc/sudoers o item imediatamente após o equals é o usuário que o comando terá permissão para executar.
O usuário (tom) pode digitar sudo -u oracle /bin/chown tom /home/oracle/oraclefile
Adicione ao seu /etc/sudoers algo como
Então o usuário tom deve ser capaz de usar o sudo para executar as coisas como usuário oracle com a opção -u, sem deixar o tom
Ou seja, obter um shell como oráculo do usuário (bem, dado que seu sudo é novo o suficiente para ter a opção -i).
Para fornecer SOMENTE os recursos na pergunta, adicione o seguinte a /etc/sudoers:
Então Tom pode:
Eu precisava fazer isso em um sistema recentemente e tive dificuldade em encontrar minhas notas na configuração alternativa que usei anos atrás, que também permitia a sintaxe
su <user>
. Na minha situação eu precisava permitir vários usuários parasu
um usuário específico.Crie um grupo usando
addgroup <groupName>
o que outros usuários poderão fazersu
sem uma senha. Em seguida, adicione esse grupo a cada usuário que você deseja habilitar asu
esse usuário sem uma senha:usermod -a -G <groupName> <userName>
(ouusermod -a -G oracle tom
). As alterações do grupo podem não ter efeito até o próximo login.Obs: No seu caso, você já tem o grupo porque o
oracle
grupo teria sido criado quando você fez o usuário oracle comadduser oracle
.Agora edite
/etc/pam.d/su
e sob o seguinte:..adicione linhas de regra de autenticação para que a seção fique assim:
Substitua
<groupName>
pororacle
neste caso. Isso permitirá que qualquer usuário que faça parte<groupName>
dosu <groupName>
Agora
tom
podesu oracle
e se precisar dar a outros usuários o mesmo acesso, adicione-os aooracle
grupo.pergunta parecida aqui