2014-08-30 2 views
0

Я изучаю привилегированные программы Set-UID, и кажется, что программа выполняется с собственными привилегиями владельца. Пример: passwd может читать/записывать теневой файл, поскольку он принадлежит пользователю root. Как я могу найти такую ​​информацию для других программ?Как узнать, кто является владельцем программы?

ответ

0

Использование getuid(2), geteuid(2), getresuid(2) и соответствующий setuid(2), setreuid(2) соответствующим образом. См. Также capabilities(7) и credentials(7) & тщательно execve(2). Read about proc(5)

Прочитать Setuid wikipage. Процесс, выполняющий исполняемый файл setuid, может вызвать seteuid, чтобы получить привилегию.

+0

Моя проблема заключается в следующем: Запуск программ оболочки UID в Linux и описать и объяснить ваши наблюдения. (a) Войдите как root, скопируйте/bin/zsh в/tmp и сделайте его программой set-root-uid с разрешением 4755. Затем войдите как обычный пользователь и запустите/tmp/zsh. Получите ли вы привилегии root? Пожалуйста, опишите ваше наблюдение. Если я переехал как корень, значит, у программы есть привилегии для корней, rigth? Но я ищу способ доказать это! –

+0

Если вы «root», вы можете делать такие вещи, как «mkdir/hacked», которые обычные пользователи не могут. (Не забудьте очистить после себя.) – tripleee

+1

Файловая система '/ tmp', однако, часто монтируется так, что бит setuid в двоичных файлах там не соблюдается. Это функция безопасности, позволяющая отключить именно такой взлом. 'mount | grep nosuid' – tripleee

0

Когда вы устанавливаете разрешение пользователя (разрешение 4755) на исполняемый файл, процесс, запускающий этот файл, получает доступ на основе владельца файла.

В этом случае вы копируете/bin/zsh как пользователь root, а затем устанавливаете режим 4755/tmp/zsh, чтобы предоставить привилегии пользователю пользователю, который будет запускать файл, а не пользовательские привилегии.

Это специальное разрешение позволяет пользователю получить доступ к файлам и каталогам, которые обычно доступны только владельцу.

Вы пытались сделать то, что вас спросили?

+0

Моя попытка выглядит примерно так: я использовал пользователя root для копирования файла (zsh), и я попытался выполнить его как обычного пользователя. Итак, я сделал программу, которая выполняет команду (в этом примере - команда passwd). Моя идея, если эта команда работает от имени пользователя root, я могу изменить пароль других пользователей. Пользователь root может это сделать, поэтому, если я могу сделать это как обычный пользователь, выполняющий этот скрипт, это очевидный разрыв безопасности. Но ... это не так. Я попытался сделать root-пользователя как владельца этой программы, но я не могу выполнить это правильно как обычный пользователь (без привилегий root). –

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