Esta pregunta mencionó originalmente passwd --delete <username>
que no es seguro : con eso, el campo de contraseña encriptada /etc/shadow
estará completamente vacío.
username::...
Si ha configurado su sshd
para rechazar la autenticación de contraseña, entonces eso es seguro con SSH ... Pero si cualquier otro servicio en su sistema usa autenticación de contraseña y no está configurado para rechazar contraseñas nulas, ¡esto permite el acceso sin contraseña! No quieres esto.
adduser --disabled-passwd
producirá una /etc/shadow
entrada donde el campo de contraseña cifrada es solo un asterisco, es decir
username:*:...
Esta es "una contraseña cifrada que nunca se puede ingresar con éxito", es decir, la cuenta es válida y técnicamente permite inicios de sesión, pero hace que la autenticación por contraseña sea imposible de tener éxito . Entonces, si tiene otros servicios basados en autenticación de contraseña en su servidor, este usuario está bloqueado.
Solo los métodos de autenticación que usan algo diferente a la contraseña de cuenta estándar (por ejemplo, las claves SSH) funcionarán para este usuario, para cualquier servicio que use los archivos de contraseña del sistema en este sistema. Cuando necesite un usuario que pueda iniciar sesión solo con claves SSH, esto es lo que desea.
Si necesita establecer una cuenta existente en este estado, puede usar este comando:
echo 'username:*' | chpasswd -e
Hay un tercer valor especial para el campo de contraseña cifrada: adduser --disabled-login
el campo contendrá solo un signo de exclamación.
username:!:...
Al igual que el asterisco, esto hace que la autenticación de contraseña sea imposible de tener éxito, pero también tiene un significado adicional: marca la contraseña como "bloqueada" para algunas herramientas de administración. passwd -l
tiene el mismo efecto al prefijar el hash de contraseña existente con un signo de exclamación, lo que nuevamente hace que la autenticación de contraseña sea imposible de usar.
Pero aquí hay una trampa para los incautos: en el año 2008, la versión del passwd
comando que viene del shadow
paquete anterior se cambió para redefinir passwd -l
de "bloquear la cuenta" a "bloquear la contraseña". La razón indicada es "por compatibilidad con otra versión passwd".
Si usted (como yo) aprendió esto hace mucho tiempo, puede ser una sorpresa desagradable. Tampoco ayuda a asuntos que adduser(8)
aparentemente aún no conocen esta distinción.
La parte que desactiva la cuenta de todos los métodos de autenticación está realmente dando un valor de fecha de caducidad de 1 para la cuenta: usermod --expiredate 1 <username>
. Antes del año 2008, passwd -l
eso se origina en el shadow
kit de origen utilizado para hacer esto además de anteponer la contraseña con un signo de exclamación, pero ya no lo hace.
El registro de cambios del paquete Debian dice:
- debian / patches / 494_passwd_lock-no_account_lock: Restaura el comportamiento anterior de passwd -l (que cambió en # 389183): solo bloquea la contraseña del usuario, no la cuenta del usuario. Documente también explícitamente las diferencias. Esto restaura un comportamiento común con las versiones anteriores de passwd y con otras implementaciones. Cierra: # 492307
Los historiales de errores para Debian bug 492307 y bug 389183 pueden ser útiles para comprender el pensamiento detrás de esto.
sudo
acceder (ya sea por no tener permisos sudo en absoluto o por tener permisos sudo conNOPASSWD
), la respuesta que seleccionó debería ser adecuada. Envié una edición sobre esa respuesta para incluir la preocupación de sudo, pero pensé que te lo diría aquí mientras tanto.