История изменений
Исправление firkax, (текущая версия) :
Как быть с группами, пользователями и аргументами?
В чём проблема? Ну и повторю: то, как проверяет аргументы sudo (с помощью сравнения строк) - никуда не годится. Проверять надо осмысленные сущности, а не строковое их представление.
Группе adm я хочу дать возможность пускать одни программы, группе support - другие.
Ты не поверишь:
$ ls -al /usr/sbin | grep rws
-rwsr-xr-- 1 root dip 408644 янв 7 2021 pppd
А группе web я хочу дать возможность выполнять часть команд, но от пользователя www-data, а не от рута.
Аналогично.
А если я хочу дать права на выполнение команды только с определёнными аргументами?
Аргументы должна проверять алгоритмическая обёртка. И не с помощью сравнения строк или регулярок на командную строку, а с помощью парсинга argv[] аналогично той программе, которую запускаешь и дальнейшего моделирования того, что произойдёт. А ещё она может сама их составить из более простого собственного синтаксиса (ведь если ты хочешь ограниченную функциональность то незачем синтаксис от полной тащить).
Совершенно верно. Ты предлагаешь написать ещё миллион обёрток под каждый отдельный случай вместо использования универсального sudo.
Универсально-костыльного. Такая универсальность не нужна.
Исходная версия firkax, :
Как быть с группами, пользователями и аргументами?
В чём проблема? Ну и повторю: то, как проверяет аргументы sudo (с помощью сравнения строк) - никуда не годится. Проверять надо осмысленные сущности, а не строковое их представление.
Группе adm я хочу дать возможность пускать одни программы, группе support - другие.
Ты не поверишь:
$ ls -al /usr/sbin | grep rws
-rwsr-xr-- 1 root dip 408644 янв 7 2021 pppd
А группе web я хочу дать возможность выполнять часть команд, но от пользователя www-data, а не от рута.
Аналогично.
А если я хочу дать права на выполнение команды только с определёнными аргументами?
Аргументы должна проверять алгоритмическая обёртка. И не с помощью сравнения строк или регулярок на командную строку, а с помощью парсинга argv[] аналогично той программе, которую запускаешь и дальнейшего моделирования того, что произойдёт.
Совершенно верно. Ты предлагаешь написать ещё миллион обёрток под каждый отдельный случай вместо использования универсального sudo.
Универсально-костыльного. Такая универсальность не нужна.