Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Sistemas Operativos

Como Alterar Usuário no Linux: O Guia Completo

Linux é um sistema operativo multi-utilizador por design, e gerir identidades de utilizadores é uma das competências mais fundamentais que qualquer administrador de sistemas precisa de dominar. Quer esteja a gerir um ambiente VPS Hosting, a configurar um servidor web, ou a resolver problemas de permissões de ficheiros após uma implementação, compreender como mudar de utilizadores em Linux é essencial.

A frase “mudar de utilizador” em Linux cobre na verdade várias operações distintas, cada uma com as suas próprias ferramentas, riscos e melhores práticas:

  • Mudar para outra conta na shell (por exemplo, de john para root) para uma sessão interativa
  • Executar um único comando como um utilizador diferente sem mudar completamente de sessão
  • Mudar qual utilizador um serviço ou processo executa — crítico para o endurecimento de segurança
  • Mudar a propriedade de ficheiros e directórios — essencial após migrações, restauros ou implementações
  • Modificar atributos da conta de utilizador — renomear utilizadores, mudar UIDs, ou ajustar membros de grupos

Este guia cobre todos estes cenários em profundidade, explicando quando usar cada abordagem, como fazê-lo com segurança, e quais os erros a evitar — para que possa gerir utilizadores Linux com confiança sem quebrar permissões, serviços, ou acesso.

Mudar para Outro Utilizador (Shell Interativo)

Quando precisa de uma sessão de terminal interativo completo como outro utilizador — para administração do sistema, teste do comportamento da aplicação sob uma conta diferente, ou acesso a uma conta de serviço — Linux fornece duas ferramentas principais: su e sudo.

Usando su (Mudar Utilizador)

O comando su substitui a sua identidade de utilizador atual por outra:

su - username

A flag - (também escrita como -l ou --login) é importante: carrega o ambiente de login completo do utilizador alvo, incluindo o seu diretório home, PATH, perfil de shell e variáveis de ambiente. Sem a flag -, herda muito do seu ambiente atual, o que pode causar comportamento subtil e confuso — especialmente ao executar scripts ou serviços.

Para mudar diretamente para root:

su -

> Nota de segurança: Em muitas distribuições Linux modernas, a senha da conta root está desativada por padrão (particularmente em sistemas baseados em Ubuntu). Nestes casos, su para root falhará, e sudo é a abordagem correta.

Usando sudo -i (Preferido para Shells Root/Admin)

sudo -i

Isto dá-lhe um shell de login root equivalente a su -, mas autentica usando os seus próprios privilégios sudo em vez de exigir a senha root. Esta é a abordagem recomendada na maioria das distribuições modernas porque:

  • Evita a necessidade de partilhar ou conhecer a senha root
  • Todas as ações são registadas via trilho de auditoria sudo
  • Respeita a sua configuração e restrições sudoers

Mudar para Outro Utilizador com um Shell de Login via sudo

sudo -iu username

Isto combina -i (shell de login) e -u (utilizador alvo), dando-lhe um ambiente de login limpo como o utilizador especificado — sem necessidade da senha desse utilizador.

Executar um Comando Único como Outro Utilizador

Frequentemente não precisa de uma sessão interativa completa — apenas precisa executar um comando com uma identidade diferente. Este é o padrão mais comum e seguro para escalação de privilégios.

Usando sudo -u

sudo -u username whoami
sudo -u postgres psql

O segundo exemplo é extremamente comum em administração de bases de dados — mudar para o utilizador do sistema postgres para aceder a PostgreSQL sem autenticação por palavra-passe.

Executar um Comando com um Ambiente de Login Limpo

sudo -iu username command_here

Isto garante que o comando é executado com o ambiente completo do utilizador alvo, não com as variáveis da sua sessão atual.

Executar um Comando como Root

sudo systemctl restart nginx

Este é o padrão standard para tarefas administrativas: executar um único comando privilegiado sem abrir uma shell root.

Alterar o Utilizador sob o qual um Serviço é Executado (systemd)

Em praticamente todas as distribuições Linux modernas, systemd gere serviços. Por razões de segurança, cada serviço deve ser executado sob uma conta de utilizador dedicada e sem privilégios, em vez de root. Executar serviços como root é um risco de segurança significativo — se o serviço for comprometido, o atacante obtém acesso root a todo o sistema.

