Capítulo 10. Administração do Sistema

10.1. Onde estão os arquivos de configuração de inicialização do sistema?
10.2. Como eu adiciono um usuário facilmente?
10.3. Por que eu continuo recebendo mensagens como root: not found depois de editar o arquivo /etc/crontab?
10.4. Por que eu recebo o erro, you are not in the correct group to su root quando tento executar o comando su para o usuário root ?
10.5. Cometi um erro no rc.conf, ou outro arquivo de inicialização, e agora não posso editá-lo porque o sistema de arquivos está montado somente leitura. O que devo fazer?
10.6. Por que estou tendo problemas para configurar minha impressora?
10.7. Como posso corrigir os mapeamentos de teclado para o meu sistema?
10.8. Por que não consigo colocar as quotas de usuários para funcionar corretamente?
10.9. O FreeBSD suporta System V IPC primitives?
10.10. Qual outro software de servidor de correio posso usar em substituição ao Sendmail?
10.11. Esqueci a senha do root! O que eu faço?
10.12. Como evito que a combinação de teclas Control+Alt+Delete reinicialize o sistema?
10.13. Como faço para converter arquivos de texto do DOS para UNIX®?
10.14. Como faço para reler o arquivo /etc/rc.conf e reiniciar o /etc/rc sem dar boot?
10.15. Tentei atualizar o meu sistema para a versão -STABLE mais recente, mas obtive a -BETAx, -RC ou -PRERELEASE! O que está acontecendo?
10.16. Tentei instalar um novo kernel, e o chflags(1) falhou. Como faço para contornar isso?
10.17. Não consigo alterar a hora no meu sistema em mais de um segundo! Como faço para contornar isso?
10.18. Por que o rpc.statd está usando 256 MB de memória?
10.19. Por que não posso dar unset na flag schg de um arquivo?
10.20. O que é vnlru?
10.21. O que os vários estados de memória exibidos pelo top significam?
10.22. Quanta memória livre está disponível?
10.23. O que é o /var/empty?
10.24. Acabei de alterar o /etc/newsyslog.conf . Como posso verificar se ele faz o que eu espero?
10.25. Minha hora está errada, como posso mudar o fuso horário?

10.1.

Onde estão os arquivos de configuração de inicialização do sistema?

O arquivo de configuração principal é o /etc/defaults/rc.conf, o qual está descrito em rc.conf(5). Os scripts de inicialização do sistema, tais como /etc/rc e /etc/rc.d, que são descritos em rc(8), incluem este arquivo. Não edite este arquivo! Em vez disso, para editar uma entrada do /etc/default/rc.conf, copie a linha para o arquivo /etc/rc.conf e altere-a lá.

Por exemplo, se para iniciar named(8), o servidor DNS incluído:

# echo 'named_enable="YES"' >> /etc/rc.conf

Para iniciar serviços locais, coloque seus shell scripts no diretório /usr/local/etc/rc.d. Estes shell scripts devem estar definidos como executáveis, o modo de arquivo padrão é 555.

10.2.

Como eu adiciono um usuário facilmente?

Use o comando adduser ( 8 ), para as situações mais complexas utilize o comando pw ( 8 ).

Para remover o usuário, use o comando rmuser(8) ou, se necessário, o comando pw(8).

10.3.

Por que eu continuo recebendo mensagens como root: not found depois de editar o arquivo /etc/crontab?

Isto normalmente é causado pela edição do crontab do sistema. Esta não é a maneira correta de fazer as coisas, pois o crontab do sistema tem um formato diferente dos crontabs por usuário. O crontab do sistema possui um campo extra, especificando qual usuário irá executar o comando. O cron(8) assume que este usuário é a primeira palavra do comando a ser executado. Como esse comando não existe, essa mensagem de erro é exibida.

Para excluir o crontab extra incorreto:

# crontab -r

10.4.

Por que eu recebo o erro, you are not in the correct group to su root quando tento executar o comando su para o usuário root ?

Este é um recurso de segurança. Para executar su para root, ou qualquer outra conta com privilégios de superusuário, a conta do usuário deve ser um membro do grupo wheel. Se este recurso não estivesse lá, qualquer pessoa com uma conta em um sistema e que também descobrisse a senha do root seria capaz de obter acesso de nível de superusuário ao sistema.

Para permitir que alguém execute o comando su root , coloque-os no grupo wheel usando o comando pw:

# pw groupmod wheel -m lisa

O exemplo acima adicionará o usuário lisa ao grupo wheel .

10.5.

