Mam konkretny przypadek użycia, w którym naprawdę chciałbym móc zmienić hasło użytkownika za pomocą jednego polecenia bez interakcji. Odbywa się to w bezpieczny sposób (przez SSH i w systemie, w którym zalogowany może być tylko jeden użytkownik), więc w wierszu poleceń można udostępnić nowe hasło (a nawet stare, jeśli to konieczne). FWIW, to system Ubuntu.
Chcę tylko uniknąć dodawania czegoś podobnego do tego systemu dla tego jednego zadania.
ubuntu
command-line-interface
freebsd
password
Paul Hoffman
źródło
źródło
echo "newpassword" | pw usermod theusername -h 0
Odpowiedzi:
Możesz użyć chpasswd .
źródło
Możesz użyć
usermod
z-p
opcją zapewnienia skrótu hasła (nie rzeczywistego hasła). Możesz wygenerować skrót hasła za pomocą czegoś takiego jakmkpasswd -m sha-256
lubmkpasswd -m md5
źródło
usermod
: '(- Naprawię tagi w pytaniu.Pewnie.
sed
skrypt, który aktualizuje plik haseł Twojego systemu (/etc/shadow
,/etc/master.passwd
, co zdarza się).źródło
passwd
Narzędzie ma --stdin opcję, która stwierdza:Składnia:
Mimo że wspomniałeś, że cię to nie obchodzi, możesz umieścić hasło w pliku tekstowym, a następnie zrobić to
cat pass.txt
zamiast polecenia echo, w ten sposób nie pojawi się ono w historii bash.źródło
echo VerySecret | passwd --stdin username
--stdin
opcji dlapasswd
.--stdin
- głównie dlatego, że czeka na to wielka luka bezpieczeństwa :-)echo "newpass" | passwd --stdin user1
wiersz spacją; w ten sposób w ogóle nie przejdzie do historii bashów.Jeśli
--stdin
opcja nie działa, możemy w zasadzie użyć dwóch opcji:chpaswd
w twoim skrypcie.echo "current_password\nnew_password\nnew_password" | passwd user_name
źródło