Я прочитал описание этих команд из книги,
passwd:
Изменяет пароль для существующего пользователя.
chpasswd:
Читает файл пар имени пользователя и пароля и обновляет пароли.
Кажется, эти команды выполняют одну и ту же работу. Есть ли разница между ними?
РЕДАКТИРОВАТЬ:
Я хочу узнать, когда мы их используем, какие файлы меняются. Они меняют один и тот же файл или другой файл? Если они меняют разные файлы, что они?
linux
command-line
metarose
источник
источник
/etc/password
содержит информацию об учетной записи пользователя./etc/shadow
содержит зашифрованные пароли. Я считаю, что это единственные файлы, которые имеют отношение к делу. Вы можете изменить пароль, отредактировав эти файлы вручную, но это будет очень неудобно.Ответы:
От
man chpasswd
:«Эта команда предназначена для использования в большой системной среде, где одновременно создается много учетных записей».
passwd
(по моему опыту) обычно используется в интерактивном режиме для одного пользователя.источник
Смотрите справочные страницы для них обоих:
источник
В двух словах:
passwd
проверяет, подключен ли STDIN (дескриптор файла 0) к терминалу, используяisatty(0)
. Если нет,passwd
выручил бы, т.е. вы можете работать только вpasswd
интерактивном режиме.chpasswd
с другой стороны, он предназначен для чтения (имя пользователя и) пароля из STDIN и называется пакетным режимом (создает / обновляет несколько учетных данных пользователя одновременно). Он считывает пароль (и) (по умолчанию в открытом тексте) и имя пользователя (ов) из STDIN, заданные в форматеuser_name:password
, с новой строкой, разделяющей записиисточник
Я обнаружил, что хотя
работает для некоторых ОС, но некоторые ОС, такие как debian9,10, будут показывать ошибку,
can not connect to /var/run/nscd/socket
так как они используют /etc/nsswitch.conf, чтобы определить, где хранится пароль.С другой стороны,
passwd
команда, кажется, не нуждается в интерактивной оболочке,у меня работает как на физическом хосте, так и в контейнере, для разных ОС (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)
источник