05/06/2020

Scripts de inicialização com Systemd

     O systemd é um sistema de inicialização (init system) composto por um conjunto de programas executado em segundo plano (ou seja, um daemon). Atualmente, a maioria das distribuições linux utiliza este daemon para gerenciar a inicialização do sistema. Dessa forma, se for necessário adcionar algum script a inicialização do Linux, não basta mais colocar o mesmo no /etc/rc.local, é necessário seguir o padrão do systemd.

     A inclusão de um script na inicializa é necessário que sejam seguidos alguns passos conforme a seguir.

1. Criação do script

     Embora o systemd seja o responsável pela inicialização do Linux, ele não inicializa scripts naturalmente, logo o script propriamente dito ainda é necessário.

     Crie o script para executar a ação desejada e salve no diretório que desejar. Como exemplo, será utilizado o script vpn_manager.sh salvo em /usr/local/sbin, pois facilita a posterior utilização.

2. Definir o momento da execução.

     O systemd executa as units (seus scripts) de acordo com o nível de execução definido no script. Assim, para informar quando deve ocorrer a execução, é necessário informar após qual processo ela deve ocorrer.
systemd-analyze plot > systemd.svg 
     O comando acima gera um relatório com todas as inicializações, sequência e tempo de inicialização individual, resultando em uma “imagem” com um gráfico. Para conseguir visualiza-la pode-se utilizar um navegador como Chrome, Chromium ou Firefox. Ou então algum programa de imagem ImageMagick, gimp, inkscape, etc.

3. Criando um serviço no daemon

Criar um arquivo com a nomenclatura [vpn_manager].service em /lib/systemd/system/, incluindo o conteúdo a seguir:
[Unit]
# Descricao do que sera executado
Description=gerenciamento de vpn
# Esta unit sera executada apos o servico definido
After=network.service openvpn.service

[Service]
# Tipo de inicialização
Type=simple
# Para que o systema considere o servico como ativo após executado
#RemainAfterExit=yes
# Este campo exige o caminho completo até o script a ser executado
ExecStart=/usr/local/sbin/vpn_manager.sh

[Install]
# Serviço valido para o runlevel multi-user.targe
WantedBy=multi-user.target 
Outras configurações pode ser realizadas, incluindo opções de start, status e stop. Mais informações podem ser encontradas nesse link ou nas referências.

4. Efetivando a configuração

chmod +x /usr/local/sbin/vpn_manager.sh
systemctl enable /lib/systemd/system/vpn_manager.service
systemctl daemon-reload
reboot
A primeira linha da permissão de execução para o script, caso ainda não tenha sido feito. A segunda habilita o service, a terceira recarrega ao daemon e a última reinicia o sistema para testar a configuração.  Sempre que forem realizadas alterações no daemon, o mesmo deve ser recarregado.

12/05/2020

Acessar Linux remotamente via RDP

      Geralmente os acesso remotos são realizados nos servidores via ssh. Mas por algum motivo, pode vir a ser necessário um acesso ao ambiente gráfico de um equipamento que não é um servidor e que somente o acesso ssh pode não resolver.
     Em momentos distintos, relativamente próximos, tive necessidade deste tipo de acesso em dois computadores, com distribuições Mint e Ubuntu e não fiquei muito surpreso ao ver que para cada uma é necessária uma configuração diferente.
     Logo, seguem as configurações realizadas em casa distribuição, que obviamente foram retiradas de algumas outras páginas, cujos endereços estão nas referências.


Configuração no Mint

Nesse senário, é possível apenas uma conexão remova por usuário, podendo o usuário estar logado localmente

1. Basta instalar o pacotes necessários e reiniciar o computador:
# sudo apt-get install xrdp xorgxrdp
2. Configura xrdp para permitir uma sessão remota. Caso essa linha não seja configurada, um erro de acesso é exibido após a senha. Alterar para mate-session ou para o ambiente gráfico que estiver utilizando
echo env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS cinnamon-session > ~/.xsession
3. Agora basta realizar o acesso por onde desejar, tando por outro SO Linux, utilizando o remina ou rdesktop ou por um SO Windows utilizando o assistente para conexão de área de trabalho remota.


Configuração no Ubuntu

1. Instalar o xrdp:
# apt-get install xrdp
2. Instalar o mate para área de trabalho alternativa, pois não encontrei uma solução para utilizar o Gnome.
# apt-get install mate-core mate-desktop-environment mate-notification-daemon
3. Configura xrdp para uso do mate
# sed -i.bak '/fi/a #xrdp multiple users configuration \n mate-session \n' /etc/xrdp/startwm.sh
4. Caso o teclado não funcione, este link foi o que funcionou para o meu caso. Caso está não funcione, em uma das referências, existe outra forma de realizar a configuração do teclado.

Referências


03/03/2020

Sincronização de data e hora no linux

     Em algumas instalações pode ocorrer de o servidor ficar com a hora incorreta devido ao fuso horário em que se encontra. A timezone na qual o dispositivo se encontra, pode ser verificada com o comando timedatectl e reconfigurada com o comando dpkg-reconfigure tzdata.

     Após a reconfiguração da timezone pode ser necessário manter o servidor com a hora sincronizada através de um servidor NTP. Essa configuração pode ser realizada com a instalação do ntpdate e configuração da sua execução periódica no crontab com a inclusão da linha * */2 * * * ntpdate [IP/URLdo servidor NTP 2>&1 >  /dev/null.
apt-get install ntpdate
     Alguns endereços de servidores NTP mais estáveis e/ou confiáveis são:
  • 0.pool.ntp.org
  • 1.pool.ntp.org
  • a.ntp.org
  • b.ntp.org
  • c.ntp.org
     Também existem outras formas de configurar a sincronização de data e hora, que podem ser pesquisadas na web ou em alguns dos links nas referências do post.

Referências