Use una contraseña para la administración y otra para iniciar sesión en el sistema
10
¿Cómo puedo darle a un usuario una contraseña para uso normal al iniciar sesión y otra contraseña para la administración del sistema y el acceso a sudo ? Quiero que un usuario tenga dos contraseñas.
¿Por qué no solo hacer 2 cuentas, una para uso normal y otra para usar sudo?
Luis Alvarado
no, lo necesito en una sola cuenta
Varun Sridharan
¿Por qué necesitas que esto sea una cuenta? Puede crear una cuenta separada con acceso a sudo pero sin una carpeta de inicio separada, luego agregar este usuario al mismo grupo que el usuario normal y configurarlo para usar la misma carpeta de inicio consudo usermod -d /path/to/new/home
Warren Hill
@SVarun Actualicé mi respuesta con pasos que me funcionan desde la última vez que comentaste. ¿Podrías comprobarlo y avisarme si te funciona?
Aaron D
Respuestas:
16
Hay una manera de hacer esto anulando la configuración de PAM (Módulo de autenticación enchufable) para el servicio sudo. Haga esto con un gran riesgo para su máquina: no solo copie y pegue a menos que entienda lo que hace el comando, y siempre mantenga abierto un terminal raíz: ¡pruebe la prueba! - antes de cerrar sesión, en caso de que necesite volver y arreglar algo.
Recomiendo leer información sobre cómo funciona PAM para que sepa qué hacer si se rompe. También recomiendo que la mayoría de los usuarios aborden este problema desde un ángulo diferente (creando una cuenta de usuario separada para la administración) porque la solución puede ser susceptible a ataques de tabla hash en su contraseña si no ha configurado sus permisos correctamente.
Si está decidido a continuar, deberá instalar un nuevo módulo PAM. pam_pwdfile utiliza el archivo de tipo antiguo / etc / passwd para la autenticación, que es excelente para usar diferentes contraseñas para diferentes servicios. No proporciona reconocimiento de cuenta: puede crear pares de nombre de usuario / contraseña para usuarios que no existen en el sistema. Como lo usaremos para sudo, no importa, ya que solo dejaremos que sudo verifique que la cuenta exista de la manera habitual.
sudo apt-get install libpam-pwdfile
También recomiendo tomar un práctico editor de archivos htpasswd. Benjamin Schweizer ha creado un práctico editor en Python que funciona bien. Tómelo de http://benjamin-schweizer.de/htpasswd_editor.html e instale su dependencia:
sudo apt-get install python-newt
Genere un archivo de formato htpasswd con la herramienta - sudo python htpasswd_editor sudo.passwd. Ingrese un nombre de usuario y contraseña usando el mismo nombre de usuario que usará para sudo, uno para cada usuario que lo usará. Cópielo en un lugar seguro (cuando pruebo esto lo pongo en /etc/sudo.passwd) y lo hago ilegible para los usuarios normales: chmod 660 /etc/sudo.passwdcomo root.
Asegúrese de que el archivo sea propiedad de root e ilegible para otros usuarios. Esta es una vulnerabilidad ya que el archivo contiene una contraseña cifrada, y si otros usuarios pueden leerla o escribirla, se rompe su seguridad. Es por esta razón que no recomiendo este método en una máquina que debe mantenerse segura.
Finalmente, edite el /etc/pam.d/sudoarchivo. Agregue la siguiente línea sobre las otras @include ...líneas:
Obviamente reemplazando el último argumento con la ruta al archivo htpasswd generado. Comente la siguiente línea: #@include common-authpara asegurarse de que está utilizando el nuevo método de autenticación.
Advertencia : deberá editar el /etc/pam.d/sudoarchivo desde un terminal raíz. ¡No cierre esto sin probarlo! Si lo hace, es posible que no pueda volver a iniciar sesión (si ha roto algo) y tendría que iniciar desde un disco de recuperación para reparar su sistema. Pruebe antes de cerrar sesión abriendo una nueva terminal e intente usar sudo. Debería descubrir que ya no funcionará con su contraseña de inicio de sesión habitual, sino que requiere la nueva contraseña que utilizó cuando generó el archivo passwd. Para actualizar el archivo, use la herramienta útil nuevamente.
sudo usermod -d /path/to/new/home
Respuestas:
Hay una manera de hacer esto anulando la configuración de PAM (Módulo de autenticación enchufable) para el servicio sudo. Haga esto con un gran riesgo para su máquina: no solo copie y pegue a menos que entienda lo que hace el comando, y siempre mantenga abierto un terminal raíz: ¡pruebe la prueba! - antes de cerrar sesión, en caso de que necesite volver y arreglar algo.
Recomiendo leer información sobre cómo funciona PAM para que sepa qué hacer si se rompe. También recomiendo que la mayoría de los usuarios aborden este problema desde un ángulo diferente (creando una cuenta de usuario separada para la administración) porque la solución puede ser susceptible a ataques de tabla hash en su contraseña si no ha configurado sus permisos correctamente.
Si está decidido a continuar, deberá instalar un nuevo módulo PAM. pam_pwdfile utiliza el archivo de tipo antiguo / etc / passwd para la autenticación, que es excelente para usar diferentes contraseñas para diferentes servicios. No proporciona reconocimiento de cuenta: puede crear pares de nombre de usuario / contraseña para usuarios que no existen en el sistema. Como lo usaremos para sudo, no importa, ya que solo dejaremos que sudo verifique que la cuenta exista de la manera habitual.
También recomiendo tomar un práctico editor de archivos htpasswd. Benjamin Schweizer ha creado un práctico editor en Python que funciona bien. Tómelo de http://benjamin-schweizer.de/htpasswd_editor.html e instale su dependencia:
Genere un archivo de formato htpasswd con la herramienta -
sudo python htpasswd_editor sudo.passwd
. Ingrese un nombre de usuario y contraseña usando el mismo nombre de usuario que usará para sudo, uno para cada usuario que lo usará. Cópielo en un lugar seguro (cuando pruebo esto lo pongo en /etc/sudo.passwd) y lo hago ilegible para los usuarios normales:chmod 660 /etc/sudo.passwd
como root.Asegúrese de que el archivo sea propiedad de root e ilegible para otros usuarios. Esta es una vulnerabilidad ya que el archivo contiene una contraseña cifrada, y si otros usuarios pueden leerla o escribirla, se rompe su seguridad. Es por esta razón que no recomiendo este método en una máquina que debe mantenerse segura.
Finalmente, edite el
/etc/pam.d/sudo
archivo. Agregue la siguiente línea sobre las otras@include ...
líneas:Obviamente reemplazando el último argumento con la ruta al archivo htpasswd generado. Comente la siguiente línea:
#@include common-auth
para asegurarse de que está utilizando el nuevo método de autenticación.Advertencia : deberá editar el
/etc/pam.d/sudo
archivo desde un terminal raíz. ¡No cierre esto sin probarlo! Si lo hace, es posible que no pueda volver a iniciar sesión (si ha roto algo) y tendría que iniciar desde un disco de recuperación para reparar su sistema. Pruebe antes de cerrar sesión abriendo una nueva terminal e intente usarsudo
. Debería descubrir que ya no funcionará con su contraseña de inicio de sesión habitual, sino que requiere la nueva contraseña que utilizó cuando generó el archivo passwd. Para actualizar el archivo, use la herramienta útil nuevamente.fuente
Hay una solución mucho más simple a la pregunta original y es la forma en que ejecuto:
Siempre inicie sesión como usuario no administrador y siempre que el usuario no administrador deba hacer algo para "administrar", simplemente:
Sí, no es lo que quieres pero es lo que realmente necesitas
fuente