Manuais para a linha de comandos

Man » Manual online do su - documentação online detalhada para a página de manual do su

🌍
su - execute um comando com um usuário e ID de grupo substitutos

SINTAXE

su [opções] [-] [usuário [argumento...]]

DESCRIÇÃO

su permite que comandos sejam executados com um usuário e ID de grupo substitutos.

Quando chamado sem um usuário especificado, su assume como padrão a execução de um shell interativo como root. Quando o usuário é especificado, argumentos adicionais podem ser fornecidos, nesse caso, eles são passados para o shell.

Para compatibilidade com versões anteriores, su assume como padrão não alterar o diretório atual e definir apenas as variáveis de ambiente HOME e SHELL (mais USER e LOGNAME se o usuário de destino não for root). É recomendado sempre usar a opção --login (em vez de seu atalho -) para evitar efeitos colaterais causados pela mistura de ambientes.

Esta versão do su usa o PAM para autenticação, gerenciamento de conta e sessão. Alguns opções de configuração encontradas em outras implementações do su, como suporte para um grupo wheel, devem ser configuradas via PAM.

su é projetado principalmente para usuários não privilegiados, a solução recomendada para usuários privilegiados
(por exemplo, scripts executados por root) é usar o comando não-set-user-ID runuser(1) que não
requer autenticação e fornece configuração PAM separada. Se a sessão PAM não for
necessária, então a solução recomendada é usar o comando setpriv(1).

Observe que su, em todos os casos, usa o PAM (pam_getenvlist(3)) para realizar a modificação final do ambiente. As opções de linha de comando, como --login e --preserve-environment, afetam o ambiente antes que ele seja modificado pelo PAM.

Desde a versão 2.38, su redefine os limites de recursos do processo RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE,
RLIMIT_AS e RLIMIT_NOFILE.

OPÇÕES

-c, --command comando

Passe o comando para o shell com a opção -c.

-f, --fast

Passe -f para o shell, o que pode ou não ser útil, dependendo do shell.

-g, --group grupo

Especifique o grupo primário. Esta opção está disponível apenas para o usuário root.

-G, --supp-group grupo

Especifique um grupo suplementar. Esta opção está disponível apenas para o usuário root. O primeiro grupo suplementar especificado também é usado como grupo primário se a opção --group não for especificada.

-, -l, --login

Inicie o shell como um shell de login com um ambiente semelhante a um login real.

Observe que em sistemas baseados em systemd, uma nova sessão pode ser definida como um ponto de entrada real para o sistema. No entanto, su não cria uma sessão real (por PAM) sob este ponto de vista. Você precisa usar ferramentas como systemd-run ou machinectl para iniciar uma sessão completa e real.

su faz:

limpa todas as variáveis de ambiente, exceto TERM e as variáveis especificadas por
--whitelist-environment

inicializa as variáveis de ambiente HOME, SHELL, USER, LOGNAME e PATH

altera para o diretório inicial do usuário de destino

define argv[0] do shell como '-' para tornar o shell um shell de login

-m, -p, --preserve-environment

Preserve todo o ambiente, ou seja, não defina HOME, SHELL, USER ou LOGNAME. Esta opção é ignorada se a opção --login for especificada.

-P, --pty

Crie um pseudo-terminal para a sessão. O terminal independente fornece melhor segurança pois o usuário não compartilha um terminal com a sessão original. Isso pode ser usado para evitar injeção de terminal ioctl TIOCSTI e outros ataques de segurança contra descritores de arquivo de terminal. Toda a sessão também pode ser movida para o plano de fundo (por exemplo, su --pty - usuário -c aplicação &). Se o pseudo-terminal estiver habilitado, então su funciona como um proxy entre as sessões (sincroniza stdin e stdout).

Este recurso é projetado principalmente para sessões interativas. Se a entrada padrão não for um terminal, mas por exemplo um pipe (por exemplo, echo "date" | su --pty), então a flag ECHO para o pseudo-terminal é desabilitada para evitar saída confusa.

-s, --shell shell

Execute o shell especificado em vez do padrão. Se o usuário de destino tiver um shell restrito (ou seja, não listado em /etc/shells), a opção --shell e as variáveis de ambiente SHELL são ignoradas, a menos que o usuário que chama seja root.

