Führen Sie adduser nicht interaktiv aus

198

Ich möchte den adduserBefehl verwenden, um einen Benutzer (mit deaktiviertem Kennwort) über ein Shell-Skript hinzuzufügen.

Standardmäßig werden adduserSie zur Eingabe verschiedener Werte aufgefordert (z. B. Vollständiger Name). Gibt es eine Möglichkeit, diese Werte über die Befehlszeile zu übermitteln? Oder muss ich useraddstattdessen?

Lorin Hochstein
quelle

Antworten:

262

Verwenden Sie die --gecosOption, um den chfninteraktiven Teil zu überspringen .

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

Es ist alles in der Manpage. Nicht die naheliegendste Formulierung.

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

Das GECOS-Feld ist eine durch Kommas getrennte Liste: Full name,Room number,Work phone,Home phoneTrotzdem erwähnt die Manpage finger information Details - Wikipedia

Hoffe das hilft dir.

Zoke
quelle
41

useradd kann auch Benutzer hinzufügen und scheint keine eingebaute Eingabeaufforderung zu haben.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Benutzer-Ausgangsverzeichnis erstellen
  • -p, --password: Benutzerpasswort angeben; überspringen, um es zu deaktivieren
  • -s, --shell: Standard-Shell für angemeldeten Benutzer

    Leer verwendet die Standardanmeldeshell, die durch die SHELLVariable in angegeben wird/etc/default/useradd

  • Ersetzen Sie <user>durch den Anmeldenamen
  • Ersetzen Sie <encryptedPassword>mit dem verschlüsselten Passwort

Generieren eines Hash-Passworts:

Es gibt viele crypt3-Implementierungen, die ein Hash-Passwort generieren können. Das Ganze ist dein gehashtes Passwort.

Sha-512 basiert

Das resultierende Ausgabeformat: der Hash-Mechanismus ( $6für sha-512), das zufällige Salt (die acht Bytes nach dem zweiten Dollarzeichen $ASDF1234), der Rest ist die Nutzlast.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdwird vom whoisPaket bereitgestellt)

DES basiert:

Das resultierende Ausgabeformat: Die ersten 2 Bytes sind Ihr Salt, der Rest ist die Nutzlast. Das Ganze ist dein gehashtes Passwort.

  • mkpasswd: mkpasswd(im whoisPaket enthalten)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • Python: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
quelle
1
Die Optionen, die Sie erwähnen, existieren für addusermeine (aktuelle) Version von Ubuntu nicht.
22.
1
@ ᴠɪɴᴄᴇɴᴛ adduserunterscheidet sich von useradd, ich weiß verwirrend.
ThorSummoner
1
Hoppla, Sie haben in der Tat verpasst, dass Sie den Namensvetter verwenden. Gibt es nicht eine BDFL, die den Befehlszeilen-Namespace schützt? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 Dies ist nur allgemeine Beratung ist, versuchen Sie , -voder -vvoder -vvvzu Ihrer ssh - Befehle , was falsch und suchen Sie Ihre Fehlermeldungen hier auf SO oder Google zu sehen.
ThorSummoner
1
@KovacsAkos versuchen dies: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configundsudo service ssh restart
JSBach