Jalankan adduser secara non-interaktif

198

Saya ingin menggunakan adduserperintah untuk menambahkan pengguna (dengan kata sandi yang dinonaktifkan) melalui skrip shell.

Secara default, addusermeminta Anda untuk berbagai nilai (misalnya, Nama Lengkap). Apakah ada cara untuk mengirimkan nilai-nilai ini melalui baris perintah? Atau apakah saya perlu melakukannya useradd?

Lorin Hochstein
sumber

Jawaban:

262

Gunakan --gecosopsi untuk melewati bagian chfninteraktif.

adduser --disabled-password --gecos "" username

Semuanya ada di halaman manual. Bukan formulasi yang paling jelas.

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will
          not ask for finger information if this option is given.

Kolom GECOS adalah daftar yang dipisahkan koma seperti itu:, Full name,Room number,Work phone,Home phonemeskipun halaman manual itu menyebutkan finger information Detail - Wikipedia

Semoga ini bisa membantu Anda.

Zoke
sumber
41

useradd juga dapat menambahkan pengguna dan tampaknya tidak memiliki bentuk bisikan apa pun.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Buat direktori home pengguna
  • -p, --password: Tentukan kata sandi pengguna; lewati untuk menonaktifkannya
  • -s, --shell: Shell default untuk pengguna logon

    Blank akan menggunakan shell login default yang ditentukan oleh SHELLvariabel dalam/etc/default/useradd

  • Ganti <user>dengan nama login
  • Pengganti <encryptedPassword>dengan kata sandi terenkripsi

Menghasilkan kata sandi hash:

Ada banyak implementasi crypt3 yang dapat menghasilkan kata sandi hash. Semuanya adalah kata sandi hash Anda.

Berbasis Sha-512

Format output yang dihasilkan: mekanisme hash ( $6untuk sha-512), garam acak (delapan byte setelah tanda dolar kedua $ASDF1234), sisanya adalah payload.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswddisediakan oleh whoispaket)

Berbasis DES:

Format output yang dihasilkan: 2 byte pertama adalah garam Anda, sisanya adalah payload. Semuanya adalah kata sandi hash Anda.

  • mkpasswd: mkpasswd(disediakan oleh whoispaket)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • python: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
sumber
1
Opsi yang Anda sebutkan tidak ada untuk adduserversi Ubuntu saya (terbaru).
ᴠɪɴᴄᴇɴᴛ
1
@ distinct adduserberbeda dari useradd, membingungkan saya tahu.
ThorSummoner
1
Ups, memang terlewat bahwa Anda menggunakan namanya hampir sama ... bukankah ada BDFL yang melindungi namespace baris perintah? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 Ini hanya saran umum, coba tambahkan -vatau -vvatau -vvvke perintah ssh Anda untuk melihat apa yang salah dan cari pesan kesalahan Anda di sini di SO atau Google.
ThorSummoner
1
@KovacsAkos coba ini: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configdansudo service ssh restart
JSBach