Você pode usar curingas em uma especificação de comando sudoers. Para permitir executar /bin/su
apenas com um argumento que comece com 5 letras minúsculas seguido por qualquer número de outros argumentos, você pode usar
michael ALL=(ALL) NOPASSWD: /bin/su [a-z][a-z][a-z][a-z][a-z]*
Não há como restringir a um único argumento, a menos que esse argumento tenha um tamanho fixo, porque o único caractere curinga que pode corresponder a uma string de tamanho variável é *
e também corresponde aos limites de argumentos.
Se você precisar de regras mais complicadas, configure o sudo para permitir a execução de um script de wrapper e execute a verificação de argumentos nesse script de wrapper.
…: ALL, /bin/su …
não faz sentido, pois ALL
já permite comandos arbitrários. É apenas equivalente a …: ALL
.
Não está claro qual é a semântica pretendida dessa configuração de sudoers, pois você focou em uma implementação específica, em vez de uma meta . Se você quiser permitir que Michael execute comandos arbitrários como certos usuários sem uma senha, invocar su
é uma maneira indireta de fazer isso. Sudo já faz privilégio de elevação, por que usar o su no topo? Defina um conjunto de usuários e permita que Michael execute comandos arbitrários como qualquer um desses usuários.
User_Alias target_users = alice, charlie, dominique
michael ALL = (target_users) NOPASSWD: ALL