Esegui adduser in modo non interattivo


198

Vorrei usare il addusercomando per aggiungere un utente (con password disabilitata) tramite uno script shell.

Per impostazione predefinita, adduserrichiede vari valori (ad esempio, Nome completo). Esiste un modo per inviare questi valori dalla riga di comando? O dovrò useraddinvece farlo ?

Risposte:


262

Utilizzare l' --gecosopzione per saltare la chfnparte interattiva.

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

È tutto nella pagina man. Non è la formulazione più ovvia.

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

Il campo GECOS è un elenco separato da virgole in quanto tale Full name,Room number,Work phone,Home phone:, nonostante quella pagina man menzioni finger information Dettagli - Wikipedia

Spero che questo ti aiuti.


41

useradd può anche aggiungere utenti e non sembra avere alcun tipo di prompt integrato.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Crea la home directory dell'utente
  • -p, --password: Specifica la password dell'utente; saltare per disabilitarlo
  • -s, --shell: Shell predefinita per l'utente di accesso

    Vuoto utilizzerà la shell di accesso predefinita specificata dalla SHELLvariabile in/etc/default/useradd

  • Sostituisci <user>con il nome di accesso
  • Sostituire <encryptedPassword>con la password crittografata

Generazione di una password con hash:

Esistono molte implementazioni di crypt3 che possono generare una password con hash. Il tutto è la tua password con hash.

Basato su Sha-512

Il formato di output risultante: il meccanismo di hash ( $6per sha-512), il salt casuale (gli otto byte dopo il secondo simbolo del dollaro $ASDF1234), il resto è il payload.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdè fornito dal whoispacchetto)

Basato su DES:

Il formato di output risultante: i primi 2 byte sono il tuo sale, il resto è il payload. Il tutto è la tua password con hash.

  • mkpasswd: mkpasswd(fornito dal whoispacchetto)
  • OpenSSL: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • pitone: python3 -c 'import crypt; print(crypt.crypt("password"))'

1
Le opzioni che menzioni non esistono per la addusermia (recente) versione di Ubuntu.
ᴠɪɴᴄᴇɴᴛ

1
@ ᴠɪɴᴄᴇɴᴛ adduserè distinto useradd, confuso lo so.
ThorSummoner,

1
Oops, davvero perso il fatto che usi quasi il suo omonimo ... non c'è un BDFL che protegge lo spazio dei nomi della riga di comando? ; p
ᴠɪɴᴄᴇɴᴛ

1
@ mum007 Questo è solo un consiglio generale, prova ad aggiungere -vo -vvo -vvvai tuoi comandi ssh per vedere cosa c'è che non va e cerca i tuoi messaggi di errore qui su SO o Google.
ThorSummoner,

1
@KovacsAkos prova questo: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configesudo service ssh restart
JSBach il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.