что делает `adduser --disabled-login`?

16

Установочный документ, которому я следую, дает указание добавить пользователя следующим образом:

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

--disabled-loginФлаг отсутствует большинство страниц руководства я искал.

Я сделал двух пользователей, один с --disabled-login( foo), а другой без ( git).

Насколько я могу судить, --disabled-loginфлаг ничего не делает. Я могу по-прежнему suдля обоих пользователей, и оба использовать в /bin/bashкачестве оболочки входа в систему.

Единственное отличие, которое я вижу, - getent passwdдополнительные запятые перед домашней папкой пользователя, у которого отключен вход в систему. Там нет никакой документации , что я могу найти , чтобы указать , что это будет означать.

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

ОБНОВЛЕНИЕ № 1

Я обнаружил еще одно отличие: у одного пользователя *пароль, а у другого !:

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

Что именно делает --disabled-loginна Ubuntu?

spuder
источник
Для записи дополнительные запятые разделяют поля в поле «gecos»: полное имя, номер комнаты, рабочий телефон, домашний телефон. Я не знаю, почему они будут присутствовать в одной версии, а не в другой. Вы можете найти документацию по этому вопросу на странице руководства chfnинструмента.
Random832
Это имеет смысл. Я случайно выбрал «y», когда мне предложили ввести эту информацию, когда я добавил одного из пользователей. Другой пользователь был добавлен через Puppet.
spuder

Ответы:

17

Объяснение не очень хорошо документировано.

--disabled-login устанавливает пароль на !

Значения пароля

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

Примеры

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::::::

Википедия кратко описывает это. Похоже, что * и! эффективно делать то же самое; запретить пользователю входить в систему (но не получать права от другого пользователя)

spuder
источник
3

Это частично обсуждается здесь, на shadowстранице руководства .

выдержка

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

В зависимости от вашей версии adduserсправочной страницы на нее есть ссылки.

Отрывок страница людей 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.
SLM
источник