Gerenciamento de Usuários
Inspeção e Armazenamento de Usuários
Para verificar as informações do usuário atualmente logado, utilize o comando id. Isso exibirá o UID (ID do usuário), GID (ID do grupo) e os grupos aos quais o usuário pertence. O usuário root sempre possui UID e GID igual a 0.
# Verificar contexto do usuário atual
id
# Saída esperada: uid=0(root) gid=0(root) grupos=0(root)
Cada processo em execução no sistema está associado a um usuário, o que pode ser observado na coluna USER do comando ps aux.
As informações dos usuários são armazenadas em dois arquivos cruciais:
/etc/passwd: Contém os dados do usuário, mas não a senha. O formato de uma linha típica écarlos:x:1050:1050::/home/carlos:/bin/bash, onde os campos representam login, indicador de senha, UID, GID, comentário, diretório home e shell padrão./etc/shadow: Armazena as senhas criptografadas. Mesmo que dois usuários definam a mesma senha, os hashes exibidos serão distintos devido ao uso de salts.
Convenções de UID no Sistema
| Faixa de UID | Descrição |
|---|---|
| 0 | Superadministrador (root), possui controle total e capacidade destrutiva. |
| 1 a 200 | Usuários de sistema, utilizados para executar processos nativos do SO. |
| 201 a 999 | Usuários de sistema para aplicações instaladas pelo administrador. Não necessitam de login interativo. |
| 1000+ | Usuários comuns, capazes de realizar login no sistema com permissões restritas. |
Criação, Modificação e Remoção de Usuários
# Criar grupos para organização
groupadd devops
groupadd estagiarios
# Criar usuário com parâmetros customizados (-u UID, -g grupo primário, -G grupos secundários, -c comentário, -s shell)
useradd -u 2001 -g estagiarios -G devops -c "Desenvolvedor Junior" -s /bin/bash pedro_dev
passwd pedro_dev
# Criar usuário de sistema sem diretório home e sem capacidade de login (-M sem home, -s shell inválido)
useradd banco_dados -M -s /sbin/nologin
# Modificar usuário: -L bloqueia a conta, -U desbloqueia
usermod -L pedro_dev
usermod -U pedro_dev
# Remover usuário (preserva o diretório home)
userdel carlos
# Remover usuário e seu diretório home
userdel -r pedro_dev
Alternância de Contexto e Escalação de Privilégios (su e sudo)
O comando su permite alternar entre usuários. Se o root trocar para um usuário comum, nenhuma senha é exigida; o contrário exige a senha do root. A opção - (ex: su - usuario) garante o carregamento completo das variáveis de ambiente do usuário destino.
O uso de su exige o compartilhamento da senha root, o que é inseguro. O sudo resolve isso permitindo que usuários comuns executem comandos administrativos temporariamente, mediante sua própria senha, desde que devidamente autorizados.
# Adicionar o usuário ao grupo wheel (grupo com privilégios de administração)
usermod pedro_dev -G wheel
# Executar um comando administrativo como usuário comum
sudo useradd novo_usuario
Permissões Padrão de Arquivos
As permissões no Linux são divididas em três categorias de identidade: Dono (Owner), Grupo (Group) e Outros (Others). Cada uma pode ter permissões de Leitura (r), Escrita (w) e Execução (x).
As permissões podem ser representadas numericamente: Leitura=4, Escrita=2, Execução=1.
# Atribuição simbólica
chmod u=rwx,g=rw,o=r config.yaml
# Atribuição numérica (rwx=7, rw-=6, r--=4)
chmod 764 config.yaml
# Adicionar permissão de execução para todos
chmod +x script_deploy.sh
Atributos Especiais de Arquivos
Além das permissões padrão, o Linux suporta atributos estendidos que podem impedir até mesmo o root de modificar arquivos acidentalmente, a menos que o atributo seja removido.
+i(Immutable): Impede qualquer alteração, exclusão ou renomeação.+a(Append): Permite apenas a adição de dados ao arquivo, proibindo exclusões.
# Proteger arquivo contra alterações
chattr +i /etc/resolv.conf
# Remover a proteção
chattr -i /etc/resolv.conf
Compactação e Arquivamento
Enquanto o Windows utiliza amplamente o formato RAR, no Linux os padrões são tar.gz e zip. O formato RAR não é nativo do Linux, tornando o ZIP ideal para interoperabilidade.
gzip
Comprime apenas arquivos individuais, removendo o original após a compressão.
# Compactar
gzip log_app.txt
# Descompactar
gzip -d log_app.txt.gz
zip e unzip
# Compactar arquivos e diretórios
zip -r backup_projeto.zip src/ config/ db.conf
# Testar integridade do pacote
unzip -t backup_projeto.zip
# Descompactar no diretório atual
unzip backup_projeto.zip
# Descompactar em destino específico
unzip backup_projeto.zip -d /opt/restaura/
tar
Ferramenta de arquivamento que combina múltiplos arquivos em um único tarball, podendo integrar compactação gzip ou bzip2.
# Criar pacote compactado com gzip
tar czf site_backup.tar.gz public_html/ scripts/
# Listar conteúdo do pacote
tar tf site_backup.tar.gz
# Extrair pacote (detecção automática de compressão)
tar xf site_backup.tar.gz
# Extrair com detalhamento do processo
tar xvf site_backup.tar.gz
Gerenciamento de Pacotes e Software
RPM
O RPM (Red Hat Package Manager) instala pacotes locais com extensão .rpm, mas não resolve dependências automaticamente.
# Instalar um pacote
rpm -ivh htop-3.2.1.el7.x86_64.rpm
# Consultar se o pacote está instalado
rpm -q htop
# Listar todos os pacotes e filtrar
rpm -qa | grep htop
# Listar arquivos instalados por um pacote
rpm -ql htop
# Remover pacote
rpm -e htop
YUM
O YUM é um gerenciador de alto nível que resolve dependências automaticamente baixando pacotes de repositórios configurados.
# Configurar repositórios espelho (ex: Aliyun)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# Pesquisar software
yum list | grep postgres
yum info postgres
# Instalar software
yum install htop -y
# Atualizar e remover
yum update htop -y
yum remove htop -y
Instalação via Código Fonte
Permite instalar a versão mais recente e customizar o código antes da compilação. Utilizando o Nginx como exemplo:
# Baixar e extrair fontes
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar xf nginx-1.25.3.tar.gz
cd nginx-1.25.3
# Instalar dependências de compilação
yum -y install gcc make pcre-devel zlib-devel openssl-devel
# Configurar parâmetros de compilação e definir diretório de instalação
./configure --prefix=/opt/nginx
# Compilar e instalar
make
make install
# Adicionar o binário ao PATH do sistema (editar ~/.bash_profile)
echo 'export PATH=$PATH:/opt/nginx/sbin' >> ~/.bash_profile
source ~/.bash_profile
Gerenciamento de Serviços com Systemd
No CentOS 7 e derivados, o systemctl é o padrão para o gerenciamento de serviços (start, stop, status, reload, enable).
Aplicações instaladas via YUM geralmente já registram seus serviços. Para softwares compilados manualmente, é necessário criar uma unidade de serviço.
# Criar arquivo de serviço
vim /usr/lib/systemd/system/webapp.service
# Conteúdo do arquivo webapp.service:
[Unit]
Description=Servidor Web Customizado
After=network.target
[Service]
Type=forking
ExecStart=/opt/nginx/sbin/nginx
ExecStop=/opt/nginx/sbin/nginx -s stop
ExecReload=/opt/nginx/sbin/nginx -s reload
[Install]
WantedBy=multi-user.target
# Recarregar daemon, iniciar e habilitar na inicialização
systemctl daemon-reload
systemctl start webapp
systemctl enable webapp
# Desativar firewall na inicialização
systemctl stop firewalld
systemctl disable firewalld
Gerenciamento de Processos
Para monitorar os processos em execução, o comando ps aux fornece detalhes como usuário dono (USER), ID do processo (PID), uso de CPU e memória, e o comando que iniciou o processo (COMMAND).
# Visualizar todos os processos
ps aux
# Filtrar processo específico
ps aux | grep postgres
# Monitoramento dinâmico em tempo real
top
# Encerrar processos de forma forçada
kill -9 1234 # Onde 1234 é o PID
pkill -9 nginx # Encerra todos os processos com o nome nginx