¿Qué hace `adduser --disabled-login`?


16

Un documento de instalación que estoy siguiendo da instrucciones para agregar un usuario así:

sudo adduser --disabled-login --gecos 'GitLab' git

La --disabled-loginbandera está ausente en la mayoría de las páginas de manual que he buscado.

He creado dos usuarios, uno con --disabled-login( foo) y otro sin ( git).

Por lo que puedo decir, la --disabled-loginbandera no hace nada. Todavía puedo supara ambos usuarios, y ambos uso /bin/bashcomo su shell de inicio de sesión.

La única diferencia que puedo ver es que getent passwdtiene comas adicionales antes de la carpeta de inicio del usuario que tiene el inicio de sesión deshabilitado. No hay documentación que pueda encontrar para indicar lo que esto significaría.

root@gitlab:~# getent passwd git
git:x:998:998:GitLab:/home/git:/bin/bash  

root@gitlab:~# getent passwd foo
foo:x:1001:1002:GitLab,,,:/home/foo:/bin/bash

ACTUALIZACIÓN # 1

He encontrado otra diferencia, un usuario tiene una *contraseña, el otro tiene !:

root@gitlab:~# getent shadow git
git:*:15998::::::
root@gitlab:~# getent shadow foo
foo:!:15998:0:99999:7:::

¿Qué hace exactamente --disabled-loginen Ubuntu?


Para el registro, las comas adicionales separan los campos dentro del campo "gecos": nombre completo, número de habitación, teléfono del trabajo, teléfono de la casa. Sin embargo, no sé por qué estarían presentes en una versión y no en la otra. Puede encontrar documentación sobre esto en la página de manual de la chfnherramienta.
Random832

Eso tiene sentido. Accidentalmente elegí 'y' cuando se me solicitó ingresar esa información cuando agregué uno de los usuarios. El otro usuario fue agregado a través de la marioneta.
Spuder

Respuestas:


17

La explicación no está bien documentada.

--disabled-login establece la contraseña en !

Valores de contraseña

NP or null = The account has no password
*  = The account is deactivated & locked
!  = The login is deactivated, user will be unable to login
!!  = The password has expired

Ejemplos

root@gitlab:~# getent shadow vagrant
vagrant:$6$abcdefghijklmnopqrstuvwxyz/:15805:0:99999:7:::

root@gitlab:~# getent shadow foo
foo:!:15998:0:99999:7:::

root@gitlab:~# getent shadow git
git:*:15998::::::

Wikipedia lo cubre brevemente. Parece que * y! efectivamente hacer lo mismo; evitar que el usuario inicie sesión (pero no que lo haga un usuario diferente)


3

Se discute parcialmente aquí en la shadowpágina del manual.

extracto

$ man shadow
...
...
encrypted password
     Refer to crypt(3) for details on how this string is interpreted.

     If the password field contains some string that is not a valid result of 
     crypt(3), for instance ! or *, the user will not be able to use a unix
     password to log in (but the user may log in the system by other means).

     This field may be empty, in which case no passwords are required to 
     authenticate as the specified login name. However, some applications which
     read the /etc/shadow file may decide not to permit any access at all if the
     password field is empty.

     A password field which starts with a exclamation mark means that the 
     password is locked. The remaining characters on the line represent the 
     password field before the password was locked.

Dependiendo de su versión de la página de manual para adduserque se haga referencia allí.

extracto de la página del manual adduser

--disabled-login
       Do  not  run passwd to set the password.  The user won't be able
       to use her account until the password is set.

--disabled-password
       Like --disabled-login, but logins are still possible (for  exam-
       ple using SSH RSA keys) but not using password authentication.
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.