was macht `adduser --disabled-login`

16

Ein Installationsdokument, dem ich folge, weist an, einen Benutzer wie folgt hinzuzufügen:

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

Die --disabled-loginFlagge fehlt in den meisten von mir durchsuchten Manpages.

Ich habe zwei Benutzer erstellt, einen mit --disabled-login( foo) und einen ohne ( git).

Soweit ich das --disabled-loginbeurteilen kann tut die Flagge nichts. Ich kann immer noch subeide Benutzer und beide /bin/bashals Login-Shell verwenden.

Der einzige Unterschied, den ich sehen kann, sind getent passwdzusätzliche Kommas vor dem Basisordner des Benutzers, für den die Anmeldung deaktiviert ist. Es gibt keine Dokumentation , die mir Aufschluss darüber gibt, was dies bedeuten würde.

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

UPDATE # 1

Ich habe einen weiteren Unterschied festgestellt: Ein Benutzer hat ein *Kennwort als Kennwort, der andere hat Folgendes !:

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

Was genau macht --disabled-loginUbuntu?

Spuder
quelle
In diesem Fall trennen die zusätzlichen Kommas die Felder im Feld "gecos": vollständiger Name, Zimmernummer, Arbeitstelefon, Haustelefon. Ich weiß nicht, warum sie in der einen Version und nicht in der anderen vorhanden sein würden. Dokumentation hierzu finden Sie in der Manpage des chfnTools.
Random832
Das macht Sinn. Ich habe versehentlich "y" gewählt, als ich aufgefordert wurde, diese Informationen einzugeben, als ich einen der Benutzer hinzugefügt habe. Der andere Benutzer wurde durch Marionette hinzugefügt.
Spuder

Antworten:

17

Die Erklärung ist nicht gut dokumentiert.

--disabled-login setzt das Passwort auf !

Kennwortwerte

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

Beispiele

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 behandelt dies kurz. Es scheint, dass * und! effektiv das gleiche tun; verhindern, dass sich der Benutzer anmeldet (aber nicht von einem anderen Benutzer verklagt wird)

Spuder
quelle
3

Es wird teilweise hier in der shadowManpage besprochen .

Auszug

$ 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.

Abhängig von Ihrer Version der Manpage, auf adduserdie dort verwiesen wird.

Auszug Adduser Manpage

--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.
slm
quelle