¿Cómo puedo permitir que un usuario su su a otro sin permitir el acceso de root?

53

Me gustaría permitir que ciertos usuarios accedan a otra cuenta de usuario sin tener que conocer la contraseña de esa cuenta, pero no permitir el acceso a ninguna otra cuenta de usuario (es decir, root).
Por ejemplo, me gustaría permitir que Tom el DBA se adapte al usuario de Oracle, pero no al usuario o root de Tomcat.

Me imagino que esto podría hacerse con el archivo / etc / sudoers, ¿es posible? ¿Si es así, cómo?

gharper
fuente

Respuestas:

44

Si, esto es posible.

En / etc / sudoers, el elemento que sigue inmediatamente al igual es el usuario al que se le permitirá ejecutar el comando.

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

El usuario (tom) puede escribir sudo -u oracle / bin / chown tom / home / oracle / oraclefile

Brent
fuente
55
Esto permitiría a Tom para ejecutar comandos como Oracle, pero no para realmente convertirse en el usuario de Oracle
gharper
11
¿Qué pasa con sudo -u oracle su -? Eso le daría un caparazón abierto como usuario de Oracle. ¿Es eso lo que quieres?
Brent
+1 para ese último comentario, Brent. Esa sería mi respuesta.
Annika Backstrom
3
Algo similar a lo siguiente funcionaría: sudo -u oracle -s o sudo -u oracle -i (-s para shell, -i para inicio de sesión, hace un shell de inicio de sesión). Desafortunadamente, no sé de antemano qué usaría en / etc / sudoers para limitar al usuario, pero dado que les está permitiendo el acceso al shell, probablemente solo quiera hacer tom ALL = (oracle) ALL como alguien más mencionó. Si pueden ejecutar un shell, probablemente no le importe restringir los comandos que pueden ejecutar.
Mark
1
Idealmente, ¿no le gustaría que Tom ejecute comandos como el usuario Oracle, en lugar de convertirse en el usuario Oracle? La distinción es leve, pero proporciona un excelente registro de auditoría sin tener que preocuparse por usar un shell de auditoría.
Scott Pack
40

Agregue a su / etc / sudoers algo como

tom ALL=(oracle) ALL

Entonces el usuario tom debería poder usar sudo para ejecutar cosas como usuario oracle con la opción -u, sin dejar que tom

Es decir, obtener un shell como usuario oracle (bueno, dado que su sudo es lo suficientemente nuevo como para tener la opción -i).

sudo -u oracle -i
Kjetil Joergensen
fuente
55
Tuve que usar la sintaxis tom ALL=(oracle)NOPASSWD:ALLpara que sudo no pidiera contraseña
snowindy
9

Para SOLO proporcionar las capacidades en la pregunta, agregue lo siguiente a / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Entonces tom puede:

sudo -u oracle bash -i
karimofthecrop
fuente
0

Por ejemplo, me gustaría permitir que Tom el DBA se adapte al usuario de Oracle, pero no al usuario de Tomcat o root.

Necesitaba hacer esto a un sistema recientemente y me costó encontrar mis notas sobre la configuración alternativa que usé hace años que también permitía la sintaxis su <user>. En mi situación, necesitaba permitir que varios usuarios sua un usuario específico.

Cree un grupo con el addgroup <groupName>que otros usuarios podrán suhacerlo sin una contraseña. A continuación, agregue ese grupo a cada usuario que desee poder supara ese usuario sin una contraseña: usermod -a -G <groupName> <userName>(o usermod -a -G oracle tom). Los cambios de grupo pueden no tener efecto hasta el próximo inicio de sesión.

Nota: En su caso, ya tiene el grupo porque el oraclegrupo se habría creado cuando creó el usuario Oracle adduser oracle.

Ahora edite /etc/pam.d/suy bajo lo siguiente:

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

.. agregue líneas de regla de autenticación para que la sección se vea así:

# 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>

Reemplazar <groupName>con oracleen este caso. Esto permitirá que cualquier usuario que forma parte de la <groupName>desu <groupName>

Ahora tompuede su oracley, si necesita dar a otros usuarios el mismo acceso, agréguelos al oraclegrupo.

pregunta similar aquí

jtlindsey
fuente