Pull to refresh

Comments 8

Так виновата не sudo, а программы, которые через нее запускаются.
А иногда все-таки sudo, вернее разработчики, которые полностью не понимают, что делают.

Установщик 1С-Битрикс Веб-кластер добавляет следующую строку в /etc/sudoers:
bitrix ALL=NOPASSWD: /usr/bin/ansible * -m setup
Разработчики, вероятно, не знали, что sudo ищет вхождения подстроки в строку, а не разделяет аргументы отдельно (как это бы было в случае какого-нибудь execv), поэтому повысить свои привилегии можно легко одной командой:
$ sudo /usr/bin/ansible 127.0.0.1 -m shell -a 'whoami; echo -m setup'

127.0.0.1 | success | rc=0 »
root
-m setup
Для самого sudo аргументы выглядят следующим образом:
["sudo", "/usr/bin/ansible", "127.0.0.1", "-m", "shell", "-a", "whoami; echo -m setup"]
И это соответствует написанному разработчиками правилу sudoers.
Вот тоже соглашусь с первым комментарием, что подводит не sudo, а правила в нем. Какие-то «сферические команды в вакууме» — не могу представить сценариев, где нужны были бы такие привелегии
UFO landed and left these words here
Мало в линуксе таких программ, которые не умеют запустить bash. ;)

Ещё раз подтверждает, что в sudo надо прописывать неинтерактивные комманды. А если нужный частичный функционал какой-то комманды, то лучше сделать враппер на баше или ещё чем-то.
А для публично доступных аккаунтов лучше давать доступ для записи (домик и прочее) на nosuid файловую систему (совсем для паранои noexec).


P.S. Мне казалось, что проще копировать /bin/bash себе в домик и ставить на него suid бит чем компилить что-то.

А как же предупреждение на root-me.org:


We remind you that publishing solutions on Internet (Youtube, Github, personal blog, ...) is forbidden.

?

Only those users with full accounts are able to leave comments. Log in, please.