Anúncios

DonkeyMails.com: No Minimum Payout

sábado, 21 de maio de 2011

Dica: Alterar resolução do Ubuntu rodando no VirtualBox

Fala, pessoal!

Desculpem-me por ficar um pouco mais de um mês sem postar. Novamente isso ocorreu por falta de tempo e preguiça (quando houve tempo), um pouco de cada.

Desta vez venho mostrar como fazer para alterar a resolução do Ubuntu quando este está rodando em uma máquina virtual, dentro do VitualBox, que, por padrão, fica em 640x480 ou, na melhor das hipóteses, em 800x600.

Para fazê-lo é simples, bastará instalar o driver de vídeo que o próprio VirtualBox fornece e realizar algumas alterações no arquivo xorg.conf.

Indo direto ao ponto...

1) Primeiramente, como dito antes, será necessário instalar o driver de vídeo que o VirtualBox force. Para acessar o arquivo de instalação, no menu do VirtualBox na janela da máquina virtual aberta, clique em "Dispositivos" e, em seguida, em "Instalar Adicionais para Convidado". Neste momento, será "carregado"/montado um CD com o rótulo "VBOXADDITIONS_versãoDoVBoxAdditions".
Em versões mais recentes do VitualBox, será carregado um "autorun" que facilitará o trabalho, que irá instalar tudo automaticamente, mas caso isso não aconteça, basta executar no terminal (como root), o arquivo "VBoxLinuxAdditions.run" da seguinte forma (considerando que o diretório ativo no terminal seja o ponto de montagem do CD):
 sudo sh VBoxLinuxAddtions.run

2) Tendo sido os drivers instalados, agora temos de alterar o arquivo "/etc/X11/xorg.conf". Para editá-lo, no terminal e como root, abra-o em um editor de textos (eu usarei o nano, que roda direto no terminal, mas pode-se usar qualquer outro, como o gedit):
 sudo nano /etc/X11/xorg.conf

Obs.: Caso utilize uma versão do Ubuntu igual ou superior a 10.04, primeiro será necessário criar o arquivo em questão e copiá-lo para o diretório "/etc/X11" para depois então efetuar qualquer alteração. Para fazê-lo execute os seguintes comando no terminal:
 # Aqui será criado um arquivo com o nome xorg.conf.new
sudo X -configure :1
# Aqui você copiará o arquivo criado para /etc/X11 renomeando-o para "xorg.conf"
sudo cp xorg.conf.new /etc/X11/xorg.conf
# Agora, basta abri-lo em um editor de textos para executar as alterações que serão citadas a seguir
sudo nano /etc/X11/xorg.conf


Com o arquivo aberto, faça as seguintes alterações:
Na seção "Device", altere o valor do atributo "Driver" para "vboxvideo" se assim não estiver:
   Driver  "vboxvideo"

Na seção "Screen":
Adicione ou altere o atributo "DefaultDepth" da seguinte forma:
   DefaultDepth 24


E na subseção "Display" (ainda dentro da seção "Screen"), onde em seu atributo "Depth" o valor é "24" (caso não haja esta subseção, será necessário criá-la como descrito abaixo), adicione o atributo "Modes" com um valor igual a resolução desejada:
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection

Tendo sido isso feito, salve o arquivo (no editor nano, o comando é CTRL+O) e reinicie a sessão do usuário que as alterações provavelmente terão surtido efeito (caso nada aconteça ou ocorra algum tipo de problema, houve algum erro na execução dos passos aqui descritos).

Espero que esta dica venha a ser útil. Caso haja qualquer dúvida, não exite em perguntar nos comentários!

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.

sábado, 16 de abril de 2011

Migração Linux - parte 5: Script de configuração do sistema

Boas pessoal! Finalmente estou de volta!

Gostaria de começar este post me desculpando por ficar mais de uma semana sem adicionar algo novo a este blog. Como de costume, quando tive tempo, acabei não conseguindo escrever algo para trazer para cá.

Desta vez, como citado no título da postagem, irei tratar da parte "final" da migração do laboratório de informática (da escola onde faço estágio) para o Ubuntu Linux: o script de configuração do sistema (também responsável pela instalação de softwares adicionais).

Devido as necessidades que se apresentavam no momento de sua criação, ele possui as seguintes funções:
  • Criar os usuários do sistema;
  • Fazer backup dos arquivos que serão alterados;
  • Configurar a conexão com a rede (ip fixo, dns etc);
  • Configurar os repositórios;
  • Configurar o Grub;
  • Configurar o SSH;
  • Alterar o "/etc/rc.local/" para que restaure a área de trabalho dos usuários;
  • Instalar softwares adicionais;
  • Configurar bloqueios a sites impróprios.
