2013-03-06 3 views
3

Я запустил программу с использованием root, в которой я назвал функцию setuid для uid 9999999, после чего он успешно устанавливает этот uid, даже если он не существует в/etc/passwd. Итак, как setuid проверяет uid и каково влияние установки этого инвалидного uid?setuid устанавливает большое число

ответ

1

setuid обычно не подтверждает ничего, если у вас есть достаточные разрешения для его выполнения (т. Е. Если вы root). Он просто устанавливает UID на запрашиваемый, независимо от того, связано ли имя пользователя с этим UID в /etc/passwd или в другом месте.

(По POSIX, может не сработать с EINVAL если UID является недействительным, но ароматы Unix, что я не знаю, не делают этого.)

+0

Итак, перед установкой uid нам нужно проверить с помощью/etc/passwd? что может повлиять на установку неправильных uids. И каково будет поведение процесса. –

+0

@sonutiwari: нужно ли проверять, зависит от того, чего вы пытаетесь достичь. В первую очередь это связано с тем, что вы создаете файлы и запускаете процессы, не принадлежащие какой-либо учетной записи, а с помощью числового UID. –

2

setuid не проверяет идентификатор пользователя, только что процесс имеет привилегии его установить.

Система не заботится о том, что у пользователя нет записи в /etc/passwd; вы можете, например, иметь файлы, принадлежащие любому идентификатору пользователя, даже если с ним нет «реального» пользователя.

Смежные вопросы