GNU/Linux
 
 
Configuração e Diretórios do Sistema
(do GNU/Linux)

O GNU/Linux é composto com uma infinidade de arquivos de configuração e diretórios. Vamos dar uma olhada para verificar qual a função de cada um deles.


Tabela 1: Comandos equivalentes
Diretórios Descrição
/usr/bin/ Arquivos binários.
/usr/sbin/ Arquivos binários, geralmente daemons.
/etc/init.d/ Scripts de inicialização de serviços ou habilitação de funções.
/etc/rc0.d/ to rc6.d/ Arquivos que informação a ordem inicialização de serviços ou habilitação de funções durante o boot.
/usr/lib/ Arquivos de bibliotecas.
/usr/share/doc/ Documentação.
/proc Diretório virtual.
/lib/modules/ Local onde ficam os módulos/drivers dos kernels. Para entrar no diretório dos módulos do kernel atual digite "cd /lib/modules/$(uname -r)"
/usr/src para instalar os sources/código fonte do kernel no Debian e no RedHat utilize "apt-get install linux-headers" e "yum install kernel-devel", respectivamente.
/etc/skel/ Este diretório contém os modelos (esqueledo -> skel) dos arquivos (incluindo o conteúdo) e diretórios que serão carregados para o diretório pessoal no momento em que for criada uma conta no sistema. Criando, configurando e alterando estes arquivos e diretórios não haverá necessidade realizar isto separadamente quando for adicionar um usuário no sistema operacional.
/lib/modules/ Local onde ficam os módulos/drivers dos kernels. Para entrar no diretório dos módulos do kernel atual digite "cd /lib/modules/$(uname -r)"
/boot/ para instalar o kernel já pré-compilado no Debian e no RedHat utilize "apt-get install kernel-image" e "yum install xxxxxx", respectivamente.
Arquivos Descrição
~/.bash_logout Este arquivo fica em "/home/~/".
~/.bash_profile
(em desuso)

~/.profile
(atual)
Definição 1: seria o "/etc/profile" individual para cada usuário.

Definição 2: arquivo que contém o perfil individual de cada usuário. É neste arquivo onde se colocam o ambiente/programas/comandos para um usuário em específico que serão válidos/executados no momento do login. Este arquivo é lido depois dos arquivos "/etc/profile" e "/etc/bash.bashrc", respectivamente". Geralmente, o arquivo " ~/.bash_profile" fica em "/home/~/". Já o "~/.profile " fica em "/root/". Contudo, alguns já estão usando o "~/.profile" para todos os usuários do sistema. Esse arquivo pussui uma chamada de sistema para o "~/.bashrc", conforme figura a seguir:


~/.bashrc Definição 1: seria o "/etc/bashrc" individual para cada usuário.

Definição 2: arquivo que contém o perfil individual de cada usuário. É neste arquivo onde se colocam as funções e aliases para um usuário em específico que serão válidos/executados no momento do login. Este arquivo é lido depois dos arquivos "/etc/profile", "/etc/bash.bashrc" e "~/.profile", respectivamente". Este arquivo é carregado com uma entrada em "~/.profile". Segue o conteúdo desse arquivo:



Obs: Na parte de shell e subshell os alias feitos (comando “alias”) trabalham da mesma forma que as variáveis de ambiente local.
/etc/bash.bashrc
/etc/bash_profile
/etc/bashrc
Esse arquivo é bastante usado, contudo, poucos sabem qual é o seu verdadeiro uso. A seguir colocarei duas definições que vão clarear o seu significado:

Definição 1: esse arquivo é usado por todos os usuários no momento em que é efetuado login (pelo menos na teoria). Esse arquivo é usado somente para os usuários que usam o shell chamado "bash" que é definido em "/etc/passwd". Esse arquivo deve ser usado para inserir funções globais do sistema (system wide functions) e aliases.

Definição 2: arquivo que contém o perfil global do sistema. É neste arquivo onde se colocam as funções e aliases para todos os usuários que serão válidos/executados no momento do login. Este arquivo é lido depois do arquivo "/etc/profile". Deveria existir uma chamada de sistema desse arquivo dentro do "/etc/profile", mas sei que no Debian GNU/Linux esta entrada não existe. Ele também pode ser entendido como o "~/.bashrc" global do sistema.

Obs: Na parte de shell e subshell os alias feitos (comando “alias”) trabalham da mesma forma que as variáveis de ambiente local.
/etc/profile Esse arquivo é bastante usado, contudo, poucos sabem qual é o seu verdadeiro uso. A seguir colocarei duas definições que vão clarear o seu significado:

