Я изучаю привилегированные программы Set-UID, и кажется, что программа выполняется с собственными привилегиями владельца. Пример: passwd может читать/записывать теневой файл, поскольку он принадлежит пользователю root. Как я могу найти такую информацию для других программ?Как узнать, кто является владельцем программы?
ответ
Использование getuid(2), geteuid(2)
, getresuid(2) и соответствующий setuid(2), setreuid(2) соответствующим образом. См. Также capabilities(7) и credentials(7) & тщательно execve(2). Read about proc(5)
Прочитать Setuid wikipage. Процесс, выполняющий исполняемый файл setuid, может вызвать seteuid
, чтобы получить привилегию.
Когда вы устанавливаете разрешение пользователя (разрешение 4755) на исполняемый файл, процесс, запускающий этот файл, получает доступ на основе владельца файла.
В этом случае вы копируете/bin/zsh как пользователь root, а затем устанавливаете режим 4755/tmp/zsh, чтобы предоставить привилегии пользователю пользователю, который будет запускать файл, а не пользовательские привилегии.
Это специальное разрешение позволяет пользователю получить доступ к файлам и каталогам, которые обычно доступны только владельцу.
Вы пытались сделать то, что вас спросили?
Моя попытка выглядит примерно так: я использовал пользователя root для копирования файла (zsh), и я попытался выполнить его как обычного пользователя. Итак, я сделал программу, которая выполняет команду (в этом примере - команда passwd). Моя идея, если эта команда работает от имени пользователя root, я могу изменить пароль других пользователей. Пользователь root может это сделать, поэтому, если я могу сделать это как обычный пользователь, выполняющий этот скрипт, это очевидный разрыв безопасности. Но ... это не так. Я попытался сделать root-пользователя как владельца этой программы, но я не могу выполнить это правильно как обычный пользователь (без привилегий root). –
- 1. Как узнать, кто станет владельцем?
- 2. Кто является владельцем JVM?
- 3. Кто является владельцем ресурса?
- 4. Кто является родителем исполняемой программы?
- 5. Как узнать, кто является провайдером ROM?
- 6. Как узнать, кто является реквестером в Jpos?
- 7. Как узнать, кто является вызывающей функцией js?
- 8. Как узнать, кто является создателем вида BigQuery?
- 9. Оптимизация поиска, когда владельцем данных является кто-то еще
- 10. SQL double select в одной таблице (инструкция: узнать, кто является владельцем файла)
- 11. Что является владельцем обратного списка?
- 12. Событие клиента Telerik - узнать, кто является отправителем
- 13. MQTT подписчик, чтобы узнать, кто является издателем
- 14. Кто должен быть владельцем новой схемы?
- 15. Как узнать, кто является вызывающим методом или функцией?
- 16. Как узнать, кто является родительским потоком заданного потока ID
- 17. Как узнать, кто является родителем в отношениях Grails hasMany?
- 18. Как узнать, кто является вызывающей функцией в AngularJS?
- 19. Как определить, какое устройство является владельцем группы из списка сверстников?
- 20. Создать проверку, если пользователь является владельцем сайта
- 21. Как узнать файл, который является началом программы Python?
- 22. Проверьте, если запрашиваемый пользователь является владельцем django
- 23. getWaitQueueLength throws IllegalArgumentException: Не является владельцем
- 24. Как узнать, кто мой код?
- 25. Как узнать, кто начал тему
- 26. Как узнать, кто вызвал SendMessage?
- 27. Как узнать, кто послал сообщение
- 28. Как узнать, кто зарегистрировал файл?
- 29. Как узнать, кто сделал запрос?
- 30. Как узнать, кто вызвал метод?
Моя проблема заключается в следующем: Запуск программ оболочки UID в Linux и описать и объяснить ваши наблюдения. (a) Войдите как root, скопируйте/bin/zsh в/tmp и сделайте его программой set-root-uid с разрешением 4755. Затем войдите как обычный пользователь и запустите/tmp/zsh. Получите ли вы привилегии root? Пожалуйста, опишите ваше наблюдение. Если я переехал как корень, значит, у программы есть привилегии для корней, rigth? Но я ищу способ доказать это! –
Если вы «root», вы можете делать такие вещи, как «mkdir/hacked», которые обычные пользователи не могут. (Не забудьте очистить после себя.) – tripleee
Файловая система '/ tmp', однако, часто монтируется так, что бит setuid в двоичных файлах там не соблюдается. Это функция безопасности, позволяющая отключить именно такой взлом. 'mount | grep nosuid' – tripleee