Após 9 anos desde a formação da ramificação 1.8.x do sudo, foi anunciado o lançamento de uma nova versão significativa do utilitário usado para organizar a execução de comandos em nome de outros usuários , a nova versão sendo "sudo 1.9.0", que também marca uma nova ramificação.
O sudo é o utilitário mais essencial e amplamente utilizado em sistemas operacionais do tipo Unix, como Linux, BSD ou Mac OS X, porque, como mencionado, permite que os usuários executem programas com os privilégios de segurança de outro usuário (geralmente o usuário root) de forma segura, tornando-se assim temporariamente um superusuário.
Por padrão, o usuário precisa se autenticar com sua senha ao executar o comando sudo. Após a autenticação, e se o arquivo de configuração /etc/sudoers permitir que o usuário acesse o comando necessário, o sistema o executará.
Existe uma opção para habilitar o parâmetro NOPASSWD para evitar a necessidade de digitar a senha do usuário ao executar o comando. O arquivo de configuração /etc/sudoers especifica quais usuários podem executar quais comandos em nome de quais outros usuários.
Como o sudo é muito rígido com o formato desse arquivo e quaisquer erros podem causar sérios problemas, existe o utilitário visudo; Esta opção é usada para verificar se o arquivo / etc / sudoers não está sendo usado em outra sessão do usuário root, evitando assim a multiedição com possível corrupção do arquivo.
Principais novos recursos do Sudo 1.9.0
Esta nova versão destaca o trabalho realizado para fornecer o processo em segundo plano " sudo_logsrvd " ao sistema , projetado para registro centralizado de outros sistemas . Ao usar `sudo` com a opção ` --enable-openssl` , os dados são transmitidos por um canal de comunicação criptografado (TLS).
O registro de logs é configurado usando a opção `log_servers` no `sudoers` , e para desativar o suporte ao novo mecanismo de envio de logs, as opções " --disable-log-server " e "--disable-log-client" foram adicionadas.
Além disso, foi adicionado um novo tipo de plugin de "auditoria" , que envia mensagens sobre chamadas bem-sucedidas e malsucedidas, bem como quaisquer erros que ocorram. Também foi adicionado um novo tipo de plugin que permite conectar seus próprios controladores de login que não dependem da funcionalidade padrão. Por exemplo, um controlador para registrar logs em formato JSON é implementado como um plugin.
Um novo tipo de plugin de " aprovação " também foi adicionado, o qual realiza verificações adicionais após uma verificação de autorização básica baseada em regras bem-sucedida no sudoers. Vários plugins desse tipo podem ser especificados na configuração, mas a confirmação da operação só é emitida quando ela for aprovada por todos os plugins listados na configuração.
Nos comandos `sudo` e `sudo_logsrvd` , um arquivo de log adicional é criado em formato JSON, refletindo informações sobre todos os parâmetros dos comandos em execução, incluindo o nome do host. Esse log é usado pelo utilitário `sudoreplay` , que permite filtrar comandos por nome de host.
A lista de argumentos da linha de comando passada através da variável de ambiente SUDO_COMMAND agora é truncada para 4096 caracteres.
Outras mudanças notáveis em relação ao anúncio incluem:
- O comando sudo -S agora imprime todas as solicitações na saída padrão ou stderr, sem acessar o dispositivo de controle do terminal.
- Para testar a interação com o servidor ou enviar logs existentes, é proposto o utilitário sudo_sendlog;
- Adicionada a capacidade de desenvolver plug-ins sudo em Python, que é habilitado durante a compilação com a opção «–Enable-python".
- En blusas, ao invés de Cmnd_Aliases, Cmd_Aliases Agora também é válido.
- Novas configurações adicionadas pam_ruser e pam_rhost para habilitar / desabilitar a configuração do nome de usuário e do host ao configurar uma sessão por meio do PAM.
- É possível especificar mais de um hash SHA-2 em uma linha de comando separada por vírgulas. O hash SHA-2 também pode ser usado em sudoers em conjunto com a palavra-chave "ALL" para definir comandos que só podem ser executados quando o hash corresponder.