Definição 1: esse arquivo é usado por todos os usuários no momento em que é efetuado login. Esse arquivo é independente do shell usado pelos usuários que é definido em "/etc/passwd". Esse arquivo deve ser usado para inserir coisas relacionadas ao ambiente global do sistema (system wide environment). Aqui são colocadas as variáveis de ambiente global e programas de inicialização (startup programs). Ex: HISTFILESIZE=5000, HISTSIZE=5000 e HISTTIMEFORMAT='%F %T '.

Definição 2: arquivo que contém o perfil global do sistema. É neste arquivo onde se colocam o ambiente/programas/comandos para todos os usuários que serão válidos/executados no momento do login. Este arquivo é lido antes dos arquivos "/etc/bash.bashrc", "~/.profile", "~/.bashrc". É nesse arquivo, "/etc/profile", onde ficam algumas variáveis de ambiente e alguns comandos "export". Uma varialvel de ambiente bastante usada nesse arquivo é o PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin".
/etc/issue O conteúdo desse arquivo é mostrado (pelo getty) antes da mensagem de login.
/etc/issue.net O conteúdo desse arquivo é mostrado (pelo getty) para o cliente remoto ao se conectar em um servidor. Essa mensagem vem antes da digitação da senha. Geralmente é usado por programa de acesso remoto como o "ssh".
/etc/motd MOTD (Message Of The Day). Arquivo mostrado depois do login ter sido efetuado com sucesso.
/etc/environment Armazena as variáveis de ambiente que são exportadas para todo o sistema. Arquivo que lida com variáveis de localização. Essas variáveis colocadas aqui são globais. Ex: HISTFILESIZE=5000, HISTSIZE=5000 e HISTTIMEFORMAT='%F %T '.
/etc/init.d/rc.local Script que executa o /etc/rc.local. O "start" o executa e o "stop" não tem função.
/etc/locale.gen Esse arquivo lista os idiomas do sistema. Pode-se achar a lista válida suportada em "/usr/share/i18n/SUPPORTED". Ao mudar esse arquivo é necessário executar o comando "locale-gen".
/etc/rc.local É o arquivo onde podem ser adicionados scripts, comandos etc que serão executados no final de todos os runlevels do sistema. Em resumo, os scripts ou comandos dentro deste arquivo serão executados depois que todos os serviços do sistema forem executados, ou seja, no final do boot do sistema. De uma forma groseira e para quem conhece o MS Windows, ele pode ser entendido como o "autoexec.bat" do GNU/Linux.
/proc .
/proc/dma This file contains a list of the registered ISA DMA channels in use. A sample /proc/dma files looks like the following: 4: cascade
/lib/init/vars.sh x
/etc/nologin Se for criado o arquivo "/etc/nologin", somente o root poderá logar no sistema e o que estiver dentro desse arquivo será exibido caso outro usuário tente logar.
Módulos Descrição
/lib/modules/ Local onde ficam os módulos/drivers dos kernels. Para entrar no diretório dos módulos do kernel atual digite "cd /lib/modules/$(uname -r)"
/etc/modules

