Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

sábado, 25 de dezembro de 2010

Webmin : administração via interface gráfica ( linux )

Introdução

Webmin: pode um front-end gráfico substituir a linha de comando na administração do sistema?

Webmin: can a graphical front end for system administration replace the command line?
Autor original: Gary Richmond
Publicado originalmente no: freesoftwaremagazine.com
Tradução: Roberto Bechtlufft



Este tutorial explica como instalar e usar o Webmin, uma interface de usuário via web muito usada na administração de servidores. Mas se você não é administrador de sistemas, não fuja: o Webmin também pode ser usado nos desktops. Se você é daqueles que penam para lembrar de todas as operações de linha de comando usadas para gerenciar runlevels ou os muitos daemons do sistema, pode preferir fazer tudo isso por meio de uma interface gráfica. Um dos melhores motivos para se usar o Webmin é poder evitar as muitas variações de linha de comando existentes entre as distros e as diferentes localizações de arquivos de configuração que você teria que memorizar.
Mas tenha em mente que ainda assim é essencial saber os comandos básicos do Unix. Usar o Webmin sem entender um pouco sobre o sistema é encrenca na certa. Ele deve ser usado como uma ferramenta adicional, não como um substituto - afinal, saber pouco sobre alguma coisa pode ser mais perigoso do que não saber nada. Partindo desse princípio, vamos ver o que os módulos do Webmin podem fazer pelos usuários de desktops.


O que exatamente é o Webmin?



Resumindo, é uma maneira de administrar graficamente o computador por meio do navegador web. Ele funciona em todos os navegadores mais populares: Firefox, Opera, Flock, Konqueror, Epiphany, Galeon, Seamonkey e Netscape Navigator. Todos eles suportam tabelas e formulários (e Java, para o módulo do gerenciador de arquivos). Os amantes de navegadores pequenos, rápidos e ágeis como o Dillo infelizmente não deram sorte. O Dillo não suporta SSL, usado pelo Webmin. Mas há muitos navegadores a escolher, portanto escolha o navegador que você mais gostar na lista para usar o Webmin. Explicando melhor, o Webmin é uma coleção de scripts CGI em Perl. Se você programa em Perl, vai poder escrever novos scripts e modificar o próprio Webmin (o código fonte faz parte do pacote).
Como o Webmin é muito popular, você não deve ter maiores problemas para instalá-lo em sua distro. As distros mais famosas (Ubuntu, Mepis, Fedora, Mandriva, Suse etc) têm o Webmin nos repositórios. Se seu sistema estiver atualizado, você não deve ter problemas. O gerenciador de pacotes deve cuidar das dependências. Não se preocupe se o gerenciador de pacotes não disponibilizar a versão mais recente do Webmin para instalação. Instale-o mesmo assim. Quando o Webmin estiver instalado, você vai poder atualizá-lo pelo módulo de atualização do Webmin. O padrão é atualizar pelo site do Webmin. Mas se nada disso der certo, vá até o site oficial do Webmin, que hospeda vários tipos de pacotes binários (pacotes RPM, Debian, Solaris e Tar). O site também lista todas as versões do GNU/Linux nas quais o funcionamento do Webmin já foi comprovado. É um download razoavelmente grande de 12,9MB, o que era de se esperar, levando-se em conta o que o programa faz. O gerenciador de pacotes deve lidar bem com a instalação.
Se o espaço em disco e a velocidade de download forem problemas, há uma versão mínima que traz apenas a API do Webmin e alguns poucos módulos básicos para você já ir pegando o jeito. Os módulos podem ser adicionados ou excluídos depois, se você preferir. Se você for um purista da GPL, saiba que o Webmin opera sob uma licença BSD. Se você souber programar em Perl e estiver disposto, pode escrever seus próprios módulos e disponibilizá-los sob a licença que preferir, incluindo a pura e imaculada GPL 3. Uma vez instalado o Webmin, você receberá uma mensagem dizendo que a instalação foi concluída e que você pode fazer logon como usuário root:
Webmin_logon_screen

Figura 1: a tela de logon do Webmin
Não se preocupe com os avisos. Isso é normal, já que o certificado digital é auto-assinado. Você está logado:
Webmin%27s_default_front_page

