Estou vendo um comportamento estranho relacionado ao sudo em um conjunto específico de sistemas, mas não em outros. Não tenho certeza se há alguma alteração de configuração específica necessária aqui, o que está faltando.
A configuração do sudoer é para habilitar usuários não-root (usei o testuser no exemplo abaixo) para instalar e configurar os pacotes do produto. O sistema operacional é o SUSE 12.
A seguir, o comportamento visto no cenário problemático:
1.) Inicialmente, quando os sudoers não estão configurados, obtemos algo assim:
# sudo -l -U testuser
User testuser is not allowed to run sudo on <node>.
2.) Em seguida, se criarmos o arquivo /etc/sudoers.d/prodtest_install:
Cmnd_Alias PROD_NODEKITS = /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_test.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_pkg1.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_pkg2.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install pkg3.rpm
Cmnd_Alias PROD_NODESETUP = /opt/org/prod/test/bin/prod-setup
testuser ALL=(root) NOPASSWD: PROD_NODEKITS
testuser ALL=(root) NOPASSWD: PROD_NODESETUP
Defaults!PROD_NODEKITS !requiretty
Defaults!PROD_NODESETUP !requiretty
Ainda vemos algo como:
# sudo -l -U testuser
User testuser is not allowed to run sudo on <node>.
testuser também não é capaz de usar nenhum dos comandos acima: ie. diga:
# sudo /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install pkg3.rpm
não funciona e pede senhas de usuários e, mesmo se digitarmos senhas, o comando não passa.
3.) Mas, se adicionarmos 2 linhas extras "testuser ALL = (root) NOPASSWD: ALL" e "testuser ALL = (ALL) ALL" para permitir todos os comandos em /etc/sudoers.d/prodtest_install:
Cmnd_Alias PROD_NODEKITS = /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_test.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_pkg1.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_pkg2.rpm, \
/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install pkg3.rpm
Cmnd_Alias PROD_NODESETUP = /opt/org/prod/test/bin/prod-setup
testuser ALL=(root) NOPASSWD: PROD_NODEKITS
testuser ALL=(root) NOPASSWD: ALL
testuser ALL=(ALL) ALL
testuser ALL=(root) NOPASSWD: PROD_NODESETUP
Defaults!PROD_NODEKITS !requiretty
Defaults!PROD_NODESETUP !requiretty
Então, vemos algo assim:
# sudo -l -U testuser
Matching Defaults entries for testuser on <node>:
always_set_home, secure_path=/usr/sbin\:/usr/bin\:/sbin\:/bin, env_reset, env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE",
!insults
Runas and Command-specific defaults for testuser:
Defaults!/opt/org/prod/test/bin/prod !requiretty
Defaults!/usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_test.rpm, /usr/bin/zypper --non-interactive
--repo local --no-gpg-checks install org_prod_pkg1.rpm, /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install
org_prod_pkg2.rpm, /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install pkg3.rpm !requiretty
Defaults!/opt/org/prod/test/bin/prod-setup !requiretty
User testuser may run the following commands on <node>:
(root) NOPASSWD: ALL
(ALL) ALL
Não sei por que comandos específicos não estão sendo listados, assim como não estou trabalhando com o sudo. Este sistema também não está tendo o /etc/sudo.conf, que pode elimina o uso de um plugin sudo diferente.
No entanto, se eu adicionar o /etc/sudoers.d/prodtest_install como fornecido acima em outros sistemas locais de teste do SUSE 12 não há problema e vejo as seguintes linhas extras listadas em "sudo -l -U testuser":
User testuser may run the following commands on <local_node>:
(root) NOPASSWD: /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install org_prod_test.rpm, /usr/bin/zypper
--non-interactive --repo local --no-gpg-checks install org_prod_pkg1.rpm, /usr/bin/zypper --non-interactive --repo local --no-gpg-checks
install org_prod_pkg2.rpm, /usr/bin/zypper --non-interactive --repo local --no-gpg-checks install pkg3.rpm
(root) NOPASSWD: /opt/org/prod/test/bin/prod-setup
Existe alguma coisa que precisa ser configurada de forma diferente no sistema problemático / shoudl eu verifico alguma coisa?
Obrigado e cumprimentos calorosos, Prasad