Cometi um erro no rc.conf, ou outro arquivo de inicialização, e agora não posso editá-lo porque o sistema de arquivos está montado somente leitura. O que devo fazer?

Reinicie o sistema usando boot -s no prompt do loader para entrar no modo single user. Quando o sistema solicitar o caminho do shell, apenas pressione Enter e execute mount -urw / para remontar novamente o sistema de arquivos raiz no modo de leitura e gravação. Você também pode precisar executar o comando mount -a -t ufs para montar o sistema de arquivos no qual seu editor favorito é mantido. Se esse editor estiver em um sistema de arquivos de rede, configure a rede manualmente antes de montar os sistemas de arquivos de rede ou use um editor que resida em um sistema de arquivos local, tal como o ed(1).

Para usar um editor de tela inteira, tal como o vi(1) ou emacs(1), execute export TERM=xterm para que esses editores possam carregar os dados corretos do banco de dados do termcap(5).

Depois de executar estas etapas, edite o arquivo /etc/rc.conf para corrigir o erro de sintaxe. A mensagem de erro exibida imediatamente após as mensagens de inicialização do kernel deve indicar o número da linha no arquivo que está com erro.

10.6.

Por que estou tendo problemas para configurar minha impressora?

Consulte a seção sobre impressão no Handbook do FreeBSD para dicas de soluções de problemas.

10.7.

Como posso corrigir os mapeamentos de teclado para o meu sistema?

Consulte a seção usando localização do Handbook, mais especificamente a seção sobre a configuração do console .

10.8.

Por que não consigo colocar as quotas de usuários para funcionar corretamente?

  1. É possível que o kernel não esteja configurado para usar quotas. Neste caso, adicione a seguinte linha ao arquivo de configuração do kernel e recompile o kernel:

    options QUOTA

    Consulte a seção do Handbook sobre quotas para obter detalhes completos.

  2. Não ative o uso de quotas na partição /.

  3. Coloque o arquivo de quotas no sistema de arquivos para o qual quotas precisam ser aplicadas:

    Sistema de arquivoArquivo de quota
    /usr/usr/admin/quotas
    /home/home/admin/quotas

10.9.

O FreeBSD suporta System V IPC primitives?

Sim, o FreeBSD suporta o IPC no estilo do System V, incluindo memória compartilhada, mensagens e semáforos, no kernel GENERIC. Em um kernel personalizado, o suporte pode ser por meio do carregamento dos módulos de kernel sysvshm.ko, sysvsem.ko e sysvmsg.ko, ou habilitado de forma estática no kernel personalizado adicionando as seguintes linhas ao arquivo de configuração do mesmo:

options    SYSVSHM          # enable shared memory
options    SYSVSEM          # enable for semaphores
options    SYSVMSG          # enable for messaging

Recompile e instale o kernel.

10.10.

Qual outro software de servidor de correio posso usar em substituição ao Sendmail?

O servidor Sendmail é o software de servidor de email padrão do FreeBSD, mas pode ser substituído por outro MTA instalado a partir da coleção de ports. Os ports disponíveis incluem o mail/exim, o mail/postfix e o mail/qmail. Procure informações nas listas de discussão sobre as vantagens e desvantagens dos MTAs disponíveis.

10.11.

Esqueci a senha do root! O que eu faço?

Não entre em pânico! Reinicie o sistema, digite boot -s no prompt Boot: para entrar no modo single user. Na pergunta sobre o shell a ser usado, pressione Enter, que será exibido um prompt #. Insira o comando mount -urw / para remontar o sistema de arquivos raiz no modo de leitura e gravação e, em seguida, execute o comando mount -a para remontar todos os sistemas de arquivos. Execute o comando passwd root para alterar a senha do usuário root e então execute o comando exit(1) para continuar a inicialização.

Nota:

Se você ainda for solicitado a entrar com a senha do usuário root ao entrar no modo single user único, isso significa que o console foi configurado como inseguro no arquivo /etc/ttys. Neste caso, será necessário inicializar a partir de um disco de instalação do FreeBSD, escolher o Live CD ou Shell no início do processo de instalação e executar os comandos mencionados acima. Monte a partição específica neste caso e, em seguida, execute o chroot para ela. Por exemplo, substitua mount -urw / por mount /dev/ada0p1 /mnt; chroot /mnt para um sistema em instalado em ada0p1.

Nota:

Se a partição raiz não puder ser montada a partir do modo de usuário único, é possível que as partições estejam criptografadas e será impossível montá-las sem as chaves de acesso. Para obter mais informações, consulte a seção sobre discos criptografados no Handbook do FreeBSD.

10.12.

