
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/sudo
para usar un módulo diferente (o adicional), que a primera vista pam_dialpass
podrí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 :NOPASSWD
en 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 rudo
grupo), inicie sesión en el rudo
grupo, momento en el que se le solicitará la contraseña.
login user
newgrp rudo
Ahora puedes ejecutar sudo
sin 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
. runaspw
está asociado con la runas_default
opción, por lo que también debe agregar esa opción.
Suponiendo que ya tiene la %sudo
entrada 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 sudo
usuario 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 sudo
así 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.