Представлен capsudo, вариант sudo с разделением полномочий на уровне объектов

Ариадна Конилл (Ariadne Conill), создатель музыкального проигрывателя Audacious и композитного сервера Wayback, инициатор разработки протокола IRCv3 и лидер команды по обеспечению безопасности Alpine Linux, развивает инструментарий capsudo для выполнению команд с повышенными привилегиями. В отличие от sudo в новом проекте задействована модель предоставления полномочий на уровне отдельных объектов (object-capability). Код проекта написан на языке Си и распространяется под лицензией MIT.

Из недостатков sudo, которые попытались решить в новом инструментарии, отмечается поставка в форме исполняемого файла с флагом suid root, монолитная архитектура без разделения привилегий (вся функциональность sudo выполняется с правами root); усложнённый, неиерархический и недекларативный формат конфигурации; поддержка плагинов, выполняемых напрямую в привилегированном процессе; раздутая кодовая база с большой поверхностью атаки.

Вместо использования монолитной утилиты sudo в capsudo использован тандем из привилегированного фонового процесса capsudod и непривилегированной утилиты capsudo. Взаимодействия между capsudod и capsudo осуществляется при помощи файла-сокета, а полномочия запуска привилегированных команд определяются правами доступа к данному сокету. Только пользователи, имеющие доступ к сокету, могут выполнять привязанные к сокету привилегированные команды. Недостатком предложенного подхода является необходимость использования отдельного фонового процесса для координации запуска каждой привилегированной операции.

Например, чтобы предоставить какому-то пользователю возможность запуска утилиты reboot с повышенными привилегиями, администратор может создать в домашнем каталоге заданного пользователя сокет «reboot-capability», привязать его к запуску утилиты reboot и на уровне прав доступа разрешить запись в сокет только необходимому пользователю. После этого данный пользователь сможет запустить команду reboot, выполнив «capsudo -s reboot-capability».


   # capsudod -s /home/user/reboot-capability reboot &
   # chown user:user /home/user/reboot-capability 
   # chmod 700 /home/user/reboot-capability
   запускаем reboot командой:
   $ capsudo -s /home/user/reboot-capability 

Для того чтобы повторить поведение sudo и разрешить выполнение с повышенными привилегиями любых приложений для пользователей, входящих в группу wheel, можно использовать следующие настройки:


   # mkdir -p /run/cap
   # capsudod -s /run/cap/sudo-capability &
   # chgrp wheel /run/cap/sudo-capability
   # chmod 770 /run/cap/sudo-capability
   
   $ capsudo -s /run/cap/sudo-capability

Пример настроек для привилегированного запуска команды /usr/sbin/mount /dev/sdb1:


   # capsudod -s /run/user/mountd/cap/mount-dev-sdb1 -- /usr/sbin/mount /dev/sdb1
   ... установка прав доступа к сокету /run/user/mountd/cap/mount-dev-sdb1

   монтирование /dev/sdb1 в /media/usb непривилегированным пользователем
   $ capsudo -s /run/user/mountd/cap/mount-dev-sdb1 -- /media/usb

Источник: http://www.opennet.ru/opennews/art.shtml?num=64420