Como evito que a combinação de teclas Control+Alt+Delete reinicialize o sistema?

Ao usar vt(4), o driver de console padrão, isso pode ser feito configurando o seguinte sysctl sysctl(8):

# sysctl kern.vt.kbd_reboot=0

10.13.

Como faço para converter arquivos de texto do DOS para UNIX®?

Use este comando perl(1):

% perl -i.bak -npe 's/\r\n/\n/g' file(s)

no qual files(s) trata-se de um ou mais arquivos que desejamos processar. A modificação é feita in-place, o arquivo original é preservado com uma extensão .bak.

Alternativamente, use o tr(1):

% tr -d '\r' < dos-text-file > unix-file

O dos-text-file é o arquivo que contém o texto no formato DOS, enquanto o unix-file contém a saída convertida. Esta opção pode ser um pouco mais rápida do que usar o perl.

Uma outra maneira de reformatar arquivos de texto do DOS é usar o port converters/dosunix da Coleção de Ports. Consulte a sua documentação para maiores detalhes.

10.14.

Como faço para reler o arquivo /etc/rc.conf e reiniciar o /etc/rc sem dar boot?

Entre no modo single user e retorne ao modo multi usuário:

# shutdown now
# return
# exit

10.15.

Tentei atualizar o meu sistema para a versão -STABLE mais recente, mas obtive a -BETAx, -RC ou -PRERELEASE! O que está acontecendo?

Resposta curta: é apenas um nome. RC significa Release Candidate. Isso significa que uma nova release é iminente. No FreeBSD, -PRERELEASE é tipicamente sinônimo do congelamento de código antes de uma release. (Para algumas versões, o rótulo -BETA foi usado da mesma forma que o -PRERELEASE.)

Resposta longa: o FreeBSD deriva suas releases de um de dois lugares. Releases principais (major) ponto-zero, como a 9.0-RELEASE são derivadas a partir do branch principal de desenvolvimento, comumente referida como -CURRENT. Releases secundárias (minor), como a 6.3-RELEASE ou a 5.2-RELEASE, foram snapshots da branch -STABLE ativa. A partir do 4.3-RELEASE, cada release também tem sua própria branch, a qual pode ser seguida por pessoas que exigem uma taxa extremamente conservadora de desenvolvimento (geralmente apenas avisos de segurança).

Quando um release está prestes a ser feito, o branch do qual ele será derivado tem que passar por um determinado processo. Parte desse processo é um congelamento de código. Quando um congelamento de código é iniciado, o nome da branch é alterado para refletir que está prestes a se tornar uma release. Por exemplo, se a ramificação costumava ser chamada de 6.2-STABLE, seu nome será alterado para 6.3-PRERELEASE para indicar o congelamento de código e indicar que testes extras de pré-release devem estar acontecendo. Correções de bugs ainda podem ser adicionadas ao repositório de código fonte para fazer parte da release. Quando o código-fonte estiver estabilizado para a release, o nome será alterado para 6.3-RC para indicar que uma release está prestes a ser feita a partir dele. Uma vez no estágio RC, somente os bugs mais críticos que forem encontrados podem ser corrigidos. Uma vez que o release (6.3-RELEASE neste exemplo) e o branch de release foram feitos, o branch será renomeado para 6.3-STABLE.

Para mais informações sobre números de versão e as várias branches do Subversion, consulte o artigo Release Engineering.

10.16.

Tentei instalar um novo kernel, e o chflags(1) falhou. Como faço para contornar isso?

Resposta curta: o nível de segurança é maior que 0. Reinicialize diretamente para o modo de single user para instalar o kernel.

Resposta longa: O FreeBSD não permite alterar os flags do sistema em níveis de segurança superiores a 0. Para verificar o nível de segurança atual:

# sysctl kern.securelevel

O nível de segurança não pode ser diminuído no modo multiusuário, portanto, inicialize no modo single user para instalar o kernel ou altere o nível de segurança em /etc/rc.conf e reinicialize. Veja a página de manual init(8) para detalhes sobre o securelevel, e veja /etc/defaults/rc .conf e a página de manual rc.conf(5) para mais informações sobre o rc.conf .

10.17.

Não consigo alterar a hora no meu sistema em mais de um segundo! Como faço para contornar isso?

Resposta curta: o sistema está em um nível de segurança maior que 1. Reinicialize diretamente para o modo de single user para alterar a data.

Resposta longa: O FreeBSD proíbe a alteração do tempo em mais de um segundo em níveis de segurança superiores a 1. Para verificar o nível de segurança:

# sysctl kern.securelevel

