Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Executando comandos como superusuário com sudo

Executando comandos como superusuário com sudo

Data de Publicação: 12/12/2024
O QUE É?

Saiba sobre os conceitos básicos do sudo e como usá-lo como um usuário comum.

POR QUÊ?

Alguns comandos exigem privilégios de administrador. Para executar um comando com direitos de administrador, é possível usar o comando sudo.

DEDICAÇÃO

A leitura deste artigo leva no máximo 20 minutos. Se você tiver uma pergunta específica, poderá ir diretamente para o respectivo capítulo.

META

Entender os conceitos básicos do sudo e executar comandos com o sudo em determinados casos de uso.

REQUISITOS
  • Privilégios de root ou sudo. Eles estarão disponíveis apenas se você for o administrador do sistema. Para obter mais informações, consulte a Seção 1, “Conceitos básicos do sudo.

  • O pacote sudo precisa ser instalado. Por padrão, esse pacote está disponível no SLE Micro.

1 Conceitos básicos do sudo

Saiba sobre os conceitos básicos do sudo e como ele funciona nos sistemas SLE Micro.

O sudo é um comando do Linux usado para executar programas temporariamente como outro usuário. Ele é a abreviação de substitute user and do e empresta os privilégios de outro usuário, por exemplo, o usuário root. Dessa forma, o sudo ajuda você a realizar tarefas de administração do sistema sem efetuar login como root.

1.1 sudo nos sistemas Linux em geral

Como usuário comum do Linux, você tem permissões reduzidas que são suficientes para a maioria das tarefas. O usuário root é o superusuário do Linux e equivalente ao administrador.

O sudo permite que usuários especificados (não root) ou um grupo de usuários executem tarefas privilegiadas, como chamar funções do sistema como root ou outro usuário. Por meio de um arquivo de configuração, o administrador do sistema pode controlar quais usuários têm permissão para executar comandos do sudo e para quais tarefas.

1.2 sudo em sistemas SLE Micro

Por motivos de segurança, todos os sistemas SLE Micro separam o usuário comum do usuário root. Como usuário comum, você não pode gravar em diretórios do sistema nem instalar programas. Qualquer usuário com acesso à senha de root pode obter esses privilégios e violar o sistema de maneira acidental ou maliciosa.

Por exemplo, você efetuou login como usuário comum e acidentalmente acessa um site malicioso. Um invasor não pode instalar malware em seu sistema sem que você saiba, já que o seu login é de um usuário comum, ou seja, você não tem nenhuma permissão administrativa.

Conforme explicado acima, não é recomendável efetuar login como usuário root permanentemente por motivos de segurança. Uma abordagem mais segura é manter o login com o usuário comum e executar um comando restrito precedido de sudo.

Nota
Nota: O sudo requer direitos de administrador

Em uma máquina de usuário único, em que você definiu a própria senha de root, você tem os direitos necessários para administrar o sistema usando o comando sudo e definir as configurações do sudo por sua conta.

Para obter mais informações sobre como configurar o sudo, consulte https://documentation.suse.com/smart/systems-management/html/sudo-configure-superuser-privileges/index.html.

Em um ambiente multiusuário, como em empresas, os privilégios do sudo são gerenciados por um administrador de sistema e as permissões do usuário root podem ser restritas. Talvez você não tenha permissão para mudar determinados diretórios ou arquivos do sistema, mesmo quando executar o comando com sudo.

1.3 Como o sudo funciona

Ao executar um comando precedido com sudo, o sistema solicita a senha da conta de root. Após a autenticação bem-sucedida, o comando será executado com privilégios de superusuário.

Dependendo da configuração do sudo, os privilégios elevados são mantidos por um determinado período e enquanto você trabalha na mesma sessão de terminal. Portanto, você não precisa inserir uma senha novamente ao executar outro comando sudo.

Para executar um comando com sudo, esta sintaxe é usada:

> sudo [command]

O exemplo a seguir explica como o comando sudo é usado para abrir o Centro de Controle do YaST diretamente no terminal. Para abrir o YaST, são necessários direitos de administrador e, portanto, ele só funciona com o comando sudo.

Exemplo 1: Abrindo o centro de controle do YaST com sudo
> yast
Absolute path to 'yast' is '/usr/sbin/yast', so running it may require superuser privileges (eg. root).1
> sudo yast
[sudo] password for root:2

1

Quando apenas o comando yast é inserido, o sistema retorna um aviso de que os privilégios de root são necessários.

2

Ao iniciar o comando yast com sudo, é solicitado para você inserir a senha de root. A senha não aparece ao ser digitada, nem como texto sem criptografia nem como caracteres de mascaramento.

Após a autenticação bem-sucedida, o Centro de Controle do YaST é aberto.

Os privilégios elevados são mantidos por um determinado período, portanto, você não precisa inserir uma senha novamente para o próximo comando sudo.

2 Executando um comando precedido com sudo

Como usuário comum, você pode executar qualquer comando como root inserindo sudo antes do comando. Isso solicitará que você forneça a senha de root. Se a autenticação for bem-sucedida, o comando será executado como root.

Ao executar um comando precedido com sudo, o sistema solicita a senha da conta de root. Após a autenticação bem-sucedida, o comando será executado com privilégios de superusuário.

Dependendo da configuração do sudo, os privilégios elevados persistem por um determinado período de tempo e enquanto você trabalha na mesma sessão de terminal. Portanto, você não precisa inserir uma senha novamente ao executar outro comando sudo.

Procedimento 1: Executando um comando precedido com sudo

O procedimento a seguir descreve como usar o comando sudo para copiar um arquivo em um diretório em que apenas o usuário root tem direitos de edição.

  1. Abra um terminal e crie um arquivo de teste com:

    > touch test.txt
  2. Tente copiar o arquivo para o diretório /usr/local/bin/ com:

    > cp test.txt /usr/local/bin

    O terminal retorna, por exemplo:

    cp: cannot create regular file '/usr/local/bin/test.txt': Permission denied

    Essa mensagem também é exibida se os privilégios necessários não foram concedidos ao sudo.

  3. Agora insira o mesmo comando precedido com sudo:

    > sudo cp test.txt /usr/local/bin
  4. Será solicitado para você inserir a senha de root. Observe que a senha não aparece ao ser digitada, nem como texto sem criptografia nem como caracteres de mascaramento.

    [sudo] password for root:
  5. Após a autenticação bem-sucedida, o arquivo de teste será copiado para /usr/local/bin.

  6. Você executou seu primeiro comando sudo.

3 Comandos comuns do sudo

Ao adicionar o sudo antes de qualquer comando, você pode executar comandos com permissões elevadas. Você também pode executar comandos como outro usuário e utilizar as variáveis de ambiente dele.

Esta seção apresenta exemplos de comandos comuns que geralmente exigem privilégios administrativos.

Repetir o último comando com sudo

Para repetir o último comando como administrador, execute sudo !! e insira a senha. Por exemplo, um usuário sem privilégios administrativos não pode criar um diretório em /etc/. Para criá-lo, execute sudo !!.

> mkdir /etc/test/
mkdir: cannot create directory ‘/etc/test/’: Permission denied

> sudo !!
sudo mkdir /etc/test/
[sudo] password for root:

> ls -alrt /etc  | grep test
drwxr-xr-x 1 root root        0 Apr 20 12:48 test
Gerenciar pacotes usando sudo e zypper

Para executar comandos de gerenciamento de pacotes como administrador, adicione sudo antes do comando:

> sudo zypper [--GLOBAL-OPTIONS] <COMMAND> [--COMMAND-OPTIONS] [ARGUMENTS]

Por exemplo, para instalar a plataforma de containerização Docker CE do seu repositório de pacotes oficial, execute os seguintes comandos com sudo:

> sudo zypper addrepo https://download.docker.com/linux/suse/docker-ce
            > sudo zypper refresh
            > sudo zypper search docker-ce
            > sudo zypper install docker-ce

Você não precisa adicionar sudo antes de comandos zypper que não modificam o sistema ou fornecem acesso privilegiado às informações. Por exemplo, você pode listar os repositórios para os pacotes de software instalados no sistema sem usar sudo:

> zypper lr
Gerenciar serviços do sistema usando sudo e systemctl

Em sistemas que usam systemd para gerenciamento de serviços, você pode usar o comando systemctl com sudo. Por exemplo, para reiniciar o serviço do Servidor Web Apache, execute:

> sudo systemctl restart apache2

Você não precisa adicionar sudo antes de comandos systemctl que não modificam o sistema ou fornecem acesso privilegiado às informações. Por exemplo, você pode exibir o status do Network Manager sem usar sudo:

> systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled)
    Drop-In: /usr/lib/systemd/system/NetworkManager.service.d
             └─NetworkManager-ovs.conf
     Active: active (running) since DAY YYYY-MM-DD HH:MM:SS TIMEZONE; 1h 21min ago
       Docs: man:NetworkManager(8)
   [...]
Modificar uma conta de usuário usando sudo e usermod

Para executar o comando usermod para modificar contas de usuário, faça o seguinte:

> sudo usermod [OPTION] USERNAME

Por exemplo, para definir o número de dias como 30 para desabilitar permanentemente a conta do usuário tux após o vencimento da senha, execute:

> sudo usermod --inactive 30 tux
Modificar a propriedade de arquivos e diretórios usando sudo e chown

Para mudar as propriedades de arquivo e diretório do proprietário atual para um novo proprietário, use:

> sudo chown [OPTION] [OWNER:[GROUP]] FILE

Por exemplo, para conceder a propriedade de arquivos e subdiretórios a tux no diretório /home/test/tux-files, execute:

> sudo chown tux /home/test/tux-files/ --recursive

Você pode testar a mudança de propriedade executando o seguinte comando:

> ls -alrt /home/test/tux-files/ --recursive
Executar um comando como outro usuário com sudo -s

Em vez de usar o comando su para alternar para um usuário diferente e depois executar os comandos, você pode usar o comando sudo -s. Um shell executado pelo comando sudo -s herda o ambiente do usuário atual. O comando sudo -s também oferece algumas medidas de controle de privilégios.

Para executar um comando como um usuário diferente, use:

> sudo -s -u USERNAME COMMAND

Por padrão, o comando é executado do diretório do usuário anterior porque o usuário de destino herda o ambiente do usuário anterior.

Por exemplo, para listar repetidamente os arquivos e subdiretórios do diretório /home/test/tux-files/ como o usuário de destino tux, execute:

> sudo -s -u tux ls -alrt /home/test/tux-files/ --recursive

Quando você usa a abordagem sudo -s para executar um comando como um usuário diferente, o comando é registrado em seu histórico.

Executar um comando como outro usuário com um ambiente limpo usando sudo -i

Ao usar o comando sudo -s, o usuário de destino herda o ambiente do usuário anterior. Para evitar isso, use o comando sudo -i, em que o usuário de destino obtém um ambiente limpo e é iniciado em seu próprio diretório $HOME.

Para executar um comando como um usuário diferente com um ambiente limpo, use:

> sudo -i -u USERNAME COMMAND

O comando sudo -i executa o shell como um shell de login interativo do usuário de destino. Como resultado, há scripts de inicialização do shell, como os arquivos .profile e .bash_profile.

Por exemplo, para listar os arquivos e subdiretórios do diretório /home/test/tux-files/ como tux, execute o seguinte comando:

> sudo -i -u tux ls -alrt /home/test/tux-files/

Quando você usa a abordagem sudo -i para executar um comando como um usuário diferente, o comando é registrado em seu histórico.

4 Diferença entre sudo e su

Saiba a diferença entre os comandos sudo e su e quando usá-los.

Em sistemas Linux, você pode iniciar um comando com sudo ou su. Ambos permitem executar comandos como root.

4.1 Características do comando sudo

  • O sudo permite executar um comando como root. Dependendo da configuração, não é necessário inserir a senha de root, mas apenas a senha do usuário. Dessa forma, nenhuma informação sigilosa precisa ser compartilhada com todos os outros usuários (comuns).

  • Com o arquivo de configuração do sudo, o administrador do sistema pode controlar quais usuários têm permissão para usar o sudo e restringir o uso a determinadas tarefas.

  • O sudo armazena a senha em cache por um determinado período. Após esse período, será solicitada a senha novamente quando você executar outro comando sudo.

  • Todos os comandos executados com sudo são registrados individualmente. O arquivo de registro monitora a data e o horário, o usuário que executou o comando e o próprio comando.

4.2 Características do comando su

  • O su permite executar um comando como root, mas exige que você saiba a senha de root.

  • Ele não pode ser configurado para restringir o acesso a determinados usuários e tarefas e elevar os privilégios de qualquer pessoa que saiba a senha de root.

  • Os privilégios são elevados para toda a sessão de terminal. Enquanto você permanecer na sessão, a senha não será solicitada novamente.

  • Os comandos executados com su não são registrados individualmente, pois todas as ações apenas podem ser registradas com a conta do usuário.