Figura 2: a página inicial padrão do Webmin
Podem haver problemas com os certificados auto-assinados no acesso pelo Firefox 3. Nesse caso, pode ser necessária alguma ginástica para usar o Webmin. Meu amigo Ryan Cartwright já falou sobre isso em outro artigo da FSM (e outros também já discutiram o assunto aqui).
Se você pretende usar o Webmin regularmente para administrar seu computador, pode ser uma boa idéia configurar um perfil do Firefox para isso ou abrir a página de logon no Konqueror e arrastar o favicon para o desktop para facilitar. Só para constar: caso não goste do tema padrão, há módulos que permitem alterá-lo (eu uso o tema padrão, que é melhor porque permite escolher módulos no painel lateral sem abrir abas e janelas, mas se você preferir assim, é possível alterar a configuração). Temas extras podem ser instalados pelo painel à esquerda da página inicial, no menu drop-down do Webmin ("Mudar Língua e Tema"). Os módulos pré-instalados também são listados no painel.

Antes de começar

Antes de começar a mexer para valer nas configurações com o Webmin, pode ser uma boa idéia configurar o acesso ao programa. Antigamente o Webmin fazia logout automaticamente após cinco minutos por padrão, mas a versão atual (1.420) deixa esse campo em branco.
Para evitar problemas de segurança potenciais decorrentes de um fechamento incorreto (ou de um travamento) enquanto você estiver logado como root, é recomendável definir um tempo limite. Você decide o tempo, mas escolha algo condizente com seu esquema de trabalho. Como? É simples: na página inicial do Webmin, escolha Webmin → Configuração do Webmin → Autenticação. Marque a caixa "Auto-desconectar após" e digite um valor adequado. Como recurso de segurança adicional, O Webmin usa automaticamente o PAM (Pluggable Authentication Modules) para autenticação Unix.
Vale a pena configurar um usuário administrativo, já que não costuma ser uma boa idéia trabalhar como root o tempo todo. Clique em "Usuários do Webmin" para gerenciar os usuários. Como você pode ver na foto abaixo, o Webmin permite realizar esse gerenciamento com um controle bastante rigoroso sobre as permissões de acesso:
webmin_users_module

Figura 3: módulo de usuários do Webmin
Clique sobre um dos usuários listados para personalizar o número de módulos acessíveis, as permissões de acesso do usuário, os perfis de segurança e mais:
editing_Webmin_users

Figura 4: editando usuários do Webmin
Por fim, já que estamos usando o Webmin como interface gráfica para uma única máquina, faz sentido limitar o acesso ao localhost:
setting_IP_access_under_Security_and_Limits_Options

Figure 5: definindo o acesso a IPs na seção "Security and limits options"
Marque a opção Permitir somente para os endereços listados e digite localhost (ou outro nome que você tenha dado) na caixa de diálogo, clicando em "Salvar" na base da página. Para fechar, você ainda pode aumentar o perfil de segurança configurando os números de porta.
Por padrão, o Webmin usa a porta 10000. Mudar números de porta nem sempre engana os port scanners, e embora portas com números mais altos possam ser acessadas por usuários não-root, comprometendo os detalhes de logon do Webmin, o Webmin usa SSL, e isso deve anular o problema.
Para testar se o SSL está instalado corretamente, digite perl -e 'use Net::SSLeay' em um terminal. Se nenhum erro for exibido está tudo ok. O Webmin usará o SSL automaticamente - mas o módulo SSL pode ser desabilitado em Configuração do Webmin -> Encriptação SSL.
Mas se decidir mudar o número da porta, é uma boa idéia usar uma porta que não seja usada por outro serviço. Há uma lista de números de porta na Wikipedia, listando o que elas fazem e, o mais importante, se são ou não usadas por outros processos.
Se você (ironicamente) preferir a linha de comando, abra o console e digite grep -w 10000 /etc/services. Se a porta não estiver sendo usada por nenhum outro serviço, você não receberá nenhuma mensagem. Qualquer que seja o número de porta escolhido, pode ser preciso mexer no firewall. Por fim, só por precaução, pode ser uma boa idéia excluir todos os módulos dos quais você não precisa, para impedir o acesso a arquivos do sistema pelo Webmin.

Módulos úteis para desktops e laptops



Sistema



O módulo Sistema talvez seja o módulo mais útil e interessante para usuários de desktops. Expanda "Sistema" e você verá as categorias de administração disponíveis:
the_contents_of_the_System_module

