Запустите pty, запрашивая учетные данные

Я работал над программой на C ++, которая разветвляет pty. Все идет хорошо, за исключением одного: когда root запускает программу, pty входит в систему как пользователь root. Таким же образом, если пользователь ‘x’ запускает программу, новый pty входит в систему как пользователь ‘x’.
Как он может запустить pty, запрашивая учетные данные пользователя и войти в систему? я знаю, что делает ssh или pty1 (ctr + alt + 1).

РЕДАКТИРОВАТЬ: Здесь, как я вилка Pty
http://pastebin.com/3vLQynz2

1

Решение

Чтобы иметь возможность запускать что-то от имени другого пользователя, вы должны иметь право изменить uid (man setuid). Обычно вы можете сделать это только как пользователь root.

Поэтому, если вы хотите реализовать что-то вроде этого, либо ваша программа должна запускаться от имени suid root, либо вам нужно использовать другой исполняемый файл, который называется suid root. Например, вы можете спросить пользователя, каким пользователем он хочет быть. Тогда беги /bin/su спросить у пользователя его пароль.

Кстати: упомянутый бинарный /bin/login будет работать, только если вы уже работали от имени пользователя root.

1

Другие решения


По вопросам рекламы [email protected]