SUDO_USER undefined in sudo manual - esclarecimento seria adorável

3

A declaração a seguir aparece no início do manual do sudoers, refere-se à "variável de ambiente SUDO_USER", mas o manual não a define:

If sudo is run by root and the SUDO_USER environment variable is set, the sudoers policy will use this value to determine who the actual user is. This can be used by a user to log commands through sudo even when a root shell has been invoked. It also allows the -e option to remain useful even when invoked via a sudo-run script or program. Note, however, that the sudoers lookup is still done for root, not the user specified by SUDO_USER.

Este parágrafo inteiro permanece bastante indescritível para mim, qualquer esclarecimento seria apreciado. Por exemplo, o que significa que a política de sudoers usa a variável de ambiente SUDO_USER para determinar quem realmente é o usuário e o que significa que ele pode ser usado por um usuário para registrar comandos?

Esta sentença também me escapa:

This can be used by a user to log commands through sudo even when a root shell has been invoked.

    
por 0JC1 15.03.2015 / 03:31

1 resposta

7

SUDO_USER está documentado em man sudo (não sudoers ):

SUDO_USER        Set to the login name of the user who invoked sudo.

Ou seja, se você executar sudo sh -c 'echo $SUDO_USER' , será uma maneira indireta de obter o efeito de whoami .

sudo registra quando um usuário executa (ou tenta executar) um comando através dele. Você pode listá-los com journalctl /usr/bin/sudo ou algo equivalente para o seu sistema. Ele lista o nome de usuário e o comando de cada chamada.

Se sudo for executado 1) como root e 2) com SUDO_USER set, a entrada de log será marcada com SUDO_USER username, em vez de "root". Isso permite que um usuário (cooperante) registre os comandos que eles executaram para a posteridade, mesmo que eles estivessem em um ambiente irrestrito. sudo sempre tem sucesso quando executado com privilégios de root (a menos que seja desabilitado com a configuração root_sudo ), já que você pode simplesmente executar o comando sem ele.

Existem duas maneiras principais pelas quais isso aconteceria. O primeiro é o óbvio sudo bash ou equivalente e o desejo de gravar as coisas. O outro caso de uso é para scripts, que podem registrar as ações reais realizadas em nome dos usuários. É um comportamento informativo, não um problema de segurança.

sudo -e é usado para editar arquivos e usa um conjunto diferente de políticas de segurança, também documentado em man sudo e comportamentos de edição um pouco mais seguros. Às vezes, as pessoas o usam quando logado como root para esses recursos, e tem a mesma interação com SUDO_USER como acima.

    
por 15.03.2015 / 03:57

Tags