Isto é especialmente importante em Servidores Dedicados e ambientes VPS de produção onde múltiplos serviços podem estar em execução simultaneamente.

Verificar a Configuração Atual do Serviço

systemctl cat myservice.service

Procure pelas diretivas User= e Group= na secção [Service]:

[Service]
User=www-data
Group=www-data

Substituir o Utilizador do Serviço (Método Seguro)

Em vez de editar o ficheiro de unidade original (que pode ser sobrescrito em atualizações de pacotes), utilize systemctl edit para criar uma substituição drop-in:

sudo systemctl edit myservice.service

Isto abre um editor onde adiciona:

[Service]
User=myuser
Group=mygroup

Guarde o ficheiro e aplique as alterações:

sudo systemctl daemon-reload
sudo systemctl restart myservice.service

Verificar se o Serviço está a Ser Executado com o Utilizador Correto

systemctl status myservice.service
ps -eo user,pid,cmd | grep myservice

Inspecionar o Utilizador de Qualquer Processo em Execução

ps -eo user,pid,cmd | grep nginx
ps -p <PID> -o user,group,cmd

> Importante: Linux não lhe permite alterar o utilizador de um processo já em execução no local. Deve reiniciar o processo (ou configurar o gestor de serviços para o iniciar sob o utilizador correto) para que a alteração tenha efeito.

Alterar a Propriedade de Ficheiros com chown

A propriedade de ficheiros é uma parte fundamental do modelo de permissões do Linux. Após migrações, implementações, cópias de segurança ou restauros, a propriedade pode acabar atribuída ao utilizador errado — causando erros de permissão negada, aplicações web danificadas ou dados inacessíveis. O comando chown é a sua ferramenta principal para corrigir isto.

Esta é uma tarefa comum ao configurar ambientes de Alojamento Web Partilhado ou ao implementar aplicações web num VPS.

Alterar o Proprietário de um Ficheiro

sudo chown username file.txt

Alterar Proprietário e Grupo

sudo chown username:groupname file.txt

Alteração Recursiva de Propriedade (Usar com Cuidado)

sudo chown -R username:groupname /var/www/site

A flag -R aplica a alteração recursivamente a todos os ficheiros e subdiretórios. Use isto com cuidado — aplicá-lo ao caminho errado (por exemplo, / ou /etc) pode danificar todo o seu sistema.

Preservar Ligações Simbólicas

sudo chown -h username:groupname symlink

Sem -h, chown segue ligações simbólicas e altera a propriedade do ficheiro de destino, não da ligação simbólica em si. Use -h quando quiser especificamente alterar a propriedade da ligação simbólica.

Pré-visualizar Propriedade Antes de Fazer Alterações

Para árvores de diretórios grandes, sempre pré-visualize antes de aplicar um chown recursivo:

find /path -maxdepth 2 -printf '%u:%g %pn' | head

Isto mostra o proprietário e grupo atual para os dois primeiros níveis da árvore de diretórios, permitindo-lhe confirmar o âmbito da alteração antes de a confirmar.

Confirme Sua Identidade Atual

Antes de fazer alterações, sempre verifique quem você é e em que contexto está operando. Isso evita alterações acidentais feitas sob a conta errada.

Verifique Seu Usuário Atual

whoami

Obtenha Informações Completas de Identidade (Usuário, Grupos, UIDs)

id

Exemplo de saída:

uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)

Veja Quem Está Conectado ao Sistema

who
w

Verifique o Usuário Original Ao Usar sudo

Quando você escala com sudo, duas variáveis de ambiente são relevantes:

echo $USER        # The current effective user (root)
echo $SUDO_USER   # The original user who invoked sudo (e.g., alice)

Essa distinção importa em scripts — $SUDO_USER informa quem realmente executou o comando.

Modificar Atributos da Conta de Utilizador

Por vezes, “alterar utilizador” significa modificar a própria conta: renomeá-la, alterar o seu UID ou ajustar as associações de grupo. Estas são alterações permanentes, em todo o sistema, que podem afetar logins, permissões de ficheiros e acesso a serviços.

> Melhor prática: Antes de fazer modificações na conta, certifique-se de que o utilizador está desconectado e nenhum processo está em execução sob essa conta.

