o que o `adduser --disabled-login` faz?


16

Um documento de instalação que estou seguindo instrui para adicionar um usuário assim:

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

A --disabled-loginbandeira está ausente na maioria das páginas de manual que pesquisei.

Eu criei dois usuários, um com o --disabled-login( foo) e outro sem ( git).

Tanto quanto posso dizer, a --disabled-loginbandeira não faz nada. Ainda posso supara os dois usuários, e ambos usam /bin/bashcomo shell de logon.

A única diferença que vejo é que getent passwdhá vírgulas extras antes da pasta pessoal do usuário com o login desativado. Não há documentação que eu possa encontrar para indicar o que isso significaria.

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

ATUALIZAÇÃO # 1

Eu encontrei outra diferença, um usuário tem uma *como senha e o outro tem !:

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

O que exatamente faz --disabled-loginno Ubuntu?


Para o registro, as vírgulas extras separam os campos do campo "gecos": nome completo, número da sala, telefone comercial, telefone residencial. Não sei por que eles estariam presentes em uma versão e não na outra. Você pode encontrar documentação sobre isso na página de manual da chfnferramenta.
usar o seguinte comando

Isso faz sentido. Eu escolhi acidentalmente 'y' quando solicitado a inserir essas informações quando adicionei um dos usuários. O outro usuário foi adicionado através do fantoche.
Spuder # 21/13

Respostas:


17

A explicação não está bem documentada.

--disabled-login define a senha para !

Valores de senha

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

Exemplos

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 brevemente cobre este. Parece que * e! efetivamente faça a mesma coisa; impedir que o usuário efetue login (mas não su'ing de outro usuário)


3

É parcialmente discutido aqui na shadowpágina do manual.

excerto

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

Dependendo da sua versão da página de manual, adduserela é referenciada lá.

página de manual adduser trecho

--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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.