O shell a ser executado é selecionado de acordo com as seguintes regras, em ordem:

o shell especificado com --shell

o shell especificado na variável de ambiente SHELL, se a opção --preserve-environment
for usada

o shell listado na entrada passwd do usuário de destino

/bin/sh

--session-command=comando

O mesmo que -c, mas não crie uma nova sessão. (Não recomendado.)

-T, --no-pty

Não crie um pseudo-terminal, o oposto de --pty e -P. Observe que a execução sem um pseudo-terminal abre o risco de segurança de elevação de privilégios por meio da injeção de comando ioctl TIOCSTI/TIOCLINUX.

-w, --whitelist-environment lista

Não redefina as variáveis de ambiente especificadas na lista separada por vírgulas ao limpar o ambiente para --login. A lista de permissões é ignorada para as variáveis de ambiente HOME, SHELL, USER, LOGNAME e PATH.

-h, --help

Exibe o texto de ajuda e sai.

-V, --version

Exibe a versão e sai.

SINAIS

Ao receber SIGINT, SIGQUIT ou SIGTERM, o su termina seu processo filho e, em seguida, termina a si mesmo com o sinal recebido. O processo filho é terminado com SIGTERM; após uma tentativa malsucedida e um atraso de 2 segundos, o processo filho é encerrado com SIGKILL.

ARQUIVOS DE CONFIGURAÇÃO

O su lê os arquivos de configuração /etc/default/su e /etc/login.defs. Os seguintes itens de configuração são relevantes para o su:

FAIL_DELAY (número)

Atraso em segundos em caso de falha na autenticação. O número deve ser um inteiro não negativo.

ENV_PATH (string)

Define a variável de ambiente PATH para um usuário normal. O valor padrão é /usr/local/bin:/bin:/usr/bin.

ENV_ROOTPATH (string), ENV_SUPATH (string)

Define a variável de ambiente PATH para o usuário root. ENV_SUPATH tem precedência. O valor padrão é /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

ALWAYS_SET_PATH (booleano)

Se definido como "sim" e as opções --login e --preserve-environment não forem especificadas, o su inicializa o PATH.

A variável de ambiente PATH pode ser diferente em sistemas onde /bin e /sbin são mesclados em /usr; esta variável também é afetada pela opção de linha de comando --login e pela configuração do sistema PAM (por exemplo, pam_env(8)).

STATUS DE SAÍDA

O comando `su` normalmente retorna o status de saída do comando que executou. Se o comando for interrompido por um sinal, `su` retorna o número do sinal mais 128.

Status de saída gerado pelo próprio su:

1   Erro genérico antes de executar o comando solicitado.

126 O comando solicitado não pôde ser executado.

127 O comando solicitado não foi encontrado.

ARQUIVOS

/etc/pam.d/su
Arquivo de configuração PAM padrão.

/etc/pam.d/su-l
Arquivo de configuração PAM se a opção `--login` for especificada.

/etc/default/su
Arquivo de configuração específico do comando `logindef`.

/etc/login.defs
Arquivo de configuração `logindef` global.

NOTAS

Por motivos de segurança, su sempre registra tentativas de login com falha no arquivo btmp, mas não grava no arquivo lastlog. Essa solução pode ser usada para controlar o comportamento de su por meio da configuração PAM. Se você deseja usar o módulo pam_lastlog(8) para imprimir uma mensagem de aviso sobre tentativas de login com falha, pam_lastlog(8) deve ser configurado para atualizar o arquivo lastlog também. Por exemplo, por:

session required pam_lastlog.so nowtmp

HISTÓRICO

Este comando su foi derivado do su do coreutils, que foi baseado em uma implementação de David MacKenzie. A versão util-linux foi refatorada por Karel Zak.

VER TAMBÉM

setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)

RELATANDO BUGS

Para relatar bugs, use o rastreador de problemas [https://github.com/util-linux/util-linux/issues].

DISPONIBILIDADE

O comando su faz parte do pacote util-linux, que pode ser baixado do Linux Kernel Archive [https://www.kernel.org/pub/linux/utils/util-linux/].