/etc/sysconfig/modules/*.modules
Módulos do kernel que são carregados durante o boot/inicialização do sistema. O Debian usa o "/etc/modules" e o RedHat o "/etc/sysconfig/modules/*.modules".
No RedHat a leitura de módulos adicionais definidos pelo usuário ficam em “/etc/sysconfig/modules/*.modules” que é uma chamada de sistema que está dentro do arquivo “/etc/rc.d/rc.sysinit”. Na verdade, o arquivo “/etc/rc.d/rc.sysinit” executa tudo o que está dentro de “/etc/sysconfig/modules/” que tiver a extensão “.modules” durante a inicialização do sistema. Assim, tais arquivos devem ser criados sem com esta extensão e também devem ser deve ser criado com permissões de execução. Por exemplo, para adicionar o módulo “fuse” digite os comandos: echo “modprobe fuse” >> /etc/sysconfig/modules/fuse.modules ; chmod 755 /etc/sysconfig/modules/fuse.modules; /etc/sysconfig/modules/fuse.modules.
No RedHat a leitura de módulos adicionais para compatibilidade com VARs ficam em “/etc/rc.modules” que é uma chamada de sistema que está dentro do arquivo “/etc/rc.d/rc.sysinit”. Geralmente o “/etc/rc.modules” não existe e deve ser criado com permissões de execução. Obs: o “/etc/rc.d/rc.sysinit” geralmente tem um link simbólico chamado “/etc/rc.sysinit”.
/proc/modules lista de módulos carregados no sistema
Kernel Pré-Compilado Descrição
/boot/ para instalar o kernel já pré-compilado no Debian e no RedHat utilize "apt-get install kernel-image" e "yum install xxxxxx", respectivamente.
Código Fonte do Kernel Descrição
/usr/src para instalar os sources/código fonte do kernel no Debian e no RedHat utilize "apt-get install linux-headers" e "yum install kernel-devel", respectivamente.
Filesystem Descrição
/proc/filesystems X
/etc/filesystems X
Gerenciar usuários e grupos Descrição
/etc/passwd Este arquivo contém as contas de usuário, uma linha para cada conta, com 7 campos delimitado pelo sinal de dois pontos (":"). O formato é "1:2:3:4:5:6:7:8:9", onde o campo:
  • 1: login name;
  • 2: optional encrypted password. Se o campo "password" estiver em branco, significa que não é necessária senha para autenticar. Se conter um "x" minúsculo, significa que a senha está armazenada em "/etc/shadow";
  • 3: numerical user ID;
  • 4: numerical group ID;
  • 5: user name or comment field;
  • 6: user home directory;
  • 7: optional user command interpreter;
Ex1: "root:$1$sbddzF71$TWG14hxtAq8yxA9/gss1a0:14679:0:99999:7:::".
Ex2: "hugo:$1$8h3xFtxx$rtR5qV2ibaB6337VDDMEf0:14565:0:99999:7:::".
Ex3: "hugo:$1$2n3SYMU/$DHdGOwkqke57IxCtMC3ej.:14821:3:2:5:1:14823:".


PERMISSÕES CORRETAS (Segurança - Cai na certificação LPI)
- r w - r - - r - - 1 root root /etc/passwd
- r - - - - - - - - 1 root root /etc/shadow


PERMISSÕES no Debian (Segurança)
- r w - r - - r - - 1 root root /etc/passwd
- r w - r - - - - - 1 root shadow /etc/shadow
/etc/shadow Arquivo que contém as senhas encriptadas dos usuários, com 9 campos delimitado pelo sinal de dois pontos (":"). O formato é "1:2:3:4:5:6:7:8:9", onde o campo:
  • 1: login name;
  • 2: encrypted password;
  • 3: days since Jan 1, 1970 that password was last changed;
  • 4: days before password may be changed;
  • 5: days after which password must be changed;
  • 6: days before password is to expire that user is warned;
  • 7: days after password expires that account is disabled;
  • 8: days since Jan 1, 1970 that account is disabled;
  • 9: a reserved field.
Ex1: "root:x:0:0:root:/root:/bin/bash".
Ex2: "hugo:x:1000:1000:Hugo Azevedo de Jesus,,,:/home/hugo:/bin/bash".

As permissões desse arquivo são bastante limitadas: "-rw-r----- 1 root shadow".


PERMISSÕES CORRETAS (Segurança - Cai na certificação LPI)
- r w - r - - r - - 1 root root /etc/passwd
- r - - - - - - - - 1 root root /etc/shadow


PERMISSÕES no Debian (Segurança)
- r w - r - - r - - 1 root root /etc/passwd
- r w - r - - - - - 1 root shadow /etc/shadow
/etc/group Arquivo que contém os grupos de usuário, com 4 campos delimitado pelo sinal de dois pontos (":"). O formato é "1:2:3:4", onde o campo:
  • 1: group name;
  • 2: group password;
  • 3: group ID;
  • 4: user list. Lista de usuários, separados por vírgula, pertecentes a esse grupo.
Ex1: "root:x:0:".
Ex2: "hugo:x:1000:".
Ex2: "suporte:x:1001:hugo,juvenal,maria".
/etc/gshadow Arquivo que contém as senhas encriptadas dos grupos, com 4 campos delimitado pelo sinal de dois pontos (":"). O formato é "1:2:3:4", onde o campo:
  • 1: group name;
  • 2: encrypted password;
  • 3: lista de grupos administradores separados por vírgula;
  • 4: lista de grupos membros separados por vírgula;
Ex1: "suporte:!::".
Ex2: "manutencao:MYDP3AvwpBfNE::".

As permissões desse arquivo são bastante limitadas: "-rw-r----- 1 root shadow".
/etc/skel/ Este diretório contém os modelos (esqueledo -> skel) dos arquivos (incluindo o conteúdo) e diretórios que serão carregados para o diretório pessoal no momento em que for criada uma conta no sistema. Criando, configurando e alterando estes arquivos e diretórios não haverá necessidade realizar isto separadamente quando for adicionar um usuário no sistema operacional.
/etc/default/useradd Contém os valores padrão usados ao adicionar um usuário com o comando "useradd".
Rede Descrição
/etc/services Lista os nomes dos serviços de rede (ex: ssh), a sua porta (ex: 22) e o seu respectivo protocolo (ex: TCP). Alguns serviços utilizam esse arquivo como referência que é o caso do INETD/XINETD. Segue o padrão "serviço", número/protocolo e alias (opcional). Ex: ssh 22/TCP SSH.
/etc/protocols Lista os nomes dos protocolos de rede (ex: tcp) que estão disponíveis no subsistema do TCP/IP. Segue o padrão "protocolo", número e alias. Ex: ip 0 IP.
/etc/rcp Lista os nomes dos protocolos rpc (ex: x25.inr) que estão disponíveis no subsistema do TCP/IP. Segue o padrão "protocolo rpc", número_rpc e alias. Ex: keyser 100029 keyserver.
/etc/hostname
(Debian)

/etc/sysconfig/network
(Fedora)
Arquivo que contém o nome da máquina.
/etc/hosts Arquivo que contém uma tabela estática para os nomes e IPs de máquinas na rede. Esse arquivo é lido antes do sistema tentar resolver o nome com o DNS (/etc/resolv.conf). Ele segue o padrão:

IP hostname.domain hostname

Ex: 127.0.0.1 localhost.localdomain localhost

Ex: 172.16.200.20 amd4000.matrix.lan.br amd4000

Ex: ::1 ip6-localhost ip6-loopback

Ex: fe00::0 ip6-localnet
/etc/host.conf Arquivo que contém informações de resolução de nome:

multi on | off -> habilita o retorno de todos os endereços válidos achados em "/etc/hosts". Se não trará somente o primeiro.

order hosts,bind -> para a resolução de nomes de máquina (host), primeiramente vai ser consultado o "/etc/hosts" (files) e depois o servidor DNS (dns) que está relacionado em "/etc/resolv.conf"
/etc/networks Arquivo que contém uma tabela estática para os endereços de rede. Esse arquivo é lido, por exemplo, pelo comando "route". Ele segue o padrão:

netname network

default 0.0.0.0

loopback 127.0.0.0

link-local 169.254.0.0

localnet 172.16.200.0
/etc/nsswitch.conf Arquivo que contém a ordem ou prioridade nas fontes de consulta. Quem deve ser consultado primeiro.

hosts: files dns -> para a resolução de nomes de máquina (host), primeiramente vai ser consultado o "/etc/hosts" (files) e depois o servidor DNS (dns) que está relacionado em "/etc/resolv.conf"

networks: files -> para a resolução de nomes de rede (network), vai ser consultado o "/etc/networks" (files)

protocols: db files -> para a resolução de nomes de protocolos (protocols), primeiramente vai ser consultado a database local (.db) e depois o "/etc/protocols" (files)

services: db files -> para a resolução de nomes de serviços (services), primeiramente vai ser consultado a database local (.db) e depois o "/etc/services" (files)

rcp: db files -> para a resolução de nomes rcp, primeiramente vai ser consultado a database local (.db) e depois o "/etc/rcp" (files)
/etc/udev/rules.d/z25_persistent-net.rules ARQUIVO MUITO IMPORTANTE NO QUAL SE MANIPULA AS INTERFACES DE REDE. UM DOS SEUS ATRIBUTOS [E EM RELACAO A NOMEACAO/AMARRACAO DE UMA INTERFACES DE REDE (EX: ETH0) PARA UM PLACA DE REDE (MAC) ESPECIFICA. QUEM JA POSSOU PELO PROBLEMA DE QUANDO RETIRADA UMA PLACA DE REDE (ETH0) E COLOCADA UMA OUTRA, ESSA OUTRA VEM COM OUTRO NOME PARA A INTERFACE (ETH1). PARA SE MANIPULAR ISSO [E NECESSARIO MANIPULAR ESSE ARQUIVO.
X X
X X
X X
X X
X X
X X
X X
X X
X X
 
 




ETI - Especialista em Tecnologia
da Informação