Por motivos óbvios de segurança, não é esperado que o SysAdmin conceda a senha do usuário root para os DBAs (assim como não concedemos o usuário SYSTEM do banco para terceiros). Há a abordagem melhor ainda, quando estas credencias não ficam na posse de nenhuma dessas equipes, e sim em um cofre de senhas administrado pelo time de Segurança.
A questão é que a cada dia que passa, é mais comum precisarmos rodar comandos “root” com um usuário “comum”. Para isso, podemos usufruir do recurso do SUDO. Este é um conceito fácil que vou exemplificar neste artigo.
Ambiente de teste (também é válido em Oracle Linux):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | -bash-4.4$ cat /etc/*release* NAME="Oracle Solaris" PRETTY_NAME="Oracle Solaris 11.4" CPE_NAME="cpe:/o:oracle:solaris:11:4" ID=solaris VERSION=11.4 VERSION_ID=11.4 BUILD_ID=11.4.0.0.1.15.0 HOME_URL="https://www.oracle.com/solaris/" SUPPORT_URL="https://support.oracle.com/" Oracle Solaris 11.4 X86 Copyright (c) 1983, 2018, Oracle and/or its affiliates. All rights reserved. Assembled 16 August 2018 -bash-4.4$ |
Logado com um usuário não privilegiado, validando que o mesmo não tem acesso ao comando shutdown:
1 2 3 4 5 | -bash-4.4$ id uid=100(swiv) gid=10(staff) -bash-4.4$ shutdown /usr/sbin/shutdown: Only root can run /usr/sbin/shutdown -bash-4.4$ |
Neste caso, o SA poderia conceder um acesso restrito ao usuário em questão para que o mesmo tenha permissão de executar este comando, conforme exemplo abaixo. Essas regras são persistidas no arquivo “/etc/sudoers”, mas podemos utilizar o “visudo” para fazer as edições, pois ele garante que as operações se manterão íntegras (principalmente ao bloquear o arquivo para os casos de edição simultânea) e faz a validação de sintaxe:
1 2 3 | root@solariSWIV:~# id uid=0(root) gid=0(root) root@solariSWIV:~# visudo |
Adicionado a seguinte linha:
1 2 3 | root@solariSWIV:/sbin# cat /etc/sudoers | grep swiv swiv ALL=/sbin/shutdown root@solariSWIV:/sbin# |
Agora logado com o usuário, incluímos a instrução “sudo” no momento da execução. Será solicitado a senha deste usuário comum, e o comando é executado com sucesso.
1 2 3 4 5 6 7 8 9 | -bash-4.4$ id uid=100(swiv) gid=10(staff) -bash-4.4$ sudo /sbin/shutdown Password: Shutdown started. Mon Jan 9 22:49:30 CET 2023 Broadcast Message from root (pts/3) on solariSWIV Mon Jan 9 22:49:30... The system solariSWIV will be shut down in 1 minute |
Esta é a melhor abordagem: conceder os privilégios necessários, e não mais que isso.