Под какими сценариями я хотел бы установить бит SUID?

проверить auth.log, syslog, или messages. Консервированный ответ, но это стоит того, чтобы попытаться.

6
20.09.2013, 03:22
3 ответа

Setuid и setgid (и setcap, где это существует) являются единственными способами поднять полномочия. Кроме через этот механизм, процесс может оставить полномочия, но никогда не получать их. Поэтому Вы не смогли бы сделать что-либо, что требует дополнительных полномочий.

Например, программы su и sudo потребность смочь к командам выполнения как любой пользователь. Поэтому они должны работать как корень, неважно, какой пользователь назвал их.

Другой пример ping. TCP и сокеты UDP доступны для любого пользователя, потому что эти протоколы имеют понятие портов, и процесс может взять под свой контроль порт (который называют, связывая его), таким образом, ядро знает, куда отправить пакеты. ICMP не имеет такого понятия, настолько же только программы, работающие, как корню (или с соответствующей возможностью) позволяют запросить, чтобы пакеты ICMP были отправлены им. Для любого пользователя, чтобы смочь работать ping, ping программа должна иметь дополнительное полномочие, таким образом, это - корень setuid (или setcap).

Для примера полномочий группы рассмотрите игру, которая хранит локальные рекорды в файле. Так как только фактические рекорды, достигнутые пользователями, должны быть сохранены в файле счета, файл счета не должен быть перезаписываем плеерами. Только игровой программе нужно позволить записать в файл счета. Таким образом, игровая программа сделана setgid games, и файл счета перезаписываем группой games но не плеерами.

Существует альтернативный подход к подъемным полномочиям, который должен запустить программы, которые требуют дополнительных полномочий от привилегированной программы средства запуска. Когда пользователь хочет выполнить задачу, которая требует дополнительных полномочий, он запускает программу фронтенда, которая использует некоторую форму межпроцессного взаимодействия для выполнения привилегированного действия. Это работает хорошо на некоторые варианты использования такой как ping (один ping программа для парсинга опций и прогресса отчета и a ping-backend сервис, который отправляет и получает пакеты), но не для других вариантов использования, таких как игра высоко выигрывает файл.

13
27.01.2020, 20:23

Наиболее распространенной причиной является так исполняемый файл, может быть выполнен как корень. Например:

find /bin/ -type f \( -perm -4000 -o -perm -2000 \) -ls  | awk '{print $3,$NF}'
-rwsr-xr-x /bin/su
-rwsr-xr-x /bin/mount
-rwsr-xr-- /bin/fusermount
-rwsr-xr-x /bin/ping6
-rwsr-xr-x /bin/ping
-rwsr-xr-x /bin/umount

Это все команды, которые могут быть выполнены обычными пользователями, но потребность подняла полномочия. mount идеальный пример, можно смонтировать любой диск, который имеет user или подобная опция началась /etc/fstab но растущие потребности root полномочия так SUID укусили, установлен.

0
27.01.2020, 20:23

suid (или sgid) бит заставляет исполняемый файл работать как другой пользователь/группа, чем пользователь, вызывающий его.

Если единственная причина, которую это делает, который должен получить доступ к конкретному файлу, да, Вы могли использовать другие механизмы для создания того файла перезаписываемым. Однако затем пользователь мог сделать что-либо в файл — только в противоположность вещам, которые позволяет Ваша программа.

У Вас могла, например, быть своя программа, только позволяют добавлять строку в файл, и только в определенном формате. Но если бы Вы просто использовали полномочия файловой системы, то пользователь мог бы удалить строки из файла также. Или вставленные плохо отформатированные строки.

В основном suid программа может осуществить произвольную политику. Полномочия файловой системы не могут. Как пример, Ваша система имеет suid программу /bin/su. Это дает Вам корневую оболочку (например), но только если Вы удовлетворяете политику сначала — обычно, вводите пароль root. Нет никакого способа сделать это с одними только полномочиями.

1
27.01.2020, 20:23

Теги

Похожие вопросы