Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Менять пароль пользователя в ходе выполнения скрипта

#c #users #freebsd


Доброго времени суток, у меня стоит интересная задачка в ходе корой мне необходимо
менять пароль пользователя в ходе выполнения скрипта. Из всего что я знаю о фряхе я
остановился на команде passwd, но так как она получает пароль только при вводе, пытался
вызвать ее через popen и в поток забить новый пасс, но увы ничего не удалось...
P.S. по факту мне нужно создать пользователя, но команда pw не принимает пароль,
насколько я понял. и связи с этим приходится искать решение выше указанного геморроя    


Ответы

Ответ 1



Думаю, man 3 forkpty это то, что Вам нужно. Там через псевдотерминал (pty) надо работать. В принципе, не очень сложно написать некий двунаправленный аналог popen() на псевдотерминале вместо pipe. Например, expect делает так в spawn. Например, можно почитать здесь. Или покороче здесь. Идея в том, что Вы делаете псевдотерминал (это как бы связка из двух устройств -- master и slave (ведет себя аналогично обычному tty)), делаете fork и там dup дескрипторов 0,1,2 на slave, после exec passwd она считает, что работает с терминалом. Родительский процесс обменивается байтиками по master. ответ составлен из комментариев, написанных avp к вопросу.

Комментариев нет:

Отправить комментарий