Gerenciamento de Sistemas Linux: Usuários, Permissões, Pacotes e Processos

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

Tags: Linux administração de sistemas systemd RPM yum

Publicado em 9-6 10:44