Яка різниця між 'passwd' та 'chpasswd'?


14

Я читав опис цієї команди з книги,
passwd:

Змінює пароль для існуючого користувача.

chpasswd:

Читає файл імені для входу та пари паролів та оновлює паролі.

Здається, ці команди виконують ту саму роботу. Чи є різниця між ними?

Редагувати:

Я хочу дізнатися, коли ми використовуємо їх, який файл (и) змінюються. Чи змінюють вони один і той же файл чи інший файл? Якщо вони змінюють різні файли, що вони?


2
/etc/passwordмістить інформацію облікового запису користувача. /etc/shadowмістить зашифровані паролі. Я вважаю, що це єдині актуальні файли. Ви можете змінити пароль, вручну редагуючи ці файли, але це було б дуже незручно.
SauceCode

Відповіді:


18

Від man chpasswd:

"Ця команда призначена для використання у великому системному середовищі, де багато облікових записів створюються одночасно."

passwd зазвичай (на мій досвід) зазвичай використовується інтерактивно для одного користувача.


7

Перегляньте основні сторінки для обох:

ІМ’Я

    chpasswd - оновлення паролів у пакетному режимі

СИНОПИС

    chpasswd [параметри]

ОПИС

    chpasswdКоманда зчитує список імен користувачів і паролі пара зі стандартного вводу і використовує цю інформацію для оновлення групи існуючих користувачів. Кожен рядок має такий формат:

       Ім'я користувача Пароль


ІМ’Я

    passwd - зміна пароля користувача

СИНОПИС

    passwd [параметри] [ВХОД]

ОПИС

    passwdКоманда змінює паролі для облікових записів користувачів. Звичайний користувач може змінити пароль лише для свого власного акаунта, тоді як суперпользователь може змінити пароль для будь-якого облікового запису.  passwdтакож змінює обліковий запис або пов'язаний з ним термін дії пароля.


7

Коротко:

  • passwdперевіряє, чи STDIN (дескриптор файлу 0) приєднаний до терміналу, використовуючи isatty(0). Якщо ні, passwdвикупите, тобто ви можете працювати лише з passwdінтерактивною діяльністю

  • chpasswdз іншого боку, призначений для читання (ім'я користувача та) пароля зі STDIN, і називається пакетним режимом (створює / оновлює декілька облікових даних користувачів одночасно). Він читає пароль (и) (чистий текст за замовчуванням) та ім'я користувача (ів) від STDIN, наведені у форматі user_name:password, з новою рядком, що розділяє записи


0

Я виявив, що хоча

echo user:password | chpasswd

працює для деяких ОС, але деякі ОС, такі як debian9,10, покажуть помилку, can not connect to /var/run/nscd/socketоскільки вона використовує /etc/nsswitch.conf для визначення місця зберігання пароля.

З іншого боку, passwdкоманда, здається, не потребує інтерактивної оболонки,

(echo user; echo password) | passwd

працює для мене як у фізичному хості, так і в контейнері, для різних ОС (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.