Contraseña de inicio de sesión/SSH diferente de la contraseña SUDO

Contraseña de inicio de sesión/SSH diferente de la contraseña SUDO

Me gustaría usar una contraseña diferente para elevar mi usuario al estado sudo que la contraseña que uso para iniciar sesión (ya sea a través de GUI, shell o SSH) en mi cuenta. es posible?

EDITAR: Dado que establecer la contraseña de root permitiría iniciar sesión como root, esta no es una buena manera de hacerlo. Preferiría una contraseña sudo específica del usuario, en lugar de una contraseña raíz para todo el sistema.

Respuesta1

de hombre sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

O simplemente podría prohibir completamente los inicios de sesión basados ​​en contraseña a través de ssh. Requerir una clave cifrada con frase de contraseña para el inicio de sesión remoto. Entonces eres libre de usar la contraseña para sudo. La opción relevante es

del hombre sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

Respuesta2

¿Estás buscando esto en sudoers man?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 

Respuesta3

¿Qué tal deshabilitar el inicio de sesión con contraseña a través de SSH y permitir el inicio de sesión con clave pública donde puede configurar su contraseña difícil de adivinar? Entonces la contraseña local puede ser más corta y utilizada por sudo.

Aparte de eso, tendrás que configurarlo /etc/pam.d/sudopara usar un módulo diferente (o adicional), que a primera vista pam_dialpasspodría permitir lo que necesitas.

También puede configurar la configuración LDAP para uno y las contraseñas locales para el otro. Todo dependerá de cuántos cambios puedas y estés dispuesto a hacer, qué módulos estén disponibles, etc.

Respuesta4

SOLUCIÓN 1: nuevo grupo

Una forma sencilla de abordar su caso de uso sería usarlo :NOPASSWDen combinación con un grupo y una contraseña de grupo:

Agregue una línea a sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Cree un grupo protegido con contraseña:

groupadd rudo
gpasswd  rudo # Enter passwd

Ahora, cuando inicie sesión como usuario sin privilegios (suponiendo que aún no esté en el rudogrupo), inicie sesión en el rudogrupo, momento en el que se le solicitará la contraseña.

login user
newgrp rudo

Ahora puedes ejecutar sudosin contraseña, siempre y cuando permanezcas conectado al grupo.


SOLUCIÓN 2: runaspw

Una forma mejor y posiblemente más segura de hacer esto utiliza runaspw. runaspwestá asociado con la runas_defaultopción, por lo que también debe agregar esa opción.

Suponiendo que ya tiene la %sudoentrada de grupo predeterminada:

%sudo   ALL=(ALL:ALL) ALL

agregue estas líneas al archivo sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Ahora agregue un nuevo sudousuario con una contraseña:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Ahora a los usuarios del grupo sudo se les solicitará la contraseña del usuario sudo, pero solo los usuarios del grupo sudo podrán hacerlo (a diferencia de la solución de grupo anterior, donde cualquier persona en el grupo o con la contraseña del grupo podría sudo).

Un problema menor es que el usuario runas predeterminado ahora es sudoasí que para sudo como root necesitas especificar explícitamente root:

sudo -u root <cmd>

Pero es bastante fácil definir un alias ( alias sudo='sudo -u root') o un comando sudo indirecto.

información relacionada