O nível de segurança não pode ser diminuído no modo multiusuário. Inicialize no modo single user para alterar a data ou altere o nível de segurança no arquivo /etc/rc.conf e reinicialize. Veja a página de manual init(8) para detalhes sobre o securelevel, e veja /etc/defaults/rc .conf e a página de manual rc.conf(5) para mais informações sobre o rc.conf .

10.18.

Por que o rpc.statd está usando 256 MB de memória?

Não, não há vazamento de memória e ele não está usando 256 MB de memória. Por conveniência, o rpc.statd mapeia uma quantidade obscena de memória em seu espaço de endereço. Não há nada terrivelmente errado com isso do ponto de vista técnico; mas isso confunde o top(1) e o ps(1).

O rpc.statd(8) mapeia seu arquivo de status (residente no /var) em seu espaço de endereçamento; para evitar se preocupar com o remapeamento do arquivo de status mais tarde quando ele precisar crescer, ele mapeia o arquivo de status com um tamanho generoso. Isso é muito evidente no código-fonte, onde é possível ver que o argumento length para o mmap(2) é 0x10000000 , ou décima sexta parte do espaço de endereço em um IA32, ou seja, exatamente 256 MB.

10.19.

Por que não posso dar unset na flag schg de um arquivo?

O sistema está sendo executado em um nível de segurança maior que 0. Reduza o nível de segurança e tente novamente. Para obter mais informações, consulte a entrada do FAQ referente ao securelevel e a página de manual do init(8).

10.20.

O que é vnlru?

O vnlru descarrega e libera vnodes quando o sistema atinge o limite de kern.maxvnodes. Essa thread do kernel fica ociosa na maior parte do tempo e só é ativada quando existe uma quantidade enorme de RAM e os usuários estiverem acessando dezenas de milhares de arquivos minúsculos.

10.21.

O que os vários estados de memória exibidos pelo top significam?

  • Active: são páginas usadas recentemente.

  • Inactive: são páginas que não foram utilizadas recentemente.

  • Laundry: páginas recentemente não utilizadas estatisticamente, mas conhecidas por estarem sujas, ou seja, cujo conteúdo precisa ser paginado antes que possa ser reutilizado.

  • Free: páginas sem conteúdo, que podem ser reutilizadas imediatamente.

  • Wired : são páginas que estão fixadas na memória, geralmente para propósitos do kernel, mas também para uso especial em processos.

As páginas geralmente são gravadas em disco (um tipo de sincronização de VM) quando elas estão no estado laundry, mas as páginas ativas ou inativas também podem ser sincronizadas. Isso depende do rastreamento da CPU do bit modificado estar disponível e, em determinadas situações pode haver uma vantagem para um bloco de páginas da VM serem sincronizadas, independentemente da fila a que pertencem. Na maioria dos casos, é melhor pensar na fila laundry como uma fila de páginas relativamente não usadas que podem ou não estar no processo de serem gravadas no disco. A fila inativa contém uma mistura de páginas limpas e sujas; as páginas limpas próximas ao início da fila são recuperadas imediatamente para aliviar a falta de páginas livres e as páginas sujas são movidas para a fila laundry para processamento posterior.

Existem alguns outros flags (por exemplo, flag de ocupado ou de contagem ocupada) que podem modificar algumas das regras descritas.

10.22.

Quanta memória livre está disponível?

Existem alguns tipos de memória livre. O mais comum é a quantidade de memória disponível imediatamente, sem recuperar a memória já em uso. Esse é o tamanho da fila de páginas livres mais algumas outras páginas reservadas. Esse valor é exportado pelo vm.stats.vm.v_free_count sysctl(8), mostrado, por exemplo, pelo top(1). Outro tipo de memória livre é a quantidade total de memória virtual disponível para os processos da área de usuário, que depende da soma do espaço de swap e da memória utilizável. Outros tipos de descrições de memória livre também são possíveis, mas é relativamente inútil defini-las, mas é importante garantir que a taxa de paginação seja mantida baixa e evitar ficar sem espaço de swap.

10.23.

O que é o /var/empty?

O /var/empty é um diretório que o programa sshd(8) utiliza ao executar a separação de privilégios. O diretório /var/empty está vazio, pertence ao usuário root e possui as flags schg definidas. Este diretório não deve ser excluído.

10.24.

Acabei de alterar o /etc/newsyslog.conf . Como posso verificar se ele faz o que eu espero?

Para ver o que newsyslog(8) vai fazer, use o seguinte:

% newsyslog -nrvv

10.25.

Minha hora está errada, como posso mudar o fuso horário?

Use o tzsetup(8).

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.