Com isso em mente, tratarei de cada parte em separado e depois deixarei um exemplo completo, que poderá ser alterado à vontade!

Neste post serão citados vários arquivos que não estão aqui representados, então, links para download dos mesmos estarão disponíveis conforme eles forem mencionados.

Indo direto ao assunto...

Back-ups
Como serão feitas alterações em arquivos de aplicações de extrema importância para o sistema, é sempre bom manter uma cópia dos mesmos em seu estado antes das modificações, então:
 echo "Efetuando backups de segurança..."
mkdir /home/[meuUsuario]/backups/
cp /etc/apt/sources.list /home/
[meuUsuario]/backups/
cp /etc/resolv.conf /home/
[meuUsuario]/backups/
cp /etc/default/grub /home/
[meuUsuario]/backups/
cp /etc/grub.d/00_header /home/
[meuUsuario]/backups/
cp /etc/grub.d/10_linux /home/
[meuUsuario]/backups/
cp /etc/network/interfaces /home/
[meuUsuario]/backups/
cp /etc/rc.local /home/
[meuUsuario]/backups/
echo "Os back-ups foram salvos dentro de \"/home/
[meuUsuario]/backups/\"!!!"
Neste caso, eu simplesmente crio uma pasta chamada "backups" dentro do "home" do meu usuário (meuUsuario) e copio para lá todos os arquivos que sofrerão alguma mudança durante a execução do script. Caso haja algum problema, basta restaurar o "original".

Criação dos usuários do sistema
 echo "Criando grupos e usuários do sistema..."
addgroup professores
useradd -m -p '[hashMD5DaSenhaDoUsuarioEntreAspasSImples]' Professores -g professores
addgroup alunos
useradd -m -p '[hashMD5DaSenhaDoUsuarioEntreAspasSimples]' Alunos -g alunos
Aqui eu só estou criando dois usuários, "Alunos" e "Professores", inseridos em dois grupos também criados. É importante citar que estou passando uma senha criptografada em MD5. Para gerar o hash MD5 da senha basta executar no terminal:
 echo minhaSenha | mkpasswd -s -H md5

Configuração da conexão com a rede
 echo "Configurando a rede..."
# Como cada PC terá um IP diferente, eu informo na hora o que será utilizado.
read -p "Informe o ip desejado: " varip
echo "O ip escolhido foi \"$varip\"!!!"
# Em seguida, reescrevo o arquivo /etc/network/interfaces, onde são configuradas
# as interfaces de rede. Defino o ip como fixo e um gateway e um servidor DNS
# específicos.
echo "auto lo\niface lo inet loopback\n\nauto eth0\niface eth0 inet static\naddress $varip\nnetmask 255.255.255.0\ngateway 192.168.xx.xx\ndns-provider 192.168.xx.xx" > /etc/network/interfaces
# Por fim, reinicio o serviço de rede.
/etc/init.d/networking restart
Assim como comentei nos trechos, eu (na realidade o script) pergunto o IP desejado e reescrevo o arquivo "/etc/network/interfaces", definindo IP (informado anteriormente) como fixo, o gateway a ser utilizado e o servidor DNS (name server). Se a interface relativa a sua placa de rede não estiver sendo identificada como "eth0", será necessário alterar o script, colocando a identificação correta.

Configuração dos repositórios
 echo "Configurando o Apt e o Aptitude..."
cp recursos/sources.list /etc/apt/sources.list
apt-get update
aptitude update
sudo wget http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list --output-document=/etc/apt/sources.list.d/medibuntu.list
echo "Fazendo backup de medibuntu.list em \"/home/[meuUsuario]/backups\"..."
cp /etc/apt/sources.list.d/medibuntu.list /home/[meuUsuario]/backups/
cp recursos/medibuntu.list /etc/apt/sources.list.d/medibuntu.list
sudo apt-get -q update
#sudo apt-get -q update
sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring
Primeiramente, eu faria alterações no arquivo "/etc/apt/sources.list", mas, como ele tem bastante conteúdo (muitas das linhas comentadas, as quais não removo para o caso de "virem a necessárias"), preferi apenas substituí-lo por um já "configurado".
Já que faço uso de um servidor Apt-cacher, a configuração do arquivo em questão deverá ser feita como mencionado na parte 4 desta "migração", ou seja, você deverá direcionar os repositórios para o servidor Apt-cacher da rede. Para fazê-lo, basta apenas alterar as entradas presentes do seguinte modo (reforçando que deverá ser feito com todas):
 #Substituir:
