Вопрос

Хорошо, так что мой вопрос простой, но я вроде новичок в C, и я надеялся, что кто-то может помочь мне. Я хочу перейти на другой пользователь в C. Например, я знаю пароль пользователя, и если типы пользователей :./Change User1 это будет изменено на пользователя1. Я знаю, что это может быть проблемой безопасности прямо сейчас, но я не беспокоюсь о безопасности в данный момент.

Это было полезно?

Решение

Вы захотите использовать setuid, который можно найти в unistd.h Так что он доступен на POSIX Systems (так что любой Linux / Unix Falvour должен быть в порядке)

С страницы человека

Если этот процесс имеет соответствующие привилегии, SETUID () должен устанавливать реальный идентификатор пользователя, эффективный идентификатор пользователя и сохраненный идентификатор SET-user-идентификатор вызывающего процесса для UID.

Если процесс не имеет соответствующих привилегий, но UID равен реальному идентификатору пользователя или сохраненного ID пользователя SETUID (), должен устанавливать эффективный идентификатор пользователя для UID; Реальный идентификатор пользователя и сохраненный набор-идентификатор пользователя должен оставаться без изменений.

Функция SETUID () не должна влиять на список дополнительных групповых групп.

Вот АН пример

Другие советы

Позвонить su двоичный (например, через system() или комбинация fork() и один из exec Функции), которые знают обо всех тонкостях изменяющихся учетных данных, как UNIX-общепринятых, так и в вашей конкретной ОС. Терминал передается и продолжает принадлежать исходному пользователю.

Некоторые из этих тонкостей не обрабатываются простым setuid() Вызов - это группы, отключение учетной записи и ограничения ресурсов.

Если это просто для удовольствия, setuid() предшествует setgid() а также initgroups() вероятно, будет достаточно для вас.

Вы должны выяснить UID, используя getpwuid (). Отказ Послесловия вы должны установить UID в вашей программе с setuid () сопровождаемый приложением / функцией, которую вы намерены работать с этими новыми правами, например, оболочкой. Начать приложение с ток UID использует система().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top