Jak zmienić hasło za pomocą usermod?

10

Jestem superadminem serwera i lubię zmieniać hasło istniejącego użytkownika. Jak mogę to zrobić ?

próbowałem

usermod -p 'new-password' john

ale to nie zadziałało?

Pan Coder
źródło
najlepsza odpowiedź jest tutaj: askubuntu.com/a/80447/55435 , uwaga na sprawdzenie również komentarzy
ryenus

Odpowiedzi:

17

usermod -pFlag spodziewa dane być już hasło w postaci zaszyfrowanej.

Użyj, openssl passwdaby wygenerować zaszyfrowane dane, lub wykonaj następujące czynności:

usermod -p `openssl passwd` (USERNAME)
Rorik
źródło
openssl passwdoczekuje hasła od 0 do 10 znaków.
Onnonim
6

Powodem, dla którego nie działało, jest to, że usermodopcja -p oczekuje, że hasło zostanie już zaszyfrowane.

Ze usermodstrony podręcznika użytkownika:

 -p, --password PASSWORD
       The encrypted password, as returned by crypt(3).

Ustawienie hasła w ten sposób nie jest zalecane.

Zamiast tego powinieneś użyć passwd <username>. Powinno to (as usermod) być wykonane jako root (jeśli nie zmieniasz hasła aktualnie zalogowanego użytkownika).

Aby zmienić hasło użytkownika foo.

sudo passwd foo

Spowoduje to monit o nowe hasło.

Zajrzyj na stronę podręcznika, aby passwduzyskać więcej informacji na temat ustawiania np. Upływu czasu.

Powodzenia!

Zoke
źródło
6

Możesz użyć passwd:

sudo passwd USERNAME 

Nie musisz, sudojeśli sam jesteś superużytkownikiem

RiaD
źródło
sudowymagają hasła roota :)
Achu
@Achu: wymagane jest bieżące hasło użytkownika. Ale on jest superużytkownikiem.
RiaD
Co superuserreprezentuje?
Achu
3

Sposobem przypisania hasła za pomocą usermod (o co tak naprawdę poprosił OP) jest użycie crypt()zaszyfrowanego hasła dla -pargumentu.

SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""

Następnie użyj tego w usermod -pargumencie wiersza poleceń:

usermod -p ${HASH} john
Waldo Trout
źródło
2

Nieinteraktywna jednowierszowa komenda do zmiany hasła użytkownika:

sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john

usermod -pwymaga do działania szyfrowanego hasła. Pamiętaj, że new-passwordbędą widoczne dla użytkowników, którzy mogą wymienić procesy.

Benoy G.
źródło
2

Coś, co należy tutaj dodać, to: Ta metoda:

sudo usermod -p perl -e "print crypt("new-password","Q4")"John

oznacza, że ​​zadziała wiele bardzo podobnych haseł. Na przykład na serwerze Oracle Linux 7.4 i komputerze Ubuntu 17.10 rozważ:

sudo usermod -p perl -e "print crypt("borkling","Q4")"orabuntu

Teraz, jeśli:

su - orabuntu

przekonasz się, że DOWOLNE hasło zaczynające się od „borkling” będzie działać, np

borkling88 borklingjars

chociaż „borkline” nie będzie działać, ponieważ jak wspomniano wcześniej, każde hasło, które ma „borkling” jako prefiks, będzie również działać, gdy hasło zostanie ustawione w ten sposób.

Sposób na to, aby afaik nie miał tego niepożądanego efektu ubocznego, jest następujący:

(podziękowania dla „Sandeep” tutaj:
/programming/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script )

W systemach Linux RedHaty: (pomiń koło „-G”, jeśli nie chcesz, aby przyznano uprawnienia sudo)

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G wheel $ {NAZWA UŻYTKOWNIKA}

W systemach Linux Debiany (pomiń opcję -G sudo, jeśli nie chcesz uprawnień sudo):

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G sudo $ {NAZWA UŻYTKOWNIKA}

gstanden
źródło
1

Po prostu wpisz

passwd

W ten sposób normalny użytkownik może zmienić własne hasło bez uprawnień roota, jeśli go nie masz.

Achu
źródło