Ариадна Конилл (Ariadne Conill), создатель музыкального проигрывателя Audacious и композитного сервера Wayback, инициатор разработки протокола IRCv3 и лидер команды по обеспечению безопасности Alpine Linux, развивает инструментарий capsudo для выполнению команд с повышенными привилегиями. В отличие от sudo в новом проекте задействована модель предоставления полномочий на уровне отдельных объектов (object-capability). Код проекта написан на языке Си и распространяется под лицензией MIT...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=64420
Но зачем?
Ну а почему бы и нет?
Действительно, зря быканул.
Можно, а зачем? (с)
На замену sudo есть run0.
Вот людям неймется. Уж лучше бы wayback доделывал.
а на замену run0 есть безопасный sudo-rs
> безопасный sudo-rsбезопасно не работает
А умеющие читать и писать просто пропишут нужные пользователю команды в sudoers.d
И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".
> И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".Зависит от того на что выдавать. Если на /sbin/reboot, который без рута не подменить - это вряд ли.
А если на /usr/local/mc - то без разницы чем выдавать привилегии запуска: через sudo, doas, capsudo или run0.
>> И Вася пупкин без труда получит root'a, ага. Не "опять", а "снова".
> Зависит от того на что выдавать. Если на /sbin/reboot, который без рута
> не подменить - это вряд ли.
> А если на /usr/local/mc - то без разницы чем выдавать привилегии запуска:
> через sudo, doas, capsudo или run0.В последнем cve даже и "давать" ничего не требовалось, ага
В прошедшем времени. А в "заменителях" всё ещё только впереди.
> В прошедшем времени. А в "заменителях" всё ещё только впереди.Ну почему же только впереди, недавно здесь же обсуждали cve у sudo-rs.
>> В прошедшем времени. А в "заменителях" всё ещё только впереди.
> Ну почему же только впереди, недавно здесь же обсуждали cve у
> sudo-rs.Это тот, где "если пароль ввести и enter не нажать, то через полчаса его подглядеть можно"? А, ну да, ну да - кшмаррр и ужаст!
давайте напишем системный демон и запустим от рута, осталось только прикрутить сеть и выставить голой опой, и вуаля хороший судо, запускай хоть с марса :) оригинально
Принцип KISS (Keep it simple, stupid) в лучших проявлениях. Но не взлетит, так как не дело по отдельному демону на каждую команду в памяти держать, а создание одного общего диспетчера сведёт на нет всю простоту и приведёт к появлению ещё одного Polkit.
С этой утилитой нужно будет писать "$ capsudo -i"?
Из недостатков 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
В общем, у альпайна похоже все плохо с безопасностью.
(конечно, от недолинукса для запуска в докере под докером никто и не ждал, но все же...)Да, с форматом конфигурации тут просто все прекрасно - как после этого выяснить кому и что мы наразрешали - искать по всей системе стремные сокеты?
Про то что в этом наборе команд race condition - щпециалист(ка?) по безопастносте похоже даже не знает.
(ага, чмод. После создания. И что же мне помешало уже открыть этот сокет, пока шпециалистко крашенными когтями свой чмод набирает? Отдельный вопрос кто их учил давать права на исполнение - сокетам?)
> искать по всей системе стремные сокеты?искать capsudod процессы, а в их коммандной строке видно все активные "стрёмные сокеты".
> И что же мне помешало уже открыть этот сокет
umask пользователя root в нормальной системе не даст открыть на запись.
хотя в общем конечно этот capsudo оставляет ощущение имено что стрёмное.
но ниче, вреднят, первый раз что-ли ;)
Вставь чужой sudo в свою систему - дай удаленный доступ в свою систему!
> Например, чтобы предоставить какому-то пользователю возможность запуска утилиты reboot с повышенными привилегиями, администратор можетнаписать в doas.conf:
permit user1 as root cmd reboot
У меня почему-то doas не работал. Вернулся обратно на sudo.
Хорошо, держи в курсе.
Хорошо, держу в курсе.
Не проблема. Я могу рассказать, что я не пробовал ни doas, ни sudo и они никогда у меня не работали поэтому. Тебе всё ещё интересно? Я могу ещё рассказать про утилиты из coreutils, которые я использовал и которые я считаю лишними там.
У sudo раздутая кодовая база, поэтому надо сделать отдельного демона, который будет делать всё то же самое, плюс ещё тащить в себе код для обмена данными через сокет, и к нему ещё клиентскую утилиту.
> Только пользователи, имеющие доступ к сокету, могут выполнять привязанные к сокету привилегированные команды.И чем это лучше suid-root процесса, который проверяет "кто меня запустил"?
> администратор может создать в домашнем каталоге заданного пользователя сокет "reboot-capability", привязать его к запуску утилиты reboot и на уровне прав доступа разрешить запись в сокет только необходимому пользователю. После этого данный пользователь сможет запустить команду reboot, выполнив "capsudo -s reboot-capability".То есть, кроме нового геморроя с сокетами для админа, ещё и юзверям переучиваться вместо привычных утилит запускать какую-то новую хрень (или держать актуальный список алиасов в rc'шнике).
Ну вот ЗАЧЕМ??? В принципе sudo есть зло абсолютное! Его не должно существовать! Жили без него - отлично.Всегда юзер должен быть юзер, админ должен быть админ
И никакого "повышения полномочий"! Это ИЗВРАЩЕНИЕ, как зараза подхваченное у Микрософта
Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db. Рассказывай, как без механизмов повышения привилегий это сделать.
> Есиь юзер 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?
Из контекста же прекрасно понятно о чем речь. Если только вы не самозванец.
> Из контекста же прекрасно понятно о чем речь. Если только вы не
> самозванец.Было бы понятно, не спрашивал бы уточнения
Вообще-то аббревиатура DBA в контексте системного администрирования должна быть понятна без пояснений
На утилиту бэкапа - CAP_DAC_READ_SEARCH (https://www.man7.org/linux/man-pages/man7/capabilities.7.html)
Плюс, DAC/ACL для ограничения доступа пользователей к утилите.
Желательно, чтобы у утилиты не было доступа к сети, и она писала бэкап локально в единственную доступную для записи директорию. Откуда готовый (шифрованный) бэкап разносился на резервные (удаленные) сервисы другой утилитой сетевого копирования (rsync/rclone), у которой на локальной машине чтение и запись также ограничены.
Ещё больше обезопасить утилиты можно, применяя landlock в их коде.Но и у sudo пока есть своя ниша.
> dba
> dbРаздвоеие личности надо лечить, а не обмазываться паллиативами типа sudo.
Так у юзера db в качестве оболочки /sbin/nologin указан, потому что по условию задачи это пользователь, под которым работает БД, системный, с uid < 1000.А DBA ходит в систему как обычный юзер dba.
> Есиь юзер dba, ему надо сделать бэкап БД, работающей от юзера db.
> Рассказывай, как без механизмов повышения привилегий это сделать.Например sql-дампом через localhost в свой home и дальше на резервное хранилище
идиотизм считать скул дампы бекапами.
Два чая этому анониму
> идиотизм считать скул дампы бекапами.Только если вы из адептов «для резервирования каталога документов надо забакапить целиком весь сервак»
Для резервирования каталога документов хорошо бы чтобы в этот момент туда никто не писал, в первую очередь.
> Рассказывай, как без механизмов повышения привилегий это сделать.механизм бекапа это механизм рсубд, а не прихоть пользователя, настраиваешь конфиг, делай бекап той-то базы в такое-то время и все, зачем еще юзеры какие-то?
>Всегда ... админ должен быть админ
>И никакого "повышения полномочий"!Абсолютное непонимание базовых основ безопасности!
Запомните, юноша, админ (человек) основную часть времени *должен* работать как простой юзер (без превилегий) и только в самых *необходимых* случаях повышать привилегии до админа.
> повышать привилегии до админаsu
Хотят сделать как в винде. То есть, по умному.
но винды (как обычно у этих больных на всю голову) не видели даже через чужое плечо.
Поэтому получается - хрень. Как всегда.(нет в винде никаких бредовых сокетов по всей фс, угадай-куда-я-его-запрятал и какие права он дает если его кто-то нашел)
Когда завезут в systemd?
В systemd завезли run0
А в реальности будет:
# 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Удобно жи?! Удобно!
И кроме этого - другие сокеты можно уже и не создавать! Ещё раз удобно!
Вы там аффтарке передайте :)
Не нужно умножать сущности без необходимости. На уровне идеи sudo совершенен. Надеюсь, проект не взлетит.
Ну с sudo именно так и делают. Многие администраторы даже не видят разницы между беспарольным доступом через sudo и доступом с паролем, и делают всегда без пароля – "Удобно жи?! Удобно!"А при установке того же Docker, им везде пишут: не добавляйте своего пользователя в группу docker бездумно. Но все добавляют обычного пользователя в группу docker и при этом ссылаются на официальную инструкцию Docker, где, якобы, Docker это рекомендует. А жирное выделенное красным цветом предупреждение там же они игнорируют: "Warning: The docker group grants root-level privileges to the user."
Интересно, насколько можно управлять правилами - разрешить запуск только с определёнными аргументами? И как с этим у альтернатив
Плюс от такого инструмента будет, однозначно. Но это должно поддерживаться на уровне ядра и не так стрёмно, как ACL. Многие не используют ACL в Linux, потому что оно кривое и через пень-колоду работает. А в той же винде ACL из коробки прекрасно, как бы винду не хаили, но за это Билла Гейтса можно и похвалить, придумал в 90-х ещё для NT и работает по сей день, как часы.