Como Alterar Usuário no Linux: O Guia Completo
Linux é um sistema operacional 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 de 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 utilizador em Linux é essencial.
A frase “mudar de utilizador” em Linux cobre 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
johnpararoot) 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 endurecimento de segurança
- Mudar a propriedade de ficheiros e diretórios — essencial após migrações, restauros ou implementações
- Modificar atributos de 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 erros evitar — para que possa gerir utilizadores Linux com confiança sem quebrar permissões, serviços ou acesso.
Índice
- Mudar para Outro Utilizador (Shell Interativa)
- Executar um Único Comando como Outro Utilizador
- Mudar o Utilizador que um Serviço Executa (systemd)
- Mudar a Propriedade de Ficheiros com chown
- Confirmar a Sua Identidade Atual
- Modificar Atributos de Conta de Utilizador
- Folha de Referência Rápida
Mudar para Outro Utilizador (Shell Interativa)
Quando precisa de uma sessão de terminal interativa completa como outro utilizador — para administração de sistemas, teste de comportamento de aplicação sob uma conta diferente ou acesso a uma conta de serviço — Linux fornece duas ferramentas principais: su e sudo.
Usar su (Mudar Utilizador)
O comando su substitui a sua identidade de utilizador atual por outra:
su - usernameA 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 conta root tem a palavra-passe desativada por padrão (particularmente em sistemas baseados em Ubuntu). Nestes casos, su para root falhará, e sudo é a abordagem correta.
Usar sudo -i (Preferido para Shells Root/Admin)
sudo -iIsto dá-lhe uma shell de login root equivalente a su -, mas autentica usando os seus próprios privilégios sudo em vez de exigir a palavra-passe root. Esta é a abordagem recomendada na maioria das distribuições modernas porque:
- Evita a necessidade de partilhar ou conhecer a palavra-passe root
- Todas as ações são registadas através da trilha de auditoria sudo
- Respeita a sua configuração e restrições sudoers
Mudar para Outro Utilizador com uma Shell de Login via sudo
sudo -iu usernameIsto combina -i (shell de login) e -u (utilizador alvo), dando-lhe um ambiente de login limpo como o utilizador especificado — sem precisar da palavra-passe desse utilizador.
Executar um Único Comando como Outro Utilizador
Frequentemente não precisa de uma sessão interativa completa — apenas precisa de executar um comando com uma identidade diferente. Este é o padrão mais comum e seguro para escalação de privilégios.
Usar sudo -u
sudo -u username whoamisudo -u postgres psqlO segundo exemplo é extremamente comum em administração de bases de dados — mudar para o utilizador de sistema postgres para aceder a PostgreSQL sem autenticação de palavra-passe.
Executar um Comando com um Ambiente de Login Limpo
sudo -iu username command_hereIsto garante que o comando executa com o ambiente completo do utilizador alvo, não as variáveis da sua sessão atual.
Executar um Comando como Root
sudo systemctl restart nginxEste é o padrão para tarefas administrativas: executar um único comando privilegiado sem abrir uma shell root.
Mudar o Utilizador que um Serviço Executa (systemd)
Em praticamente todas as distribuições Linux modernas, systemd gere serviços. Para segurança, cada serviço deve executar sob uma conta de utilizador dedicada e não privilegiada em vez de root. Executar serviços como root é um risco de segurança significativo — se o serviço for comprometido, o atacante ganha 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 a executar simultaneamente.
Verificar a Configuração Atual do Serviço
systemctl cat myservice.serviceProcure pelas diretivas User= e Group= na secção [Service]:
[Service]
User=www-data
Group=www-dataSobrepor 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), use systemctl edit para criar uma sobreposição drop-in:
sudo systemctl edit myservice.serviceIsto abre um editor onde adiciona:
[Service]
User=myuser
Group=mygroupGuarde o ficheiro, depois aplique as alterações:
sudo systemctl daemon-reload
sudo systemctl restart myservice.serviceVerificar que o Serviço Está a Executar como o Utilizador Correto
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceInspecionar o Utilizador de Qualquer Processo em Execução
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Importante: Linux não permite que mude o utilizador de um processo já em execução no local. Deve reiniciar o processo (ou configurar o gestor de serviços para o lançar sob o utilizador correto) para que a alteração tenha efeito.
Mudar a Propriedade de Ficheiros com chown
A propriedade de ficheiros é uma parte central do modelo de permissões de 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 quebradas 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 implementar aplicações web num VPS.
Mudar o Proprietário de um Ficheiro
sudo chown username file.txtMudar Proprietário e Grupo
sudo chown username:groupname file.txtMudança de Propriedade Recursiva (Use com Cuidado)
sudo chown -R username:groupname /var/www/siteA 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 quebrar todo o seu sistema.
Preservar Ligações Simbólicas
sudo chown -h username:groupname symlinkSem -h, chown segue ligações simbólicas e muda a propriedade do ficheiro alvo, não da ligação simbólica em si. Use -h quando especificamente quer mudar 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' | headIsto mostra o proprietário e grupo atual para os dois primeiros níveis da árvore de diretórios, deixando-o confirmar o âmbito da alteração antes de se comprometer.
Confirmar a Sua Identidade Atual
Antes de fazer alterações, sempre verifique quem é e em que contexto está a operar. Isto previne alterações acidentais feitas sob a conta errada.
Verificar o Seu Utilizador Atual
whoamiObter Informações de Identidade Completa (Utilizador, Grupos, UIDs)
idExemplo de saída:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Ver Quem Está Ligado ao Sistema
whowVerificar o Utilizador Original Ao Usar sudo
Quando 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)Esta distinção importa em scripts — $SUDO_USER diz-lhe quem realmente executou o comando.
Modificar Atributos de Conta de Utilizador
Às vezes “mudar de utilizador” significa modificar a conta em si: renomeá-la, mudar o seu UID ou ajustar membros de grupos. 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 de conta, garanta que o utilizador está desligado e nenhum processo está a executar sob essa conta.
Renomear um Utilizador (Mudar Nome de Utilizador)
sudo usermod -l newname oldnameIsto muda 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 newnameSe o utilizador tem um grupo primário com o mesmo nome que o seu nome de utilizador antigo (que é o padrão na maioria das distribuições), atualize também o nome do grupo:
sudo groupmod -n newname oldnameMudar o UID de um Utilizador
sudo usermod -u 2001 username> Crítico: Após mudar 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 usernameRHEL / AlmaLinux / Rocky Linux:
sudo usermod -aG wheel usernameA flag -a é crítica — anexa o utilizador ao grupo sem removê-lo de grupos existentes. Omitir -a substituirá todas as membros de grupos apenas pelo grupo especificado.
Verificar Membros de Grupo
id usernameFolha de Referência Rápida
Aqui está uma referência consolidada para todas as operações de mudança de utilizador e gestão cobertas neste guia:
| Tarefa | Comando | |
|---|---|---|
| Mudar para outro utilizador (shell de login) | su - username | |
| Mudar para outro utilizador via sudo | sudo -iu username | |
| Abrir uma shell root | sudo -i | |
| Executar um comando como outro utilizador | sudo -u username command | |
| Executar um comando como postgres | sudo -u postgres psql | |
| Verificar utilizador atual | whoami | |
| Verificar identidade completa e grupos | id | |
| Verificar invocador sudo original | echo $SUDO_USER | |
| Mudar proprietário de ficheiro | sudo chown username file | |
| Mudar proprietário e grupo de ficheiro | sudo chown username:group file | |
| Mudança de propriedade recursiva | sudo chown -R username:group /path | |
| Pré-visualizar propriedade de diretório | find /path -maxdepth 2 -printf '%u:%g %pn' | |
| Mudar utilizador de serviço (systemd) | sudo systemctl edit myservice.service | |
| Recarregar systemd após alterações | sudo systemctl daemon-reload | |
| Verificar utilizador de processo | `ps -eo user,pid,cmd | grep service` |
| Renomear um utilizador | sudo usermod -l newname oldname | |
| Mover diretório home | sudo usermod -d /home/newname -m newname | |
| Mudar UID | ###PPT_NOTR_89 |
