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 обязательно


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

    Вот что бывает, когда музыканты лезут в систему.

     
     
  • 3.40, Аноним (1), 16:49, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >музыканты лезут в систему

    Кхем, Вагнер?

     
  • 3.45, Аноним (45), 17:54, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот что бывает, когда музыканты лезут в систему.

    Это Ариадна - на минуточку - security officer Alpine Linux. Так что в безопасности систем оно знает толк.

     
     
  • 4.47, Аноним (1), 18:03, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Там у этого персонаж(ки)а проблемы с головой, так-то.
     
     
  • 5.66, kusb (?), 22:56, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А почему кстати? Помимо несоответствий типов...
     
  • 4.58, Аноним (33), 20:34, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Alpine Linux

    теперь всё понятно. Сразу в блэклист.

     
     
  • 5.61, Аноним (61), 21:16, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Этот дистр не хопим.
     

  • 1.4, Аноним (4), 12:59, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    На замену sudo есть run0.
    Вот людям неймется. Уж лучше бы wayback доделывал.
     
     
  • 2.6, Аноним (6), 13:07, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    а на замену run0 есть безопасный sudo-rs
     
  • 2.9, Kilrathi (ok), 13:16, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А умеющие читать и писать просто пропишут нужные пользователю команды в 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 [^] [^^] [^^^] [ответить]  
  • +/
    >> И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".
    > Зависит от того на что выдавать. Если на /sbin/reboot, который без рута
    > не подменить - это вряд ли.
    > А если на /usr/local/mc - то без разницы чем выдавать привилегии запуска:
    > через sudo, doas, capsudo или run0.

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

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

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

     

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

     

  • 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 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У меня почему-то doas не работал. Вернулся обратно на sudo.
     
     
  • 3.35, Frestein (ok), 16:03, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошо, держи в курсе.
     
     
  • 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 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У sudo раздутая кодовая база, поэтому надо сделать отдельного демона, который бу... большой текст свёрнут, показать
     
  • 1.49, Karl (ok), 18:35, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну вот ЗАЧЕМ??? В принципе sudo есть зло абсолютное! Его не должно существовать! Жили без него - отлично.

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

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

     
     
  • 2.51, Аноним (51), 18:56, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db. Рассказывай, как без механизмов повышения привилегий это сделать.
     
     
  • 3.54, Karl (ok), 19:18, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db.
    > Рассказывай, как без механизмов повышения привилегий это сделать.

    dba может иметь разные значения, среди них:
    a) Доктор делового администрирования (англ. Doctor of Business Administration).
    b) Администратор баз данных (англ. Database administrator).
    c) dBA — единица измерения громкости звука.
    d) DBA (Disc Brakes Australia) — австралийский производитель тормозных дисков для легковых автомобилей.
    e) DBA (Double Bend Achromat) — тип фокусирующей структуры синхротронов.
    f) DarkBASIC (.dba формат) — компьютерный язык и связанная с ним среда программирования, предназначенные для упрощения создания 3D-видеоигр.
    g) Dallas Bar Association — профессиональная организация для юристов в Далласе, Техас, США.
    h) The Barge Association, ранее «Dutch Barge Association» (DBA) — клуб для любителей отдыха на внутренних водных путях Европы

    Вы сейчас о чём? О правах на СУБД? Ну так и говорите. Причём тут именно повышение прав? Или вы ни в одной нормальной Unix+ OS не работали, кроме Mint?

     
     
  • 4.59, Аноним (59), 20:41, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Из контекста же прекрасно понятно о чем речь. Если только вы не самозванец.
     
     
  • 5.64, Karl (ok), 21:55, 13/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Из контекста же прекрасно понятно о чем речь. Если только вы не
    > самозванец.

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

     
  • 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.

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

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

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

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

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

    su

     

  • 1.60, Аноним (61), 21:15, 13/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хотят сделать как в винде. То есть, по умному.
     
  • 1.70, Аноним (70), 23:54, 13/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

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



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

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