¿Cómo puedo obtener un shell interactivo como otro usuario no root?

14

Estoy usando el servidor Ubuntu 10.04 LTS, con el modelo de seguridad predeterminado (root bloqueado, usando sudopara elevar los privilegios). De vez en sudo -icuando disfruto usando cuando necesito ejecutar una serie de comandos con privilegios elevados, o cuando necesito hurgar en directorios con privilegios solo de root.

A veces, al configurar un software que se ejecutará como su propia cuenta de sistema no privilegiada ( adduser --system --group --no-create-home --disabled-login some-daemon-user), encuentro que necesito ejecutar una secuencia de comandos como ese usuario , en lugar de mí mismo o root. He intentado usar sudo -i -u some-daemon-user, pero solo devuelve un 1estado sin ningún mensaje de error.

He comprobado el syslog, messages, auth, y debuglos archivos de registro en /var/logy ninguno de ellos incluyen los mensajes que hacen referencia sudoo la cuenta en cuestión.

Entonces, ¿es posible convertirse en otro usuario no root, estilo sudo sin solo establecer una contraseña e iniciar sesión (como ellos)? ¿Está mi sistema 'roto' de alguna manera o simplemente lo estoy haciendo mal?

Calrion
fuente

Respuestas:

14

Ahmm ... el problema es que el shell estándar de esos usuarios normalmente está configurado /bin/falsey por razones de seguridad no deberías cambiar esto. Pero aún puede ejecutar, por ejemplo:sudo -u www-data /bin/sh

Paul Hänsch
fuente
1
¿Puede dar más detalles sobre las "razones de seguridad"? ¿Es diferente si utilizo sudopara ejecutar un shell como usuario, como Florian sugiere anteriormente?
Calrion
1
La razón es que cualquier atacante que logre un inicio de sesión como usuario del sistema, es decir, explotando un error en el programa de inicio de sesión, es menos probable que termine con un shell válido. Por lo tanto, debe dejar la configuración tal como está en el archivo / etc / passwd, incluso si es solo para un buen karma. Invocar el shell directamente a través de sudo no está relacionado con esto.
Paul Hänsch
Por lo tanto, el problema es configurar un shell en el passwdarchivo, no ejecutar realmente un shell como el usuario. Gotcha!
Calrion
9

sudo -iejecuta el shell especificado por la entrada de la base de datos de contraseñas del usuario objetivo, que es /bin/falsepara el usuario de su sistema.

Utilizar

 sudo -u some-daemon-user bash

o

sudo -u some-daemon-user -H bash

si desea establecer la variable de entorno $ HOME establecida para el usuario objetivo.

Florian Diesch
fuente