apa yang dilakukan `adduser --disabled-login`?

16

Dokumen instal yang saya ikuti diperintahkan untuk menambahkan pengguna seperti:

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

The --disabled-loginbendera tidak hadir dari sebagian besar halaman man Aku telah mencari.

Saya telah membuat dua pengguna, satu dengan --disabled-login( foo), dan satu tanpa ( git).

Sejauh yang saya tahu --disabled-loginbendera tidak melakukan apa-apa. Saya masih bisa suke kedua pengguna, dan keduanya menggunakan /bin/bashsebagai shell login mereka.

Satu-satunya perbedaan yang dapat saya lihat adalah getent passwdmemiliki koma ekstra sebelum folder home pada pengguna yang telah menonaktifkan login. Tidak ada dokumentasi yang dapat saya temukan untuk menunjukkan apa artinya ini.

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

PEMBARUAN # 1

Saya telah menemukan perbedaan lain, satu pengguna memiliki *kata sandi mereka, yang lain memiliki !:

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

Apa yang sebenarnya --disabled-logindilakukan di Ubuntu?

spuder
sumber
Sebagai catatan, koma ekstra memisahkan bidang dalam bidang "gecos": nama lengkap, nomor kamar, telepon kantor, telepon rumah. Saya tidak tahu mengapa mereka akan hadir dalam satu versi dan bukan yang lain sekalipun. Anda dapat menemukan dokumentasi tentang ini di halaman manual chfnalat ini.
Random832
Itu masuk akal. Saya tidak sengaja memilih 'y' ketika diminta untuk memasukkan informasi itu ketika saya menambahkan salah satu pengguna. Pengguna lain ditambahkan melalui boneka.
Pengamen

Jawaban:

17

Penjelasannya tidak didokumentasikan dengan baik.

--disabled-login mengatur kata sandi !

Nilai kata sandi

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

Contohnya

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 secara singkat membahas hal ini. Tampaknya * dan! secara efektif melakukan hal yang sama; mencegah pengguna untuk masuk (tetapi tidak menuntut dari pengguna lain)

spuder
sumber
3

Ini sebagian dibahas di sini di shadowhalaman manual.

kutipan

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

Bergantung pada versi halaman manual Anda untuk adduserreferensi di sana.

kutipan halaman 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.
slm
sumber