Jak mogę przypisać początkowe / domyślne hasło do użytkownika w systemie Linux?


10

Znalazłem przewodnik, który wyjaśnia, jak ustawić hasło użytkownika . Próbuję to zautomatyzować i wysłać użytkownikowi wiadomość e-mail, np .:

userid created with password XYZ.
request to change the initial password.

Zgodnie z powyższym dokumentem za pomocą Pythona należy utworzyć zaszyfrowane hasło i podać je do usermodpolecenia w następujący sposób:

 usermod -p "<encrypted-password>" <username>

Czy istnieją inne prostsze sposoby na zrobienie tego? Nie chcę pobierać żadnego specjalnego narzędzia, aby to zrobić; należy go uogólnić w możliwie największym stopniu.


Edycja : Nawet metoda podana w powyższym linku wydaje się nie działać dla mnie:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

oto jeszcze jeden link, który znalazłem, ale wydaje się, że problem z bezpieczeństwem występuje również przy użyciu opcji -p, usermodgdy ktoś używa, psaby zobaczyć, że proces wyświetlania hasła jest widoczny
munish

Odpowiedzi:


13

Możesz chpasswdto zrobić w następujący sposób:

echo "username:newpassword" | chpasswd

Możesz podłączać się do chpasswdprogramów innych niż echo, jeśli jest to wygodne, ale to załatwi sprawę.

Edycja: Aby wygenerować hasło w skrypcie powłoki, a następnie je ustawić, możesz zrobić coś takiego:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

Aby uzyskać więcej informacji chpasswd, zobacz http://linux.die.net/man/8/chpasswd

(Polecenie wygenerowania hasła pochodziło z http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html )


dzięki @Dominick hmm, chpasswd jest może w systemie AIX ... nie korzystałem z niego. i zawsze muszę napisać hasło ... czy nie może zostać wygenerowane przez skrypt jak w linku do pytań ... niestety nawet to nie zadziałało
munish

@munish Nie jestem do końca pewien, co rozumiesz przez generowanie w skrypcie, ale zaktualizowałem swoją odpowiedź, aby, mam nadzieję, być bardziej pomocny.
Dominick Pastore,

Nie działa. „Błąd manipulacji tokenem uwierzytelniającym”
Cerin

@Cerin Czy przypadkiem robisz coś takiego sudo echo "username:newpass" | chpasswd? Ponieważ podwyższone uprawnienia sudonie przechodzą przez potok, więc chpasswddziałałby jako zwykły użytkownik. Można to naprawić, przesuwając sudo, jak w echo "username:newpass" | sudo chpasswd. Istnieją również inne problemy, które mogą powodować ten komunikat o błędzie, ale takie błędy uprawnień są prawdopodobnie najczęstsze.
Dominick Pastore,

1
Hasła w wierszu poleceń mogą być widoczne dla innych zalogowanych użytkowników na tym samym komputerze za pomocą w, ps lub innych poleceń wyświetlających informacje o innych procesach. Hasła ustawione w ten sposób powinny zostać jak najszybciej zmienione przez użytkownika.
Mnebuerquo

3

Możesz użyć OpenSSL do wygenerowania losowego hasła (w tym przypadku 16 znaków):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

Następnie podaj zaszyfrowane hasło do useraddlubusermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

Kredyt w wymaganym terminie: Generowanie hasła jest dostosowywane z podobnej metody, która wykorzystuje /dev/urandomzamiast openssl.


2

useradd powinien działać (zrobiłem to na Ubuntu). Może sprawdź, czy każdy z twoich argumentów jest poprawny (twoje grupy istnieją, ścieżka jest odpowiednia do bash). Możesz uruchomić polecenie, używając tylko hasła i użytkownika, a następnie użyj userdel, aby usunąć, a następnie ponów próbę z większą liczbą parametrów, aby zobaczyć, co powoduje problem (podejście z użyciem siły brutalnej).

Są też nowi użytkownicy (patrz strona podręcznika), przynajmniej pod Ubuntu, gdzie dajesz mu plik z plikiem passwd, takim jak info, w tym hasła w postaci zwykłego tekstu, i stworzy tych użytkowników. Dobry sposób na zrobienie wielu użytkowników jednocześnie.


+1 za wzmiankę o newuserspoleceniu dla Ubuntu
Levon

1

najprostszy sposób, w jaki znalazłem:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

Czy w ogóle to przetestowałeś? passwd: unrecognized option '--stdin'
Cerin

Tak, korzystałem z tego wiele razy, ale, jak w przypadku prawie każdego innego polecenia, nie jest to rozwiązanie defacto danego problemu. Niektóre odmiany pliku binarnego passwd, nie obsługują przełącznika --stdin.
MelBurslan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.