Renomear um Utilizador (Alterar Nome de Utilizador)

sudo usermod -l newname oldname

Isto altera o nome de login, mas não renomeia automaticamente o diretório home. Para também mover e renomear o diretório home:

sudo usermod -d /home/newname -m newname

Se o utilizador tem um grupo primário com o mesmo nome que o seu nome de utilizador anterior (que é o padrão na maioria das distribuições), atualize também o nome do grupo:

sudo groupmod -n newname oldname

Alterar o UID de um Utilizador

sudo usermod -u 2001 username

> Crítico: Após alterar um UID, todos os ficheiros anteriormente propriedade do UID antigo aparecerão como propriedade de um ID numérico desconhecido. Deve corrigir isto imediatamente:

sudo find / -user oldUID -exec chown -h username {} ;

Substitua oldUID pelo UID numérico anterior. Este comando procura em todo o sistema de ficheiros ficheiros com o UID antigo e reatribui-os ao novo nome de utilizador.

Adicionar um Utilizador a um Grupo

O caso de uso mais comum é conceder acesso sudo a um utilizador:

Debian/Ubuntu:

sudo usermod -aG sudo username

RHEL / AlmaLinux / Rocky Linux:

sudo usermod -aG wheel username

A flag -a é crítica — acrescenta o utilizador ao grupo sem o remover dos grupos existentes. Omitir -a substituirá todas as associações de grupo apenas pelo grupo especificado.

Verificar Associação de Grupo

id username

Folha de Referência Rápida

Aqui está uma referência consolidada para todas as operações de alternância e gerenciamento de utilizadores abordadas neste guia:

TarefaComando
Mudar para outro utilizador (shell de login)su - username
Mudar para outro utilizador via sudosudo -iu username
Abrir uma shell rootsudo -i
Executar um comando como outro utilizadorsudo -u username command
Executar um comando como postgressudo -u postgres psql
Verificar utilizador atualwhoami
Verificar identidade completa e gruposid
Verificar invocador sudo originalecho $SUDO_USER
Alterar proprietário do ficheirosudo chown username file
Alterar proprietário e grupo do ficheirosudo chown username:group file
Alteração recursiva de propriedadesudo chown -R username:group /path
Pré-visualizar propriedade do diretóriofind /path -maxdepth 2 -printf '%u:%g %pn'
Alterar utilizador de serviço (systemd)sudo systemctl edit myservice.service
Recarregar systemd após alteraçõessudo systemctl daemon-reload
Verificar utilizador do processo`ps -eo user,pid,cmdgrep service`
Renomear um utilizadorsudo usermod -l newname oldname
Mover diretório homesudo usermod -d /home/newname -m newname
Alterar UIDsudo usermod -u 2001 username
Corrigir propriedade após alteração de UIDsudo find / -user oldUID -exec chown -h username {} ;
Adicionar utilizador ao grupo sudosudo usermod -aG sudo username
Verificar associação ao grupoid username

Resumo

Gerenciar usuários em Linux não é uma operação única — é uma família de tarefas relacionadas, cada uma com suas próprias ferramentas e implicações:

  • Use sudo -iu username para sessões interativas como outro usuário (preferido em relação a su em sistemas modernos)
  • Use sudo -u username command para executar comandos individuais com uma identidade diferente
  • Use systemctl edit para alterar com segurança qual usuário um serviço systemd executa
  • Use chown para corrigir a propriedade de arquivo após implantações, migrações ou problemas de permissão
  • Use usermod para alterações permanentes de conta — renomeação, alterações de UID e gerenciamento de grupo

Compreender essas distinções ajuda você a evitar erros comuns, como quebrar permissões de serviço, bloquear-se fora de arquivos ou conceder acidentalmente privilégios excessivos.

Se você está executando infraestrutura baseada em Linux — seja um servidor web, um banco de dados ou uma pilha de aplicativos personalizada — ter um ambiente de hospedagem adequadamente configurado torna o gerenciamento de usuários significativamente mais fácil. A AlexHost oferece Painéis de Controle VPS flexíveis e opções de VPS com cPanel que oferecem acesso root completo junto com interfaces de gerenciamento intuitivas, para que você possa aplicar tudo neste guia com confiança.