deb http://br.archive.ubuntu.com/ubuntu/ lucid main restricted
#Por:
deb http://[IPDoServidorApt-Cacher]:3142/br.archive.ubuntu.com/ubuntu/ lucid main restricted
Para facilitar, estou disponibilizando aqui uma cópia de meu arquivo (no qual se faz necessário apenas informar o IP do servidor Apt-Cacher, e que já tem o repositório "partner" adicionado, o qual é de extrema importância para eventos mais a frente).
Ainda na configuração dos repositórios, eu os atualizo e adiciono o Medibuntu, baixando o arquivo com a indicação para o mesmo dentro de "/etc/apt/sources.list.d/", com o nome de "medibuntu.list". Como eu também uso o servidor Apt-cacher para ele, apesar de o arquivo só ter umas poucas linhas, eu faço o mesmo que com o "sources.list", substituindo-o por um arquivo já configurado.
De qualquer maneira, a alteração que se faria necessária seria igual a do caso do "sources.list", citada acima. Da mesma forma disponibilizo para download meu arquivo "medibuntu.list" aqui, onde falta apenas informar o IP do servidor Apt-cacher.
Em sequência a isso, apenas atualizo novamente os repositórios e, digamos... "libero" o Medibuntu.

Configuração do Grub, protegendo as entradas do modo de recuperação com senha
 echo "Configurando GRUB2..."
echo "cat << EOF\nset superusers=\"nomeDoSuperUsuario\"\npassword_pbkdf2 nomeDoSuperUsuario senhaCriptografadaDoSuperUsuario\nEOF" >> /etc/grub.d/00_header
cp recursos/10_linux /etc/grub.d/10_linux
update-grub
Na segunda linha, eu adiciono ao fim do arquivo "/etc/grub.d/00_header" as definições de usuário e senha do Grub. Na terceira, substituo o arquivo "/etc/grub.d/10_linux" por um idêntico (disponível aqui), mas com as alterações necessária já efetuadas (para saber que alterações são essas, leia este post, que ensina a proteger o modo de recuperação do Grub 2 com senha). Na quarta, eu simplesmente executo o comando "update-grub" que fará com que as alterações entrem em vigor.

Configuração do SSH
Na parte que segue, eu habilito apenas o usuário com privilégios administrativos (criado durante a instalação do sistema) e o usuário "Professores" a se conectarem através do ssh (adicionando, ao fim do arquivo "/etc/ssh/sshd_config", a linha "AllowUsers ...") e reinicio o seviço :
 echo "Configurando ssh..."
echo "\nAllowUsers meuUsuarioAdministrativo Professores" >> /etc/ssh/sshd_config
/etc/init.d/ssh restart

Restauração da área de trabalho dos usuários
 echo "Configurando rc.local..."
cp recursos/rc.local /etc/rc.local
Eu basicamente substituo o arquivo "/etc/rc.local" por outro já alterado (disponível aqui), que executa os seguintes comandos:
 rm -fr /home/Professores/.gconf /home/Professores/.gconfd /home/Professores/.gnome2
rm -fr /home/Alunos/.gconf /home/Alunos/.gconfd /home/Alunos/.gnome2
Ele apaga os diretórios que contem os arquivos de configuração do gnome de cada usuário. Como o script "rc.local" é executado a cada mudança de run level (normalmente só ocorrerão durante a inicialização e encerramento do sistema), quando um usuário fizer uma alteração em sua área de trabalho (papel de parede, tema etc) e reiniciar o computador, ao tentar fazer log in, o sistema não encontrará os arquivos de configuração do gnome e os recriará, porem em sua forma padrão.
Isto pode ser visto como uma "gambiarra" (a mãe das invenções), mas é plenamente funcional!

Instalação de softwares adicionais
 echo "Instalando programas..."
