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

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

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?

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

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

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

Это частично обсуждается здесь на странице 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. 

В зависимости от вашей версии man-страницы для adduser это указано там.

excerpt adduser man page

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