Przeczytałem opis tych poleceń z książki
passwd:
Zmienia hasło dla istniejącego użytkownika.
chpasswd:
Odczytuje plik par nazwy użytkownika i hasła oraz aktualizuje hasła.
Wygląda na to, że te polecenia wykonują te same zadania. Czy jest między nimi jakaś różnica?
EDYTOWAĆ:
Chcę się dowiedzieć, kiedy ich używamy, które pliki zmieniają się. Czy zmieniają ten sam plik czy inny plik? Jeśli zmieniają różne pliki, czym one są?
linux
command-line
metaroza
źródło
źródło
/etc/password
zawiera informacje o koncie użytkownika./etc/shadow
zawiera zaszyfrowane hasła. Uważam, że są to jedyne istotne pliki. Możesz zmienić hasło ręcznie edytując te pliki, ale byłoby to bardzo niewygodne.Odpowiedzi:
Od
man chpasswd
:„To polecenie jest przeznaczone do użycia w dużym środowisku systemowym, w którym wiele kont jest tworzonych jednocześnie”.
passwd
jest (z mojego doświadczenia) zwykle używany interaktywnie dla jednego użytkownika.źródło
Zobacz strony podręcznika dla obu z nich:
źródło
W skrócie:
passwd
sprawdza, czy STDIN (deskryptor pliku 0) jest dołączony do terminala, używającisatty(0)
. Jeśli nie,passwd
wyskoczy, tzn. Możesz pracować tylkopasswd
interaktywniechpasswd
, z drugiej strony, jest przeznaczony do odczytu (nazwy użytkownika i) hasła ze STDIN i nazywa się trybem wsadowym (tworzy / aktualizuje wiele poświadczeń użytkownika jednocześnie). Odczytuje hasło (domyślnie zwykły tekst) i nazwy użytkownika ze STDIN, podane w formacieuser_name:password
, z nową linią oddzielającą wpisyźródło
Chociaż to znalazłem
działa dla niektórych systemów operacyjnych, ale niektóre systemy operacyjne, takie jak debian9,10, będą wyświetlać błąd,
can not connect to /var/run/nscd/socket
ponieważ używają /etc/nsswitch.conf do określenia miejsca przechowywania hasła.Z drugiej strony
passwd
wydaje się , że polecenie nie wymaga interaktywnej powłoki,działa dla mnie zarówno w fizycznym hoście, jak i kontenerze, dla różnych systemów operacyjnych (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)
źródło