У меня есть конкретный случай использования, когда я действительно хотел бы иметь возможность изменить пароль пользователя с помощью одной команды без интерактивности. Это делается безопасным способом (через SSH и в системе, в которой может быть авторизован только один пользователь), поэтому можно выставить новый пароль (и даже старый, если необходимо) в командной строке. FWIW, это система Ubuntu.
Я просто хочу избежать необходимости добавлять что-то похожее на Expect в эту систему только для одной этой задачи.
ubuntu
command-line-interface
freebsd
password
Пол Хоффман
источник
источник
echo "newpassword" | pw usermod theusername -h 0
Ответы:
Вы можете использовать chpasswd .
источник
Вы можете использовать
usermod
эту-p
опцию для предоставления хэша пароля (не фактического пароля). Вы можете создать хэш пароля, используя что-то вродеmkpasswd -m sha-256
илиmkpasswd -m md5
источник
usermod
: '(- Я исправлю теги в вопросе.Конечно.
sed
сценария , который обновляет файл паролей вашей системы (/etc/shadow
,/etc/master.passwd
, все , что случается).источник
passwd
Утилита имеет --stdin вариант , который гласит:Синтаксис:
Несмотря на то, что вы упомянули, что вам все равно, вы можете поместить пароль в текстовый файл, а затем
cat pass.txt
вместо команды echo сделать так, чтобы он не отображался в истории bash.источник
echo VerySecret | passwd --stdin username
--stdin
опции дляpasswd
.--stdin
- в основном потому, что это большая гигантская дыра в безопасности, ожидающаяecho "newpass" | passwd --stdin user1
строку с пробела; таким образом, это не пойдет в историю истории.Если
--stdin
опция не работает, мы можем использовать две опции:chpaswd
в вашем скрипте.echo "current_password\nnew_password\nnew_password" | passwd user_name
источник