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.


1
¿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:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

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.


Necesito correr en Ubuntu ¿Hay alguna otra manera?
Varun Sridharan

Actualicé la respuesta: he probado este método y hace lo que quiere, si he entendido su pregunta correctamente. Por favor pruebalo.
Aaron D

1
+50 recompensa. @AaronD tu respuesta resolvió mi pregunta . ¡¡¡Gracias!!!
Robbie Wxyz

¡Me alegra que lo hayas encontrado útil!
Aaron D

1

Hay una solución mucho más simple a la pregunta original y es la forma en que ejecuto:

  • crear un usuario no administrador
  • crear un usuario administrador

Siempre inicie sesión como usuario no administrador y siempre que el usuario no administrador deba hacer algo para "administrar", simplemente:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

Sí, no es lo que quieres pero es lo que realmente necesitas

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.