Ариадна Конилл (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
Источник: https://www.opennet.ru/opennews/art.shtml?num=64420




