Muszę mieć możliwość tworzenia kont użytkowników w moim systemie Linux (Fedora 10) i automatycznego przypisywania hasła za pomocą skryptu bash (lub w razie potrzeby w inny sposób).
Łatwo jest utworzyć użytkownika za pomocą Bash, np .:
[whoever@server ]# /usr/sbin/useradd newuser
Czy można przypisać hasło w Bash, coś funkcjonalnie podobnego do tego, ale automatycznie:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
skryptu.Odpowiedzi:
Możesz uruchomić polecenie passwd i wysłać dane wejściowe w potoku. Więc zrób coś takiego:
źródło
echo
jest wbudowana w używaną powłokę, co zwykle jest), przynajmniej niepokojąca/proc/
.echo -e "password\npassword\n" | passwd
dniu 13.04echo 'myuser:mypass' | chpasswd
. Mam nadzieję, że to pomaga.Możesz także użyć chpasswd :
więc zmieniasz hasło użytkownika
username
nanew_password
.źródło
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, podczaspasswd
gdy nie (nie ma--stdin
opcji).Zadawałem sobie to samo i nie chciałem polegać na skrypcie Python.
Oto linia, w której użytkownik ma zdefiniowane hasło w jednym wierszu bash:
źródło
useradd -p $(openssl passwd -1 $PASS) $USER
jest bardziej nowoczesny, ponieważ tyknięcia wsteczne są przestarzałe i$()
jest zalecany.useradd -m -p <password> -s /bin/bash <user>
, -m katalog domowy Crates, -s określa defualt shell, zastępujepassword
iuser
dla twoich potrzeb.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Myślę, że jest to wymagane w późniejszych Ubuntu.Poniższy kod działał w Ubuntu 14.04. Wypróbuj, zanim użyjesz go w innych wersjach / wariantach systemu Linux.
źródło
--gecos
Podobało mi się podejście Tralemonkey,
echo thePassword | passwd theUsername --stdin
choć nie napisało się dla mnie. To jednak działało dla mnie.-e
rozpoznaje\n
jako nową linię.sudo
jest dostępem root do Ubuntu.Podwójne cudzysłowy mają na celu rozpoznanie
$
i rozwinięcie zmiennych.Powyższe polecenie przekazuje hasło i nowy wiersz dwa razy do
passwd
, co jestpasswd
wymagane.Jeśli nie używam zmiennych, myślę, że to prawdopodobnie działa.
Pojedyncze cytaty powinny tu wystarczyć.
źródło
Poniższe działa dla mnie i przetestowane na Ubuntu 14.04. Jest to jeden liniowiec, który nie wymaga wkładu użytkownika.
Zaczerpnięte z @Tralemonkey
źródło
Możesz użyć opcji -p.
Niestety wymaga to samodzielnego zaszyfrowania hasła (w przypadku, gdy robi to passwd). Niestety, wydaje się, że nie ma standardowego narzędzia do mieszania niektórych danych, więc musisz to napisać sam.
Oto mały skrypt w języku Python, który przygotowałem, aby wykonać dla Ciebie szyfrowanie. Zakładając, że nazwałeś to pcrypt, napiszesz powyższą linię poleceń do:
Kilka ostrzeżeń, o których należy pamiętać.
a oto pcrypt:
źródło
Pojedyncza linijka do stworzenia użytkownika sudo z katalogiem domowym i hasłem.
źródło
--stdin
nie działa na Debianie. To mówi:To działało dla mnie:
Tutaj możemy znaleźć inne dobre sposoby:
źródło
Możesz użyć expect w skrypcie bash.
Od http://www.seanodonnell.com/code/?id=21
źródło
Wiem, że przyjdę o te lata później, ale nie mogę uwierzyć, że nikt nie sugerował trybu użytkownika.
Do diabła, na wypadek, gdyby ktoś chciał to zrobić na starszym HPUX, którego możesz użyć
usermod.sam
.Opcja -F jest potrzebna tylko wtedy, gdy osoba wykonująca skrypt jest bieżącym użytkownikiem. Oczywiście nie musisz używać Perla do tworzenia skrótu. Zamiast tego możesz użyć openssl lub wielu innych poleceń.
źródło
Oto skrypt, który zrobi to za Ciebie .....
Możesz dodać listę użytkowników (lub tylko jednego użytkownika), jeśli chcesz, wszyscy za jednym razem i każdy będzie miał inne hasło. Jako bonus otrzymasz na końcu skryptu listę wszystkich haseł użytkowników. .... Jeśli chcesz, możesz dodać opcje konserwacji użytkownika
lubić:
do skryptu, który ustawi wiek hasła i tak dalej.
=======
===========
Mam nadzieję że to pomoże.
Pozdrawiam, Carel
źródło
Testowałem we własnym skrypcie powłoki.
$new_username
oznacza nowo utworzonego użytkownika$new_password
oznacza nowe hasłoDla CentOS
Dla Debiana / Ubuntu
Dla OpenSUSE
źródło
Rozwiązanie Tralemonkey również prawie dla mnie zadziałało ... ale nie całkiem. Skończyło się to tak:
2 kluczowe szczegóły, których jego rozwiązanie nie zawierało,
-n
utrzymuje echo przed dodaniem\n
do szyfrowanego hasła, a pojedyncze cudzysłowy chronią zawartość przed interpretacją przez powłokę (bash) w moim przypadku.BTW Uruchomiłem to polecenie jako root w systemie CentOS 5.6 na wypadek, gdyby ktoś się zastanawiał.
źródło
Rozwiązanie, które działa zarówno na Debianie, jak i na Red Hat. Zależy od perla, używa skrótów sha-512:
Stosowanie:
Można go skutecznie wykorzystać jako jedno-liniowy, ale musisz samodzielnie podać hasło, sól i nazwę użytkownika:
źródło
Z IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Utwórz plik tekstowy, powiedz text.txt i wypełnij go użytkownikiem: hasło paruje w następujący sposób:
Zapisz plik text.txt i uruchom
Otóż to. Rozwiązanie jest (a) skalowalne i (b) nie wymaga drukowania haseł w wierszu poleceń.
źródło
źródło
Dla RedHat / CentOS oto kod, który tworzy użytkownika, dodaje hasła i czyni go sudoer:
źródło
stosowanie:
./my_add_user.sh USER PASSWD
kod:
źródło