Uruchom adduser w sposób nieinteraktywny

198

Chciałbym użyć adduserpolecenia, aby dodać użytkownika (z wyłączonym hasłem) za pomocą skryptu powłoki.

Domyślnie addusermonituje o podanie różnych wartości (np. Pełna nazwa). Czy istnieje sposób przesłania tych wartości za pomocą wiersza polecenia? Czy będę musiał useraddzamiast tego?

Lorin Hochstein
źródło

Odpowiedzi:

262

Użyj --gecosopcji, aby pominąć chfnczęść interaktywną.

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

Wszystko na stronie podręcznika. Nie jest to najbardziej oczywiste sformułowanie.

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

Pole GECOS jest listą oddzieloną przecinkami jako taką: Full name,Room number,Work phone,Home phonepomimo tego strona podręcznika wspomina o finger information szczegółach - Wikipedia

Mam nadzieję, że to ci pomoże.

Zoke
źródło
41

useradd może również dodawać użytkowników i nie wydaje się, aby zawierało jakąkolwiek formę monitowania.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Utwórz katalog domowy użytkownika
  • -p, --password: Określ hasło użytkownika; pomiń, aby go wyłączyć
  • -s, --shell: Domyślna powłoka dla użytkownika logowania

    Blank użyje domyślnej powłoki logowania określonej przez SHELLzmienną w/etc/default/useradd

  • Zastąp <user>z nazwą logowania
  • Podstawić <encryptedPassword>z zaszyfrowanym hasłem

Generowanie zaszyfrowanego hasła:

Istnieje wiele implementacji crypt3, które mogą generować zaszyfrowane hasło. Całe to jest twoje zaszyfrowane hasło.

Na bazie Sha-512

Wynikowy format wyjściowy: mechanizm mieszania ( $6dla sha-512), losowa sól (osiem bajtów po drugim znaku dolara $ASDF1234), reszta to ładunek.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdzapewnia whoispakiet)

Oparte na DES:

Wynikowy format wyjściowy: pierwsze 2 bajty to twoja sól, reszta to ładunek. Całe to jest twoje hashowane hasło.

  • mkpasswd: mkpasswd(dostarczone przez whoispakiet)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • pyton: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
źródło
1
Opcje, o których wspomniałeś, nie istnieją adduserw mojej (najnowszej) wersji Ubuntu.
ᴠɪɴᴄᴇɴᴛ
1
@ ᴠɪɴᴄᴇɴᴛ adduserróżni się od useradd, myląc wiem.
ThorSummoner,
1
Ups, rzeczywiście przegapiłem użycie prawie imiennika… czy nie ma BDFL chroniącego przestrzeń nazw wiersza poleceń? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 To tylko ogólne porady, spróbuj dodać -vlub -vvlub -vvvdo poleceń twój ssh, aby zobaczyć co jest nie tak i poszukać wiadomości o błędach tutaj na SO lub Google.
ThorSummoner,
1
@KovacsAkos spróbuj tego: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configisudo service ssh restart
JSBach