4

Мне нужно sudo для команды для любого пути в определенной области. Пример:

sudo mycommand /opt/apps/myapp/...

Каков синтаксис sudoers, позволяющий запускать эту команду по любому пути, который находится в /opt /apps /myapp? Это солярис 10 sudo.


Спасибо за ваш ответ, но мне не нужны подстановочные знаки для пути к командам, но подстановочные знаки для аргументов для команд.

Например, мы хотим сделать что-то вроде ...

sudo mycmd /opt/userarea/area1
sudo mycmd /opt/userarea/area1/area2
sudo mycmd /opt/userarea/area1/area2/area3

Пока что использование подстановочных знаков для аргументов в sudoers выглядит следующим образом:

/opt/userarea/*
/opt/userarea/*/*

И кажется, что если мы хотим иметь N уровней каталогов, тогда нам нужно N строк в sudoers! Есть ли лучший способ включить все уровни N в одну строку в sudoers? Благодарю.

2 ответа2

1

Sudo контролируется файлом /etc/sudoers который сообщает ему, что он может и не может делать. Я не знаю, сможете ли вы достичь того, чего хотите, по той причине, о которой я говорил ниже, однако вы можете создать группу команд, например, так:

Cmnd_Alias TESTAPPS = /opt/dev/myapp/myapp1, /opt/dev/myapp/myapp2

Затем вы можете разрешить определенным группам запускать sudo, используя только эти команды. У меня есть этот набор в моем:

root    ALL=(ALL)       ALL
%wheel  ALL=(ALL)       ALL

Вы также можете добавить к этому:

%development    ALL=(TESTAPPS)   ALL

В первом случае ALL указывает на ВСЕ хосты, с которых вы входите в систему, поэтому вы можете предотвратить запуск sudo с определенных хостов.

Просто быстрое предупреждение - если вы сделаете это и включите доступ на запись в эту область, пользователь может просто скопировать команды, скажем, из /bin, /usr /bin или чего-либо еще и запустить то, что ему нравится, от имени пользователя root. Поэтому я мог запустить sudo /opt/apps/myapp/rm -rf / и это сработало бы. Вы также должны ограничить, где эти команды могут выполняться.

0

Я хотел сделать то же самое и нашел этот (по общему признанию старый) вопрос ...

В ходе дальнейших исследований я обнаружил, что справочная страница sudoers проясняет, что она не будет совпадать с косыми чертами в подстановочных знаках для имени команды / пути. Из sudoers(5) (в разделе "Подстановочные знаки"):

Обратите внимание, что косая черта ('/') не будет сопоставляться с подстановочными знаками, используемыми в имени пути.

На странице руководства это не сказано, но я думаю, что совершенно очевидно, что кто-то, имеющий доступ к командам запуска в /opt/userarea/* пытаться запустить что-то вроде /opt/userarea/../../bin/sh что, очевидно, было бы плохо ...

Так что нет, это не будет работать так, как вы хотите (и как я хотел) - по замыслу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .