Executando comandos como superusuário com sudo
- 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 osudo
em determinados casos de uso.- REQUISITOS
Privilégios de
root
ousudo
. 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 dosudo
”.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
.
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
.
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
Quando apenas o comando | |
Ao iniciar o comando Após a autenticação bem-sucedida, o é 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
.
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.
Abra um terminal e crie um arquivo de teste com:
>
touch test.txt
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
.Agora insira o mesmo comando precedido com
sudo
:>
sudo
cp test.txt /usr/local/bin
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:
Após a autenticação bem-sucedida, o arquivo de teste será copiado para
/usr/local/bin
.
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, executesudo !!
.>
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
ezypper
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 comandoszypper
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 usarsudo
:>
zypper lr
- Gerenciar serviços do sistema usando
sudo
esystemctl
Em sistemas que usam
systemd
para gerenciamento de serviços, você pode usar o comandosystemctl
comsudo
. Por exemplo, para reiniciar o serviço do Servidor Web Apache, execute:>
sudo
systemctl restart apache2
Você não precisa adicionar
sudo
antes de comandossystemctl
que não modificam o sistema ou fornecem acesso privilegiado às informações. Por exemplo, você pode exibir o status do Network Manager sem usarsudo
:>
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
eusermod
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áriotux
após o vencimento da senha, execute:>
sudo
usermod --inactive 30 tux
- Modificar a propriedade de arquivos e diretórios usando
sudo
echown
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 comandosudo -s
. Um shell executado pelo comandosudo -s
herda o ambiente do usuário atual. O comandosudo -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 destinotux
, 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 comandosudo -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/
comotux
, 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 comoroot
. Dependendo da configuração, não é necessário inserir a senha deroot
, 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 osudo
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 comandosudo
.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 comoroot
, mas exige que você saiba a senha deroot
.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.
5 Informações legais #
Copyright © 2006-2024 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.