2013-09-16 6 views
0

Я использую новую установку OpenBSD 5.3 в качестве гостевой ОС на Parallels для Mac:Почему не задан бит SUID в OpenBSD, установите эффективные и сохраненные UID для исполняемого файла?

$ uname -a 
OpenBSD openbsd.localdomain 5.3 GENERIC#53 amd64 

К моему удивлению, двоичный файл принадлежит корень с его SUID битом работает с UIDs, как если бы SUID был не задано. То есть, когда UID 1000 работает такая программа, программа запускается в состоянии:

<real_uid, effective_uid, saved_uid> = <1000, 1000, 1000> 

и не в состоянии:

<real_uid, effective_uid, saved_uid> = <1000, 0, 0> 

, как и ожидалось.

Почему это так?

Вот подробности относительно того, как я нашел проблему:

Я написал интерактивную программу C (скомпилированную как setuid_min.bin) для оценки Setuid поведения в различных системах Unix. Программа находится в подкаталоге домашнего каталога UID 1000, а команда sudo используется для изменения прав собственности и SUID; то программа запускается и я вхожу в Uid сообщать о реальной, эффективной и спас UIDs процесса:

$ sudo chown root:staff setuid_min.bin 
$ ls -l | grep 'setuid_min\.bin$' 
-rwxr-xr-x 1 root staff [...] setuid_min.bin 
$ sudo chmod a+s setuid_min.bin 
$ ls -l | grep 'setuid_min\.bin$' 
-rwsr-sr-x 1 root staff [...] setuid_min.bin 
$ ./setuid_min.bin 
uid 
1000 1000 1000 some_pid 
exit 
$ 

Обратите внимание, что some_pid выше ИДП в setuid_min.bin процесса , Программа сообщает реальный UID, эффективный UID и сохраненный UID, сообщая вывод следующей команды оболочки:

ps -ao ruid,uid,svuid,pid | grep '[ ]my_pid$' 

где my_pid является Идентификатор сообщает GETPID(). Мое единственное предположение о том, почему это может быть так, заключается в том, что OpenBSD имеет некоторую базовую структуру разрешений, которая использует права собственности/разрешения каталога, в котором находится setuid_min.bin, или это фактически не изменяет бит собственности/SUID, когда непривилегированный пользователь использует sudo для изменения прав доступа к файлам.

ответ

0

Скорее всего, ваш двоичный файл находится в одном из разделов по умолчанию, которые монтируются «nosuid». По умолчанию fstab скрипт установки создает волю, монтируя все nosuid, если только он не содержит двоичные файлы suid.