Вы можете использовать подстановочные знаки в спецификации команды sudoers. Чтобы разрешить запуск /bin/su
только с аргументом, который начинается с 5 строчных букв, за которыми следует любое количество других аргументов, вы можете использовать
michael ALL=(ALL) NOPASSWD: /bin/su [a-z][a-z][a-z][a-z][a-z]*
Невозможно ограничиться одним аргументом, если этот аргумент не имеет фиксированного размера, потому что единственным подстановочным знаком, который может соответствовать строке переменной -длины, является *
, и он также соответствует границам аргументов.
Если вам нужны более сложные правила, настройте sudo, чтобы разрешить запуск сценария-оболочки, и выполните проверку аргументов в этом сценарии-оболочке.
…: ALL, /bin/su …
не имеет никакого смысла, так как ALL
уже допускает произвольные команды. Это просто эквивалентно …: ALL
.
Неясно, какую семантику вы подразумеваете из этой конфигурации sudoers, поскольку вы сосредоточились на конкретной реализации, а не на цели . Если вы хотите разрешить Майклу выполнять произвольные команды от имени определенных пользователей без пароля, вызов su
— странный косвенный способ сделать это. Sudo уже выполняет повышение привилегий, зачем использовать su сверху? Определите набор пользователей и разрешите Майклу выполнять произвольные команды от имени любого из этих пользователей.
User_Alias target_users = alice, charlie, dominique
michael ALL = (target_users) NOPASSWD: ALL
Оказалось, что я использовал устройство захвата звука, которое подключалось через GPIO, и, по-видимому, оно недостаточно быстрое для обработки звука для двух потоков. Когда я переключился на высококачественный АЦП захвата USB, он отлично работал.