Como posso permitir que um usuário processe outro sem permitir o acesso root?

53

Eu gostaria de permitir que certos usuários processem a outra conta de usuário sem precisar saber a senha dessa conta, mas não permitir o acesso a qualquer outra conta de usuário (ou seja, raiz).
Por exemplo, eu gostaria de permitir que o DBA do Tom su ao usuário oracle, mas não ao usuário ou raiz do tomcat.

Eu imagino que isso poderia ser feito com o arquivo / etc / sudoers - é possível? Se sim, como?

gharper
fonte

Respostas:

44

Sim, isso é possível.

Em / etc / sudoers, o item imediatamente após o igual é o usuário que o comando poderá executar como.

tom  ALL=(oracle) /bin/chown tom *

O usuário (tom) pode digitar sudo -u oracle / bin / chown tom / home / oracle / oraclefile

Brent
fonte
5
Isso permitiria que Tom para executar comandos como oráculo, mas não para realmente tornar-se o usuário oracle
gharper
11
E o sudo -u oracle su -? Isso daria a ele um shell aberto como usuário do oracle. É isso que você quer?
Brent
+1 no último comentário, Brent. Essa seria a minha resposta.
Annika Backstrom
3
Algo como o seguinte funcionaria: sudo -u oracle -s ou sudo -u oracle -i (-s para shell, -i para login - faz um shell de login). Infelizmente eu não sei de antemão o que você usaria em / etc / sudoers para limitar o usuário, mas, como você está permitindo acesso a shell, você provavelmente só quer fazer tom ALL = (Oracle) ALL como outra pessoa mencionou. Se eles podem executar um shell, você provavelmente não se preocupa com a restrição dos comandos que eles podem executar.
Mark
11
Idealmente, você não gostaria que Tom executasse comandos como usuário do oracle, em vez de se tornar o usuário do oracle? A distinção é pequena, mas fornece um ótimo log de auditoria sem precisar ser inútil com o uso de um shell de auditoria.
21420 Scott Pack
40

Adicione ao seu / etc / sudoers algo como

tom ALL=(oracle) ALL

Então o usuário tom deve poder usar o sudo para executar as coisas como usuário oracle com a opção -u, sem permitir que tom

Ou seja, recebendo um shell como usuário oracle (bem, considerando que o seu sudo é novo o suficiente para ter a opção -i).

sudo -u oracle -i
Kjetil Joergensen
fonte
5
Eu tive que usar a sintaxe tom ALL=(oracle)NOPASSWD:ALLpara fazer sudo para não pedir senha
snowindy
9

Para fornecer SOMENTE os recursos da pergunta, adicione o seguinte a / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Então tom pode:

sudo -u oracle bash -i
karimofthecrop
fonte
0

Por exemplo, eu gostaria de permitir que o DBA de Tom su ao usuário oracle, mas não ao usuário ou raiz do tomcat.

Eu precisava fazer isso em um sistema recentemente e tive dificuldade em encontrar minhas anotações 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 supara um usuário específico.

Crie um grupo usando o addgroup <groupName>que outros usuários poderão sufazer sem uma senha. Em seguida, adicione esse grupo a cada usuário que você deseja poder supara esse usuário sem uma senha: usermod -a -G <groupName> <userName>(ou usermod -a -G oracle tom). As alterações do grupo podem não ter efeito até o próximo login.

Nota: No seu caso, você já possui o grupo porque o oraclegrupo teria sido criado quando você criou o usuário oracle adduser oracle.

Agora edite /etc/pam.d/sue sob o seguinte:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..adicione linhas de regra de autenticação para que a seção fique assim:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Substitua <groupName>por oracleneste caso. Isso permitirá que qualquer usuário que faz parte da <groupName>asu <groupName>

Agora tompode su oraclee se você precisar conceder a outros usuários o mesmo acesso, adicione-os ao oraclegrupo.

pergunta semelhante aqui

jtlindsey
fonte