echo "Removendo Empathy..."
apt-get remove empathy -y
echo "Removendo Gwibber"
apt-get remove gwibber -y
echo "Instalando rar..."
apt-get install rar -y --install-recommends
echo "Instalando unrar..."
apt-get install unrar -y --install-recommends
echo "Instalando g++.."
apt-get install g++ -y --install-recommends
echo "Instalando JRE"
apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts -y --install-recommends
echo "Instalando Java Development Kit..."
apt-get install sun-java6-jdk -y --install-recommends
# Caso não seja encontrado automaticamente pelo Netbeans,
# encontra-se em "/usr/share/doc/openjdk-6-doc"
echo "Instalando Javadocs (do OpenJDK)"
apt-get install openjdk-6-doc -y --install-recommends
echo "Instalando codecs..."
apt-get install -y --force-yes w32codecs libdvdcss2 ubuntu-restricted-extras
echo "Instalando GIMP..."
apt-get install gimp -y --install-recommends
echo "Instalando Blender..."
apt-get install blender -y --install-recommends
echo "Instalando Code::Blocks.."
apt-get install codeblocks -y --install-recommends
echo "Instalando o libgtk2.0-dev"
#aptitude install libgtk2.0-dev
apt-get install libgtk2.0-dev -y --install-recommends
echo "Instalando Lazarus IDE..."
#aptitude install lazarus
apt-get install lazarus -y --install-recommends
echo "Instalando KTurtle..."
apt-get install kturtle -y --install-recommends
echo "Instalando Ambiente de Desenvolvimento Web Quanta Plus..."
apt-get install quanta kxsldbg-kde3 kimagemapeditor-kde3 khelpcenter -y --install-recommends
echo "Instalando TuxMath..."
apt-get install tuxmath -y --install-recommends
echo "Instalando TuxPaint..."
apt-get install tuxpaint -y --install-recommends
echo "Instalando TuxTyping..."
apt-get install tuxtype -y --install-recommends
echo "Instalando KTouch..."
apt-get install ktouch -y --install-recommends
echo "Instalando KHangman..."
apt-get install khangman -y --install-recommends
echo "Instalando KBruch..."
apt-get install kbruch -y --install-recommends
echo "Instalando Kanagram..."
apt-get install kanagram -y --install-recommends
echo "Instalando Inkscape..."
apt-get install inkscape -y --install-recommends
echo "Instalando KolourPaint4..."
apt-get install kolourpaint4 -y --install-recommends
echo "Instalando Scribus..."
apt-get install scribus -y --install-recommends
echo "Instalando KTuberling"
apt-get install ktuberling -y --install-recommends
echo "Instalando lmemory..."
apt-get install lmemory -y --install-recommends
echo "Instalando Gnome Tetravex..."
apt-get install gnotravex -y --install-recommends
echo "Instalando Flash Player Plug-in..."
dpkg -i instalandores/install_flash_player_10_linux.deb
echo "Removendo versões anteriores do BrOffice/OpenOffice..."
apt-get remove openoffice* -y
echo "Instalando BrOffice 3.2.1..."
dpkg -i instaladores/broffice3.2.1/DEBS/*deb
dpkg -i instaladores/broffice3.2.1/DEBS/desktop-integration/*deb
echo "Instalando NetBeans 6.9.1"
chmod +x instaladores/netbeans-6.9.1-ml-linux.sh
sh instaladores/netbeans-6.9.1-ml-linux.sh
echo "Instalando Blender 2.56..."
cp -r instaladores/blender-2.56a-beta-linux-glibc27-i686 /usr/local/Blender
ln -s /usr/local/Blender/blender /usr/local/bin/blender
cp recursos/blender-2.56.desktop /usr/share/applications
chmod +x /usr/local/bin/blender
Bom, quanto a esta parte não tenho muito o que falar... Eu removo clientes de mensagens instantâneas para evitar que alunos fiquem acessando MSN ou coisas do gênero e instalo softwares que serão utilizados durante as aulas.
No fim desse trecho, percebe-se que alguns programas eu instalo localmente. Bom, o flash e o BrOffice, a princípio, foram apenas testes, mas acabaram ficando, no caso do NetBeans, eu só encontrava versões antigas dele nos repositórios e, no caso do Blender 2.56 (cujo atalho -"blender-2.56.desktop"- encontra-se aqui), é devido ao fato de só haver o 2.49b disponível nos repositórios.

Efetuar bloqueios a sites impróprios
 echo "Efetuando bloqueios a sites: configurando \"/etc/hosts\""
java -jar AlterarHostName.jar
Como podem ver, só é executado um arquivo ".jar", mas é ele que faz a mágica. Como não tenho experiência em Shell Script, resolvi fazer esta parte em Java, linguágem que tenho um conhecimento um pouco além do básico.
Tudo que esse arquivo faz é ler o arquivo "hosts" de uma outra máquina, que já estava com diversos sites bloqueados, alterar a linha onde se encontra o nome do outro computador, substituíndo pelo nome do atual e, por fim, reescrever o arquivo "/etc/hosts" desta última com tais informações.
Sei que poderia ter feito isso de um modo mais fácil, porem aproveitei para treinar um pouquinho de leitura e escrita de arquivos...
Os arquivos "hosts" e "AlterarHostName.jar" podem ser encontrados respectivamente aqui e aqui. O código fonte do "AlterarHostName.jar" eu disponibilizarei assim que possível, pois não o estou encontrando em lugar algum.

Script completo
Abaixo segue o Script completo:
 #! /bin/bash

echo "Efetuando backups de segurança..."
mkdir /home/[meuUsuario]/backups/
cp /etc/apt/sources.list /home/[meuUsuario]/backups/
cp /etc/resolv.conf /home/[meuUsuario]/backups/
cp /etc/default/grub /home/[meuUsuario]/backups/
cp /etc/grub.d/00_header /home/[meuUsuario]/backups/
cp /etc/grub.d/10_linux /home/[meuUsuario]/backups/
cp /etc/network/interfaces /home/[meuUsuario]/backups/
cp /etc/rc.local /home/[meuUsuario]/backups/
echo "Os back-ups foram salvos dentro de \"/home/[meuUsuario]/backups/\"!!!"

echo "Criando grupos e usuários do sistema..."
addgroup professores
useradd -m -p '[hashMD5DaSenhaDoUsuarioEntreAspasSImples]' Professores -g professores
addgroup alunos
useradd -m -p '[hashMD5DaSenhaDoUsuarioEntreAspasSimples]' Alunos -g alunos

echo "Configurando a rede..."
read -p "Informe o ip desejado: " varip
echo "O ip escolhido foi \"$varip\"!!!"
echo "auto lo\niface lo inet loopback\n\nauto eth0\niface eth0 inet static\naddress $varip\nnetmask 255.255.255.0\ngateway 192.168.xx.xx\ndns-provider 192.168.xx.xx" > /etc/network/interfaces
/etc/init.d/networking restart

echo "Configurando o Apt e o Aptitude..."
cp recursos/sources.list /etc/apt/sources.list
apt-get update
aptitude update
sudo wget http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list --output-document=/etc/apt/sources.list.d/medibuntu.list
echo "Fazendo backup de medibuntu.list em \"/home/[meuUsuario]/backups\"..."
cp /etc/apt/sources.list.d/medibuntu.list /home/[meuUsuario]/backups/
cp recursos/medibuntu.list /etc/apt/sources.list.d/medibuntu.list
sudo apt-get -q update
#sudo apt-get -q update
sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring

echo "Configurando GRUB2..."
echo "cat << EOF\nset superusers=\"nomeDoSuperUsuario\"\npassword_pbkdf2 nomeDoSuperUsuario senhaCriptografadaDoSuperUsuario\nEOF" >> /etc/grub.d/00_header
cp recursos/10_linux /etc/grub.d/10_linux
update-grub

echo "Configurando ssh..."
echo "\nAllowUsers meuUsuarioAdministrativo Professores" >> /etc/ssh/sshd_config
/etc/init.d/ssh restart

echo "Configurando rc.local..."
cp recursos/rc.local /etc/rc.local

echo "Iniciando script de instalação de programas..."
echo "Removendo Empathy..."
apt-get remove empathy -y
echo "Removendo Gwibber"
apt-get remove gwibber -y
echo "Instalando rar..."
apt-get install rar -y --install-recommends
echo "Instalando unrar..."
apt-get install unrar -y --install-recommends
echo "Instalando g++.."
apt-get install g++ -y --install-recommends
echo "Instalando JRE"
apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts -y --install-recommends
echo "Instalando Java Development Kit..."
apt-get install sun-java6-jdk -y --install-recommends
# Caso não seja encontrado automaticamente pelo Netbeans,
# encontra-se em "/usr/share/doc/openjdk-6-doc"
echo "Instalando Javadocs (do OpenJDK)"
apt-get install openjdk-6-doc -y --install-recommends
echo "Instalando codecs..."
apt-get install -y --force-yes w32codecs libdvdcss2 ubuntu-restricted-extras
echo "Instalando GIMP..."
apt-get install gimp -y --install-recommends
echo "Instalando Blender..."
apt-get install blender -y --install-recommends
echo "Instalando Code::Blocks.."
apt-get install codeblocks -y --install-recommends
echo "Instalando o libgtk2.0-dev"
#aptitude install libgtk2.0-dev
apt-get install libgtk2.0-dev -y --install-recommends
echo "Instalando Lazarus IDE..."
#aptitude install lazarus
apt-get install lazarus -y --install-recommends
echo "Instalando KTurtle..."
apt-get install kturtle -y --install-recommends
echo "Instalando Ambiente de Desenvolvimento Web Quanta Plus..."
apt-get install quanta kxsldbg-kde3 kimagemapeditor-kde3 khelpcenter -y --install-recommends
echo "Instalando TuxMath..."
apt-get install tuxmath -y --install-recommends
echo "Instalando TuxPaint..."
apt-get install tuxpaint -y --install-recommends
echo "Instalando TuxTyping..."
apt-get install tuxtype -y --install-recommends
echo "Instalando KTouch..."
apt-get install ktouch -y --install-recommends
echo "Instalando KHangman..."
apt-get install khangman -y --install-recommends
echo "Instalando KBruch..."
apt-get install kbruch -y --install-recommends
echo "Instalando Kanagram..."
apt-get install kanagram -y --install-recommends
echo "Instalando Inkscape..."
apt-get install inkscape -y --install-recommends
echo "Instalando KolourPaint4..."
apt-get install kolourpaint4 -y --install-recommends
echo "Instalando Scribus..."
apt-get install scribus -y --install-recommends
echo "Instalando KTuberling"
apt-get install ktuberling -y --install-recommends
echo "Instalando lmemory..."
apt-get install lmemory -y --install-recommends
echo "Instalando Gnome Tetravex..."
apt-get install gnotravex -y --install-recommends
echo "Instalando Flash Player Plug-in..."
dpkg -i instalandores/install_flash_player_10_linux.deb
echo "Removendo versões anteriores do BrOffice/OpenOffice..."
apt-get remove openoffice* -y
echo "Instalando BrOffice 3.2.1..."
dpkg -i instaladores/broffice3.2.1/DEBS/*deb
dpkg -i instaladores/broffice3.2.1/DEBS/desktop-integration/*deb
echo "Instalando NetBeans 6.9.1"
chmod +x instaladores/netbeans-6.9.1-ml-linux.sh
sh instaladores/netbeans-6.9.1-ml-linux.sh
echo "Instalando Blender 2.56..."
cp -r instaladores/blender-2.56a-beta-linux-glibc27-i686 /usr/local/Blender
ln -s /usr/local/Blender/blender /usr/local/bin/blender
cp recursos/blender-2.56.desktop /usr/share/applications
chmod +x /usr/local/bin/blender
echo "Efetuando bloqueios a sites: configurando \"/etc/hosts\""
java -jar AlterarHostName.jar
Obs.: Os itens que tem de ser alterados/especificados estão representados em negrito.

Bom, estando com tudo pronto, tudo definido, é só salvar o arquivo com a extensão ".sh" (por exemplo, pode chamá-lo de script_de_configuracao.sh) e abrir o terminal e executar o script como root:
 sudo sh script_de_configuracao.sh

Feito isso, ele começará a trabalhar automaticamente, só pedindo a intervenção do usuário logo no início, quando vai configurar a rede, e no final, quando vai instalar o NetBeans, pois este último só possui instalador gráfico.

E está encerrada a sequência de posts sobre a minha migração para o Linux do laboratório de informática da escola on faço estágio!

Espero que este post tenha sido útil! Se houver qualquer dúvida, correção ou informação adicional, não deixe de recorrer aos comentários!

Logo estarei de volta com algumas dicas! Até a próxima!

Migração Linux - parte 4

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.

terça-feira, 5 de abril de 2011

Dica: proteger com senha o Modo de Recuperação no Grub

Estou de volta!

Quando temos algum problema com o sistema (Ubuntu Linux) e o mesmo fica incapacitado de ser iniciado ou não funciona devidamente (ao ponto de impedir que o usuário, iniciando o sistema normalmente, acesse o terminal) é comum recorrermos ao modo de recuperação. Nele temos acesso a um terminal sendo executado como root, tornando possível manipularmos o sistema "livremente", de modo a aplicarmos as correções necessárias.
Certamente ele é algo útil. O problema é que, "nas mãos" de alguém mal intencionado, pode comprometer toda a segurança e integridade do sistema.

Hoje vou falar (na realidade, escrever) sobre como proteger com senha a opção do "modo de recuperação" do Ubuntu no Grub, lembrando que é válido apenas para versão 2 (Grub 2) e talvez superiores.

Para tal, primeiramente é preciso criar um "super usuário" do Grub com senha para acessar as entradas protegidas. Para fazer isso é preciso editar o arquivo "/etc/grub.d/00_header", adicionando ao seu final as seguintes linhas:
 cat << EOF
set superusers="nomeDoSuperUsuario"
password nomeDoSuperUsuario senhaDoSuperUsuario
EOF

Creio que não haja muito a ser comentado sobre o caso acima... é só substituir "nomeDoSuperUsuario"
e "senhaDoSuperUsuario" pelo nome de usuário e senha desejados. O único problema é que, se alguém acessar o arquivo "00_header", terá acesso a tais informações de maneira explicita. Visando evitar isso, é possível fazer uso de uma senha criptografada, assim como descrito no caso abaixo:
 cat << EOF
set superusers="nomeDoSuperUsuario"
password_pbkdf2 nomeDoSuperUsuario senhaCriptografadaDoSuperUsuario
EOF

Da mesma forma que ocorre na situação anterior, basta
substituir "nomeDoSuperUsuario" e "senhaCriptografadaDoSuperUsuario" pelo nome de usuário desejado e a senha criptografada.
Para gerar tal senha, é preciso executar no terminal "grub-mkpasswd-pbkdf2" que irá requisitar o password desejado, a confirmação do mesmo e, por fim, irá devolvê-lo de forma criptografada (que será utilizada no lugar de "senhaCriptografadaDoUsuario"). Aproveito para alertar que,
no lucid (10.04), é meio "bugado", tendo vezes em que ele retorna a senha criptografada e vezes em que não faz o mesmo (tive de tentar várias vezes até funcionar), e também que, quando gerada, será uma sequência de caracteres bem grande (começando a partir de "grub.pbkdf2..."), mas é algo normal.

Tendo sido estas alterações feitas, agora é hora de partir para o arquivo "/etc/grub.d/10_linux". Aqui, aproximadamente na linha 72, há um trecho mais ou menos assim:
 if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
else
title="$(gettext_quoted "%s, with Linux %s")"
fi
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
O que é preciso fazer é deixar este bloco da seguinte forma:
 if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
printf "menuentry '${title}' ${CLASS} --users nomeDoSuperUsuario {\n" "${os}" "${version}"
else
title="$(gettext_quoted "%s, with Linux %s")"
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi
Fazendo desta forma, a senha será aplicada apenas ao modo de recuperação.
Perceba que a seguinte linha agora só se apresenta dentro do bloco "if .. else", não mais fora do mesmo...
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"  
... e que ela também sofreu uma pequena alteração, que foi destacada, caso a condição (é modo de recuperação?) seja verdadeira.
 if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
printf "menuentry '${title}' ${CLASS} --users nomeDoSuperUsuario {\n" "${os}" "${version}"
Se a condição for falsa, ela fica inalterada (não requerendo autenticação):
 else
title="$(gettext_quoted "%s, with Linux %s")"
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi

Se tudo estiver certo até aqui, agora só resta executar o comando "update-grub"...
 sudo update-grub
... e testar se as alterações estão funcionando.
No menu do Grub, é só selecionar alguma opção de modo de recuperação que será exibida uma "tela preta" requisitando o usuário e, em seguida, a senha. Caso esteja tudo certo, o sistema será iniciado pelo modo escolhido, senão, aparecerá uma mensagem informando que as informações estão incorretas, pedindo que seja pressionada qualquer tecla para continuar, voltando para o menu anteriormente exibido (se alguma tecla for pressionada, é claro).

Para mais informações sobre como proteger as entradas do Grub com senha, recomendo dar uma olhada neste tópico do UbuntuForums.Org.

Novamente espero que este post tenha sido de alguma ajuda! Se houver qualquer dúvida, é só fazer uso dos comentários!

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
As fontes de informação utilizadas para a criação deste tópico foram este tópico do forum UbuntuForum-BR.org e este do UbuntuForum.Org.

sábado, 2 de abril de 2011

Dica: Parar contagem regressiva do Grub

Eis que aqui estou novamente postando uma dica! Desta vez irei falar sobre o Grub!
...
Quando instalamos o Ubuntu ou outra distribuição Linux, que use o Grub como "gerenciador de boot", em Dual Boot com outro sistema operacional, percebemos que o menu com as opções para boot fica disponível apenas por 10 segundos (contagem que se apresenta na parte inferior da tela), sendo iniciada a opção default (que fica destacada) após o término do tempo.
No caso de muitas pessoas que tem o costume de ligar o computador e ir fazer outras coisas enquanto o sistema não é iniciado por completo, isto pode ser um incomodo, pois pode acabar sendo carregado outro SO que não seja o desejado caso a pessoa se esqueça de selecionar a opção devida dentro do tempo disponível.

Para aumentar ou simplesmente acabar com tal contagem regressiva, basta editar um determinado arquivo de configuração do Grub.

No caso de versões anteriores ao Grub 2, o arquivo em questão é o "/boot/grub/menu.lst". Nele é só procurar pela linha abaixo e efetuar as alterações de acordo com a necessidade:
 timeout 10 #Vale lembrar que o valor do timeout pode estar diferente
Para iniciar o sistema default ("padrão") de imediato, sem a contagem, é só atribuir o valor 0 (zero):
 timeout 0

Para remover a contagem, permitindo que o menu fique ativo até alguma opção ser selecionada, basta remover ou comentar a linha:
 #timeout 10

Para aumentar o tempo da contagem regressiva, logicamente, aumenta-se o valor atribuído:
 timeout 60 #Contagem aumentada para 60 segundos

No caso do Grub 2, as coisas funcionam de modo um pouco diferente. Nele não existe o arquivo "menu.lst", mas, em contra partida, há o "/etc/default/grub". Além disso, após qualquer alteração, é necessário executar o comando "update-grub" para que as mudanças tenham efeito.
Seguindo a mesma ordem do caso acima, para iniciar o sistema padrão de imediato, é só atribuir 0 (zero) a "GRUB_TIMEOUT", assim como feito abaixo:
 GRUB_TIMEOUT=0

Para remover a contagem, deixando o menu de maneira estática até que algo seja selecionado, basta atribuir um número negativo à mesma opção:
 GRUB_TIMEOUT=-1 #Comentá-la não funcionaria, pois seria considerado um valor padrão, que é 10

Para aumentar o tempo da contagem, como no caso anterior, aumenta-se o valor atribuído:
 GRUB_TIMEOUT=60 #Contagem aumentada para 60 segundos

Tendo sido as alterações feitas conforme necessário, agora é só executar o comando "update-grub" como root que as mesmas terão efeito:
 sudo update-grub

Bom, eu citei várias vezes um tal opção "padrão" (default), certo? Para quem não faz ideia do que estou falando, ela é a que, no menu, fica "selecionada" por padrão, sendo geralmente a primeira. Para alterar qual será a entrada "default" basta:
  • Em versões anteriores ao Grub 2: alterar o valor atribuído à "default", lembrando que a contagem começa a partir do 0 (zero);
  • No Grub 2: alterar o valor atribuído à "GRUB_DEFAULT", lembrando novamente que a contagem começa a partir do 0 (zero).
Como de costume, espero que esta dica tenha sido útil! Se houver qualquer dúvida ou encontrarem qualquer erro neste post, não deixem de comentar!

Na próxima postagem pretendo aproveitar o "embalo" e falar novamente sobre o Grub 2, especificamente, escreverei sobre "como proteger o modo de recuperação com senha".

Até a próxima!

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
Quanto as fontes utilizadas para a criação deste tópico, não tenho como informar ao certo, pois foi constituído de informações coletadas há muito tempo e de diversos lugares. Além disso, a forma de remover a contagem no Grub 2 descobri na tentativa e erro.

terça-feira, 29 de março de 2011

Dica: Configurar IP fixo no Ubuntu e outras distribuições Linux

Este já é um dos assuntos mais abordados em sites e blogs sobre Linux, contudo irei falar sobre o mesmo, já que foi algo que utilizei durante a minha migração para o Ubuntu.

A situação era a seguinte: um laboratório com dezenas de computadores e todos com IPs "aleatórios", fornecidos pelo servidor DHCP.
Como precisava saber o IP de cada uma para acessar compartilhamentos, SSH e outras finalidades, se fez necessário o uso de IP estático ("fixo").

Para tal, basta editar a interface utilizada, no arquivo "/etc/network/interfaces", do seguinte modo:
 # Interface
auto eth0
iface eth0 inet static
# Endereço de IP da máquina (a ser utilizado)
address 192.168.x.x
# Mascara de rede
netmask 255.255.255.0
# Gateway
gateway 192.168.x.x
# Servidor DNS... fazendo uso desta opção, o servidor DNS aqui
# informado será automaticamente adicionado aos nameservers
# no arquivo "/etc/resolv.conf"
dns-provider 192.168.x.x


Após a edição é só reiniciar o serviço:
 sudo /etc/init.d/networking restart

E testar se está tudo funcionando devidamente!

Também há a possibilidade de fazer tal configuração através de um cliente gráfico, porem não funcionou da forma que eu gostaria.

Mais uma vez, espero que este post tenha sido útil. Se houver qualquer dúvida ou erro, não deixe de recorrer aos comentários!

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
A fonte que utilizei quando precisei fazer uso de IP fixo e durante a criação deste post foi este tópico da comunidade "Viva O Linux":

Anúncios

DonkeyMails.com: No Minimum Payout