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?

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.


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"))'

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.