Figura 6: o conteúdo do módulo "Sistema"
Logo de cara você vai notar alguns opções manjadas para usuários desktop: inicialização e desligamento, alteração de senhas, tarefas agendadas pelo cron, logs do sistema e usuários e grupos, só para mencionar algumas. Claro que tanto o Gnome quanto o KDE oferecem suas próprias ferramentas gráficas específicas para essas tarefas, mas o Webmin junta tudo num mesmo lugar. Ainda mais importante é um dos recursos matadores (e não tão óbvios) do Webmin: o fato de operar diretamente nos arquivos ao invés de armazenar as informações em um banco de dados, o que poderia provocar problemas de compatibilidade. Isso significa que você pode usar o Webmin tranqüilo, sabendo que se precisar ou preferir editar os arquivos do sistema da forma tradicional, pela linha de comando específica da sua distro GNU/Linux favorita, poderá fazê-lo sem causar nenhum desastre. Além disso, se fizer alguma besteira, os logs podem ser inspecionados pelo terminal, e há uma configuração que registra todas as alterações realizadas pelo Webmin. Se você quebrar alguma coisa com o Webmin, ainda pode recorrer à linha de comando como ferramenta de resgate. Não é a toa que o Webmin é descrito como uma ferramenta que pode ser facilmente combinada a outras. Para ilustrar esses recursos, vamos ver como o Webmin lida com a instalação de software.
Selecione "Pacotes de Software" no submenu e esta tela será exibida:
Webmin%27s_software_packages_module

Figura 7: o módulo de pacotes de software do Webmin
O Webmin vai detectar o seu sistema e o seu gerenciador de pacotes, mas se for preciso é possível ir além clicando no link Configuração do Módulo(acima, à esquerda), onde você poderá escolher o sistema e o gerenciador de pacotes, podendo inclusive escolher se vai usar o Apt-get ou o Aptitude para instalar e remover programas:
module_configuration_for_software_packages

Figura 8: configuração do módulo "Pacotes de Software"
Há várias opções de instalação: a partir de um arquivo local, via FTP, HTTP ou repositórios. Eu escolhi a última, que abre uma janela separada. Escolhi instalar o Karm. Os resultados são apresentados como links:
Webmin%27s_search_result_for_Karm

Figura 9: resultados da busca do Webmin pelo Karm
Basta clicar no link do Karm para instalar o pacote:
Webmin_successfully_installs_Karm

Figura 10: o Webmin instala o Karm com sucesso
Como você pode ver nas fotos, aqui o processo não é mais interativo, e o Webmin configura o Apt para responder sim a todas as perguntas (e isso não é o padrão na minha linha de comando). Eu acho bastante preocupante que o Webmin invoque a opção force do Apt-get. É óbvio que isso não deveria ser o padrão, já que pode sobrescrever arquivos do sistema, bem como afetar sua estabilidade. A única configuração que consegui localizar estava em Perl, em /usr/share/webmin/software apt-lib.pl, e continha referências específicas aos padrões para sim e force, mas como não sou muito versado em Perl resisti à tentação de tentar alterar o arquivo. Porém, como o Webmin age diretamente nos arquivos e não através de um banco de dados, o que o Webmin faz o Apt-get pode desfazer na linha de comando, e o Karm pode ser removido com segurança pelo seu gerenciador gráfico de pacotes ou pelo equivalente na linha de comando.
Também é possível explorar os programas instalados clicando no botão Package Tree (acima, à direita) que dá acesso a links para várias opções:
Package_Tree_reveals_a_list_of_installed_software

Figura 11: o botão Package Tree revela uma lista de programas instalados
É uma maneira simples de dar uma olhada rápida nos pacotes instalados sem ter que recorrer à linha de comando. Você pode se familiarizar com a estrutura de arquivos do sistema e ir descendo para outras pastas (o que é especialmente útil quando se utiliza um navegador com abas). Mas se você prefere a pureza e a simplicidade da linha de comando, o Webmin também pode ajudar. Assim como o módulo "Gerenciador de Arquivos", o módulo "Command Shell" funciona por meio de um applet Java. Ele pode ser encontrado na categoria Outros:
default_command_shell

Figura 12: a linha de comando padrão
A saída do comando é exibida como a saída de um terminal comum:
command_shell_running_the_output_of_dmesg

Figura 13: módulo "Command Shell" exibindo a saída do comando dmesg
Porém, se quiser ver a saída do comando dmesg uma página por vez, acrescentar um | less não vai funcionar como no console. As man pages funcionam bem, mas não dá para iniciar aplicativos. É óbvio que a linha de comando do Webmin não é uma substituta viável ao terminal.

Tarefas do Cron e processos em curso

É possível usar uma interface gráfica com o Kcron ou um terminal para agendar/criar tarefas, mas o Webmin também tem um módulo para isso. É possível agendar uma tarefa do cron a partir de uma lista pré-existente:
scheduled_cron_jobs
Figura 14: tarefas agendadas do cron
ou criar a sua própria:
creating_a_cron_job_with_Webmin
Figura 15: criando uma tarefa do cron com o Webmin
É claro que é possível monitorar o sistema com o top e o pid, mas o Webmin pode cair bem para essa tarefa. Clique em "Processos em Curso" para obter este resultado:
Running_Processes
Figura 16: Processos em Curso
No topo, quatro opções de exibição: PID, Utilizador, Memória e CPU:
details_of_the_pid_for_the_CUP_daemon_with_options_to_kill_it
Figure 17: detalhes do pid do daemon do CUPS, com opções para matar o processo.
Os detalhes do PID oferecem várias opções, incluindo a capacidade de matar o processo ou modificar sua prioridade. Clique sobre usuário para separar os processos por usuário. Se algum processo estiver consumindo muita memória, mande o Webmin ordenar por memória para apontar o(s) culpado(s) - e conte com a possibilidade de emitir um kill, um renice e afins.
O módulo iniciar e encerrar usa um layout parecido, podendo configurar daemons e níveis de execução em tempo real, na inicialização ou no desligamento.
Bootup_and_Shutdown_module_options
Figura 18: as opções do módulo Iniciar e Encerrar


Guia "Outros"



Aqui encontramos muitos módulos legais, especialmente o Command Shell (que pode ser usado para explorar o sistema, sem a necessidade de se abrir um terminal) e o Gerenciador de Arquivos. Este último exige um navegador com Java, como vemos nesta foto do módulo do Webmin em execução no Firefox:
Webmin%27s_filemanager_module_running_in_Java-enabled_Firefox
Figura 19: o módulo de gerenciamento de arquivos do Webmin rodando em Java, no Firefox
Há várias opções de gerenciamento de arquivos a partir do seu navegador favorito.
Claro que o módulo é em Java e é feio, mas dá para navegar pelos arquivos do conforto do seu navegador favorito.

Considerações finais

Nós amamos interfaces gráficas. Geralmente elas são tudo que um usuário médio de sistemas proprietários como o Windows precisa. Os sistemas Unix são bem diferentes. Antes que as interfaces gráficas predominassem, os administradores de sistemas (e usuários desktop também) dependiam apenas da linha de comando para fazer suas configurações, e levavam um tempo enorme para dominar essa arte.
O crescente uso e popularidade do GNU/Linux vem educando as pessoas quanto à sua arquitetura superior, maior segurança e arquivos de configuração relativamente simples. Também é fato que a ampla disponibilidade de front-ends gráficos trouxe uma nova leva de usuários, que se sentem tão em casa no Linux quanto no Windows. No entanto, a crítica que se costuma fazer é a de que, por melhores e mais avançadas que elas possam ser, elas jamais poderão emular o nível de controle oferecido pela linha de comando. A afirmação tem um fundo de verdade.
A interface gráfica do Webmin vem desafiar a afirmação. Embora você vá acabar descobrindo que certos módulos não vão funcionar, já que as distros não chegam a um denominador comum quanto à localização dos arquivos de configuração, o Webmin é um dos programas mais ricos em recursos que você já usou. Cada módulo está entupido de recursos e no momento já existem 113 deles, sem falar nos módulos de terceiros. Pelo visto, o Webmin só não serve o cafezinho, mas eu não me espantaria se encontrasse um módulo que cuidasse disso também. Tenho esperanças de que quando a LSB (Linux Standard Base) for adotada o problema será resolvido. Este artigo não tem como fazer jus ao vasto território coberto pelo Webmin. Para você ter uma idéia, se você não gostar dos títulos dos módulos, existe até um módulo que permite mudar os nomes para outros que façam mais sentido para você. Isso é o que eu chamo de customização.
Ainda que tenha sido desenvolvido principalmente para máquinas remotas em LANs e WANs, o Webmin serve perfeitamente a usuários que queiram configurar várias máquinas não conectadas rodando distros diferentes sem a necessidade de lembrar da multiplicidade de caminhos de arquivos e comandos. Nada disso livra o usuário de ter que dominar a linha de comando do GNU/Linux. O Webmin não é para novatos. Pôr o Webmin nas mãos de um novato sem o conhecimento obtido a duras penas seria como dar um lança-chamas a um piromaníaco durante um vazamento em uma refinaria de petróleo. Sem as habilidades e o conhecimento exigidos, o uso prematuro e indiscriminado do Webmin o tornaria tão perigoso quanto o piromaníaco na refinaria.
Sendo assim, quando você tiver as habilidades de administração de sistema adequadas na linha de comando, pode se dar ao luxo de relaxar um pouco com a praticidade do Webmin. Depois, a melhor coisa que você pode fazer é dar uma boa lida em um ótimo livro sobre o Webmin - e de graça, cortesia da série de livro abertos de Bruce Perens. Aponte o navegador para o PDF. Ele foi escrito por Jamie Cameron - e ele deve conhecer uns dois ou três truques interessantes. Afinal, ele foi o principal programador do Webmin.