The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

13.12.2025 12:18

Ариадна Конилл (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


  1. Главная ссылка к новости (https://ariadne.space/2025/12/...)
  2. OpenNews: В дерево исходных текстов OpenBSD принят код замены sudo
  3. OpenNews: Использование SSH поверх UNIX-сокета вместо sudo для избавления от suid-файлов
  4. OpenNews: Леннарт Поттеринг представил run0, замену sudo, интегрированную в systemd
  5. OpenNews: Уязвимости в утилите sudo, позволяющие получить права root в системе
  6. OpenNews: Обновление sudo-rs 0.2.10 с исправлением двух уязвимостей
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64420-capsudo
Ключевые слова: capsudo, sudo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (51) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:40, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Но зачем?
     
     
  • 2.2, Аноним (2), 12:42, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Ну а почему бы и нет?
     
     
  • 3.3, Аноним (1), 12:44, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Действительно, зря быканул.
     
  • 2.13, Кошкажена (?), 14:33, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Можно, а зачем? (с)
     

  • 1.4, Аноним (4), 12:59, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    На замену sudo есть run0.
    Вот людям неймется. Уж лучше бы wayback доделывал.
     
     
  • 2.6, Аноним (6), 13:07, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • –7 +/
    а на замену run0 есть безопасный sudo-rs
     
     
  • 3.80, Аноним (80), 03:30, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > безопасный sudo-rs

    безопасно не работает

     
  • 2.9, Kilrathi (ok), 13:16, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А умеющие читать и писать просто пропишут нужные пользователю команды в sudoers.d
     
     
  • 3.23, User (??), 14:52, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".
     
     
  • 4.32, Kilrathi (ok), 15:26, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".

    Зависит от того на что выдавать. Если на /sbin/reboot, который без рута не подменить - это вряд ли.
    А если на /usr/local/mc - то без разницы чем выдавать привилегии запуска: через sudo, doas, capsudo или run0.


     
     
  • 5.48, User (??), 18:30, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".
    > Зависит от того на что выдавать. Если на /sbin/reboot, который без рута
    > не подменить - это вряд ли.
    > А если на /usr/local/mc - то без разницы чем выдавать привилегии запуска:
    > через sudo, doas, capsudo или run0.

    В последнем cve даже и "давать" ничего не требовалось, ага

     
     
  • 6.56, Аноним (56), 20:01, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В прошедшем времени. А в "заменителях" всё ещё только впереди.
     
     
  • 7.68, Kilrathi (ok), 23:29, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В прошедшем времени. А в "заменителях" всё ещё только впереди.

    Ну почему же только впереди,  недавно здесь же обсуждали cve у sudo-rs.

     
     
  • 8.81, User (??), 08:23, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это тот, где если пароль ввести и enter не нажать, то через полчаса его подгляд... текст свёрнут, показать
     

  • 1.5, Аноним (5), 13:04, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    давайте напишем системный демон и запустим от рута, осталось только прикрутить сеть и выставить голой опой, и вуаля хороший судо, запускай хоть с марса :) оригинально
     
  • 1.7, Аноним (7), 13:08, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Принцип KISS (Keep it simple, stupid) в лучших проявлениях. Но не взлетит, так как не дело  по отдельному демону на каждую команду в памяти держать, а создание одного общего диспетчера сведёт на нет всю простоту и приведёт к появлению ещё одного Polkit.
     
  • 1.12, Аноним (-), 14:33, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    С этой утилитой нужно будет писать "$ capsudo -i"?
     
  • 1.17, mos87 (ok), 14:47, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Из недостатков sudo ... недекларативный формат конфигурации

    >чтобы повторить поведение 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

     
     
  • 2.52, пох. (?), 19:01, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В общем, у альпайна похоже все плохо с безопасностью.
    (конечно, от недолинукса для запуска в докере под докером никто и не ждал, но все же...)

    Да, с форматом конфигурации тут просто все прекрасно - как после этого выяснить кому и что мы наразрешали - искать по всей системе стремные сокеты?

    Про то что в этом наборе команд race condition - щпециалист(ка?) по безопастносте похоже даже не знает.
    (ага, чмод. После создания. И что же мне помешало уже открыть этот сокет, пока шпециалистко крашенными когтями свой чмод набирает? Отдельный вопрос кто их учил давать права на исполнение - сокетам?)

     
     
  • 3.79, RM (ok), 02:50, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > искать по всей системе стремные сокеты?

    искать capsudod процессы, а в их коммандной строке видно все активные "стрёмные сокеты".

    > И что же мне помешало уже открыть этот сокет

    umask пользователя root в нормальной системе не даст открыть на запись.

    хотя в общем конечно этот capsudo оставляет ощущение имено что стрёмное.

    но ниче, вреднят, первый раз что-ли ;)

     

  • 1.20, Аноним (20), 14:49, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вставь чужой sudo в свою систему - дай удаленный доступ в свою систему!
     
  • 1.25, Аноним (25), 14:55, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Например, чтобы предоставить какому-то пользователю возможность запуска утилиты reboot с повышенными привилегиями, администратор может

    написать в doas.conf:

    permit user1 as root cmd reboot

     
     
  • 2.29, Аноним (29), 15:18, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У меня почему-то doas не работал. Вернулся обратно на sudo.
     
     
  • 3.35, Frestein (ok), 16:03, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хорошо, держи в курсе.
     
     
  • 4.41, scriptkiddis (?), 16:55, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хорошо, держу в курсе.
     
  • 4.46, Аноним (-), 18:02, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не проблема. Я могу рассказать, что я не пробовал ни doas, ни sudo и они никогда у меня не работали поэтому. Тебе всё ещё интересно? Я могу ещё рассказать про утилиты из coreutils, которые я использовал и которые я считаю лишними там.
     

  • 1.44, Аноним (44), 17:51, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    У sudo раздутая кодовая база, поэтому надо сделать отдельного демона, который бу... большой текст свёрнут, показать
     
  • 1.49, Karl (ok), 18:35, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ну вот ЗАЧЕМ??? В принципе sudo есть зло абсолютное! Его не должно существовать! Жили без него - отлично.

    Всегда юзер должен быть юзер, админ должен быть админ

    И никакого "повышения полномочий"! Это ИЗВРАЩЕНИЕ, как зараза подхваченное у Микрософта

     
     
  • 2.51, Аноним (51), 18:56, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db. Рассказывай, как без механизмов повышения привилегий это сделать.
     
     
  • 3.54, Karl (ok), 19:18, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    dba может иметь разные значения, среди них a Доктор делового администрирования... большой текст свёрнут, показать
     
     
  • 4.59, Аноним (59), 20:41, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Из контекста же прекрасно понятно о чем речь. Если только вы не самозванец.
     
     
  • 5.64, Karl (ok), 21:55, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Из контекста же прекрасно понятно о чем речь. Если только вы не
    > самозванец.

    Было бы понятно, не спрашивал бы уточнения

     
     
  • 6.74, Аноним (74), 01:22, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вообще-то аббревиатура DBA в контексте системного администрирования должна быть понятна без пояснений
     
  • 3.57, Аноним (56), 20:12, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На утилиту бэкапа - CAP_DAC_READ_SEARCH (https://www.man7.org/linux/man-pages/man7/capabilities.7.html)
    Плюс, DAC/ACL для ограничения доступа пользователей к утилите.
    Желательно, чтобы у утилиты не было доступа к сети, и она писала бэкап локально в единственную доступную для записи директорию. Откуда готовый (шифрованный) бэкап разносился на резервные (удаленные) сервисы другой утилитой сетевого копирования (rsync/rclone), у которой на локальной машине чтение и запись также ограничены.
    Ещё больше обезопасить утилиты можно, применяя landlock в их коде.

    Но и у sudo пока есть своя ниша.

     
  • 3.62, Аноним (44), 21:19, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > dba
    > db

    Раздвоеие личности надо лечить, а не обмазываться паллиативами типа sudo.

     
     
  • 4.76, Аноним (74), 01:35, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так у юзера db в качестве оболочки /sbin/nologin указан, потому что по условию задачи это пользователь, под которым работает БД, системный, с uid < 1000.

    А DBA ходит в систему как обычный юзер dba.

     
  • 3.69, Kilrathi (ok), 23:34, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db.
    > Рассказывай, как без механизмов повышения привилегий это сделать.

    Например sql-дампом через localhost в свой home и дальше на резервное хранилище

     
     
  • 4.72, Аноним (5), 00:48, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    идиотизм считать скул дампы бекапами.
     
     
  • 5.75, Аноним (74), 01:24, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Два чая этому анониму
     
  • 5.77, Kilrathi (ok), 02:00, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > идиотизм считать скул дампы бекапами.

    Только если вы из адептов «для резервирования каталога документов надо забакапить целиком весь сервак»

     
     
  • 6.86, Аноним (86), 16:01, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для резервирования каталога документов хорошо бы чтобы в этот момент туда никто не писал, в первую очередь.
     
  • 3.71, Аноним (5), 00:46, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Рассказывай, как без механизмов повышения привилегий это сделать.

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

     
  • 2.55, Аноним (55), 19:38, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Всегда ... админ должен быть админ
    >И никакого "повышения полномочий"!

    Абсолютное непонимание базовых основ безопасности!
    Запомните, юноша, админ (человек) основную часть времени *должен* работать как простой юзер (без превилегий) и только в самых *необходимых* случаях повышать привилегии до админа.

     
     
  • 3.63, Аноним (44), 21:23, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > повышать привилегии до админа

    su

     

  • 1.60, Аноним (60), 21:15, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хотят сделать как в винде. То есть, по умному.
     
     
  • 2.73, нах. (?), 01:15, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    но винды (как обычно у этих больных на всю голову) не видели даже через чужое плечо.
    Поэтому получается - хрень. Как всегда.

    (нет в винде никаких бредовых сокетов по всей фс, угадай-куда-я-его-запрятал и какие права он дает если его кто-то нашел)

     

  • 1.70, Аноним (70), 23:54, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда завезут в systemd?  
     
     
  • 2.85, Аноним (86), 15:57, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В systemd завезли run0
     

  • 1.78, _ (??), 02:05, 14/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А в реальности будет:
    # capsudod -s /home/user/alfaman-capability bash &
    # chown user:user /home/user/alfaman-capability
    # chmod 700 /home/user/alfaman-capability

    # запускаем ништяк командой:
    $ capsudo -s /home/user/alfaman-capability

    Удобно жи?! Удобно!
    И кроме этого - другие сокеты можно уже и не создавать! Ещё раз удобно!
    Вы там аффтарке передайте :)

     
     
  • 2.84, Аноним (84), 14:47, 14/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не нужно умножать сущности без необходимости. На уровне идеи sudo совершенен. Надеюсь, проект не взлетит.
     

  • 1.87, Аноним (87), 20:26, 14/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, насколько можно управлять правилами - разрешить запуск только с определёнными аргументами? И как с этим у альтернатив
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру