Я пытаюсь изменить пароль для пользователя foo с панелью пользователя, вызвав команду оболочки. Но у меня есть некоторые проблемы.
Я могу сделать это, чтобы отправить пароль на sudo
$ echo sudopw | sudo -S ls
И это, чтобы изменить пароль:
$ echo foo:newpw | sudo chpasswd
[sudo] password for bar: sudopw
Это меняет пароль для пользователя foo на newpw,но это заставляет меня вводить пароль sudo вручную.
Проблема в том, что я не вижу, как объединить эти вещи. Я попробовал это, но это не работает:
$ echo sudopw | sudo -S echo foo:newpw | chpasswd
chpasswd: Permission denied.
chpasswd: cannot lock /etc/passwd; try again later.
[sudo] password for bar: [bar@host]$
Мне удалось сделать это так:
echo sudopw | echo -e "newpw\nnewpw" | sudo passwd dummy
Но когда я попробовал это так, он снова запрашивает пароль.
os.system('echo sudopw | echo -e "newpw\nnewpw" | sudo passwd dummy')
Я нашел множество ответов о том, как отправить пароль на sudo <cmd>
, где cmd не требует никакого дополнительного ввода. Но я действительно не могу решить ситуацию, когда ОБА отправляет ввод в cmd И отправляет пароль в sudo из сценария python.