Desativando bluetooth interno para usar dongle externo no Linux

Hoje sou usuário do Linux Debian na versão testing/trixie com Gnome 45.
Ou seja uma versão bem atualizada.
Meu notebook é um Dell Inspiron 3558 (já não é muito moderno), e o mesmo possuí um dispositivo bluetooth conhecido como Intel 7260 ( Bus 002 Device 004: ID 8087:07dc Intel Corp. Bluetooth wireless interface )
O mesmo não funciona corretamente no Linux e até mesmo no windows há relatos de problemas.
Mesmo lendo diversas documentações não consegui fazer o mesmo funcionar corretamente.

Então apelei para o uso de um dongle externo. Mas a interface do Gnome não tem opção de selecionar qual o dispositivo bluetooth que deseja utilizar.
Uma opção seria instalar e usar o aplicativo blueman,

e a outra seria inibir o dispositivo bluetooth interno.
Optei pela opção de bloquear o dispositivo pelo controle do udev.
Para fazer isto crie um arquivo dentro de “/etc/udev/rules.d/” com qualquer nome desde que tenha a extensão .rules. No meu caso criei o arquivo com o nome “81-bluetooth-hci.rules”.

O conteúdo do arquivo /etc/udev/rules.d/81-bluetooth-hci.rules ficou assim:

SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="07dc", ATTR{authorized}="0"

Os valores foram obtidos pelo comando “lsub”

Então para outros modelos basta identificar e editar os valores de acordo com o seu dispositivo local.

Agora reinicie seu computador e agora seu dispositivo interno está desativado.

Minha referencia foi um post no portal stackexchange.com
https://elementaryos.stackexchange.com/questions/4177/how-to-select-bluetooth-dongle-over-internal-bluetooth-card

Configurando Servidor PPPOE simples no Debian 11

Recentemente precisei configurar um servidor PPPOE para testes internos em minha empresa.
Mas não precisava ser algo complexo com banco de dados Mysql, servidor Radius, etc. Eu já tinha scripts e documentação para configuração destes servidores mais complexos e em versões anteriores do Debian Linux, mas não tinha nada para algo simples e para a ultima versão do Debian 11. Então precisei pesquisar para como configurar e estou aqui publicando os passos por mim utilizado.

Não vou detalhar a instalação do Debian 11, mas basta realizar a instalação mínima selecionando apenas o pacote ssh pois até para economia de recursos e poder se utilizar uma máquina mais simples não se faz necessário a instalação de ambiente gráfico.
Para o hardware os requisitos são bem baixos apenas sendo necessário duas placas de rede. Uma por onde receberemos a internet do provedor e a outra para ser distribuída para o ambiente interno.

Após a instalação do Linux começamos instalando os pacotes mais abaixo.
É muito importante pois na falta deles a compilação do pacote rp-pppoe pelo código fonte não ocorrerá corretamente.
Primeiro vamos atualizar a lista de pacotes com o comando abaixo.

apt-get update

Agora vamos instalar os pacotes abaixo.

apt-get install make gcc ppp ppp-dev iptables

Com os pacotes devidamente instalados precisamos baixar o pacote rp-pppoe do site do projeto.
Na data em que edito este artigo a ultima versão disponível é a 3.15.

Podemos baixar o arquivo com o comando abaixo.

wget https://dianne.skoll.ca/projects/rp-pppoe/download/rp-pppoe-3.15.tar.gz

Após ter baixado o arquivo com sucesso temos que descompactar o mesmo com o comando abaixo.

tar -zxvf rp-pppoe-3.15.tar.gz

Após descompactar o arquivo será criado a pasta rp-pppoe-3.15. Vamos acessar a pasta scr que fica dentro da mesma.

cd rp-pppoe-3.15/src

Estando dentro da pasta src vamos executar os comandos abaixo pra compilar e instalar o pacote rp-pppoe

make clean
./configure --enable-plugin
make
make install

Com o sucesso da compilação agora passamos para a criação e configuração dos arquivos necessários para o funcionamento do servidor pppoe.

# 1 /etc/default/rp-pppoe_range

O primeiro arquivo que vamos configurar é o /etc/default/rp-pppoe_range. Este arquivo não existe. Eu estou criando o mesmo dentro da pasta /etc/default/ pois é uma pasta padrão de configuração, mas este arquivo pode ser criado em qualquer outro lugar desde que devidamente referenciado nos outros arquivos de configuração.
No meu servidor a faixa de rede escolhida é 100.90.80.0/24 mas você utilizar outra faixa de rede caso preferir desde que esta faixa de rede seja diferente da faixa de rede da entrada da sua internet.

Então o conteúdo do meu arquivo /etc/default/rp-pppoe_range ficou assim.

100.90.80.2-254
# 2 /etc/ppp/chap-secrets

Este segundo arquivo é onde ficará armazenados os logins e as senhas dos clientes pppoe do servidor.
O padrão deste arquivo é .:

"login" * "senha" *

A primeira coluna é o login entre “aspas”. Sim as aspas fazem parte do arquivo. A segunda coluna é o * asterisco. A terceira coluna é a senha também entre aspas. A quarta coluna é o endereço de ip. Se deixarmos um * asteriscos o endereço de ip será aleatório dentro da faixa de rede escolhida, mas caso deseje pode se fixar o endereço.

Veja os exemplos.

"edmarcos" * "123456" *

ou

"edmarcos" * "123456" 100.90.80.3
# 3 /etc/ppp/pppoe-server-options

O terceiro arquivo que vamos editar é o /etc/ppp/pppoe-server-options. Este arquivo já existe e precisamos editar apenas um parâmetro e acrescentar outros ao mesmo.

Primeiro procure pela linha que contém este texto.:

require-pap

comente esta linha acrescentando um # no começo da mesma e abaixo dela  adicione esta linha.

require-chap

Então o arquivo deve ficar assim:

#require-pap
require-chap

Agora vamos configurar os servidores de dns que desejamos utilizar. No meu caso estou utilizando os servidores do google, mas outros servidores podem ser utilizados. Então adicione as duas linha conforme exemplo abaixo.

ms-dns 8.8.8.8
ms-dns 8.8.4.4

E vamos adicionar mais 4 parâmetros ao final do arquivo como no exemplo abaixo.

netmask 255.255.255.0
defaultroute
noipdefault
usepeerdns
# 4 /usr/local/sbin/rp-pppoe-server.sh

O quarto arquivo a ser editado não existe e precisa ser criado. Vamos criar o mesmo em /usr/local/sbin/rp-pppoe-server.sh com o conteúdo abaixo.

#!/bin/bash

modprobe pppoe

/usr/sbin/pppoe-server -k -C EdegServer -L 100.90.80.1 -p /etc/default/rp-pppoe_range -I eth0

No caso edite seu arquivo alterando o parâmetro “-C EdegServer” para o nome que quiser usar em seu servidor. Também altere o parâmetro “-I eth1” pelo nome da placa de rede de saída do seu servidor.

Com o arquivo devidamente customizado vamos adicionar permissão de execução do mesmo com o comando abaixo.

chmod a+x /usr/local/sbin/rp-pppoe-server.sh
# 5 /usr/local/sbin/masquerade.sh

Para que os computadores conectados neste servidor pppoe possam navegar pela internet precisamos configurar um roteamento via iptables. Para isto vamos configurar um arquivo simples para fazer o masquerade.

Segue exemplo abaixo.

#!/bin/bash

FW=/sbin/iptables
SRC=100.90.80.0/24 # faixa de rede do servidor pppoe
WAN=eth1 # placa de rede da entrada da internet

echo 1 > /proc/sys/net/ipv4/ip_forward

$FW           -F
$FW -t nat    -F
$FW -t mangle -F

$FW -t nat -A POSTROUTING -o $WAN -s $SRC -j MASQUERADE

Também precisamos dar permissão de execução neste arquivo com o comando abaixo.

chmod a+x /usr/local/sbin/masquerade.sh
# 6 /etc/rc.local

Para que o script /usr/local/sbin/rp-pppoe-server.sh e o script /usr/local/sbin/masquerade.sh sejam executados automaticamente toda a vez que o computador for inicializado ou reinicializado vamos fazer de maneira simples editando o arquivo /etc/rc.local.
Nas versões mais recentes do Debian este arquivo não existe mais. Por isto vamos criá-lo conforme o exemplo abaixo.

#!/bin/sh

/usr/local/sbin/rp-pppoe-server.sh
/usr/local/sbin/masquerade.sh

exit 0

Também precisamos dar permissão de execução no /etc/rc.local conforme exemplo abaixo.

chmod a+x /etc/rc.local

Pronto. O servidor está devidamente configurado agora basta testar o mesmo.

Referencias usadas:
https://dianne.skoll.ca/
https://www.vivaolinux.com.br/dica/Configurando-um-PPPOE-Server

Cubic – Instalando no Debian 11 Bullseye

Cubic (Custom Ubuntu ISO Creator) é uma ferramenta para customização de imagens isos de cd.

Segundo a tradução da página do projeto é: O Cubic permite uma navegação sem esforço pelas etapas de personalização ISO e apresenta um ambiente de linha de comando virtual integrado para personalizar o sistema de arquivos Linux. Você pode criar novos projetos de personalização ou modificar projetos existentes. Parâmetros importantes são preenchidos dinamicamente com padrões inteligentes para simplificar o processo de personalização.

No meu dia a dia com a informática tenho utilizado versões do Linux Mint Mate rodando LIVE CD por PENDRIVE principalmente para realização de backups de computadores Windows, clonagem de HDs e também em várias outras situações de manutenção.

Mas as imagens ISOS rodando via LIVECD não trazem alguns programas necessários no meu dia a dia. Entre estes programas estão o ddrescue,  gparted, nfs-common. Portanto toda vez que inicializava um pendrive tinha que fazer um “apt-get update” e “apt-get install” estes programas.

Na correria do dia a dia queria não ter que perder mais este tempo.

A solução para tal problema seria customizar uma IMAGEM ISO deixando estes programas já pré instalados.

Uma maneira fácil de se fazer é utilizando o programa CUBIC mas infelizmente este pacote não se encontra disponível nos repositórios DEBIAN. Ao tentar instalar customizando repositórios PPA no debian o mesmo apresentou erros.

Então neste artigo vou mostrar uma maneira alternativa de fazer a instalação do CUBIC no DEBIAN 11 Bullseye.

Comece acessando o repositório PPA pelo seu navegador Web.
http://ppa.launchpad.net/cubic-wizard/release/ubuntu/pool/main/c/cubic/

Selecione a versão mais recente disponível. No meu caso selecionei a versão abaixo.
http://ppa.launchpad.net/cubic-wizard/release/ubuntu/pool/main/c/cubic/cubic_2022.12-74-release~202212012321~ubuntu22.04.1_all.deb

Faça o download do mesmo e execute os comando abaixo. Obs: substitua cubic_2022.12-74-release~202212012321~ubuntu22.04.1_all.deb pela versão que você baixou

ar x cubic_2022.12-74-release~202212012321~ubuntu22.04.1_all.deb
zstd -d < control.tar.zst| xz > control.tar.xz
zstd -d < data.tar.zst| xz > data.tar.xz
ar -m -c -a sdsd cubic.deb debian-binary control.tar.xz data.tar.xz
dpkg -i --force-overwrite cubic.deb
apt-get -f install

Pronto o pacote cubic está instalado e agora é só fazer uso do mesmo.
Não vou falar sobre o uso do mesmo neste artigo mas abaixo link para vídeo no youtube do Prof.Juliano Ramos.
Criando um Remaster do Ubuntu 20.04

Referencias usadas:
How to Create Custom Linux Mint or Ubuntu ISO
Cubic PPA
Discussão no Redit: Can Cubic be installed on Debian 11 ?

Banco de dados PostgreSQL. Linux vs Windows. Qual melhor performance ?

O sistema da banco de dados PostgreSQL é com certeza um dos melhores bancos de dados do mercado.
Mas aonde o mesmo roda melhor ? Seria em servidores rodando LINUX ou servidores rodando Windows ?
Segundo o ditado “Mata a cobra e mostra o pau” eu prefiro “mostrar a cobra morta”.

Pois bem para isto realizei testes de desempenho em um hardware de boa qualidade para tirar as minhas conclusões, e mostrar aos homens de pouca fé o quanto o LINUX é melhor.

Nestes testes o hardware utilizado tinha as seguintes características:
PROCESSADOR INTEL GOLD G6405
PLACA MÃE ASUS H510M-C
16gb MEMÓRIA DDR4 KEEPDATA
HD NVME 1tb Kingspec (WHITH CACHE)(Obs: Este modelo de ssd Chines possuiu memória cache e um ótimo desempenho)

Os testes foram feitos usando o pgbench que é uma ferramenta para teste benchmark do PostgreSQL.

# Teste 1 Windows

No primeiro teste o computador foi formatado com Windows 10 Pro. Todos os drivers da placa mãe foram instalados e todas as atualizações do Windows  foram aplicadas. Nenhum software adicional foi instalado.
A versão do PostgreSQL utilizada foi a 9.5 devido ao fato de atender uma empresa de software que a utiliza para o seu sistema e eu forneço suporte.
postgresql-9.5.25-1-windows-x64.exe

A instalação do PostgreSQL foi a padrão e o únicos ajustes feitos foram permitir o acesso sem senha para 127.0.0.1 no arquivo “pg_hba.conf” e aumentar o parâmetro “shared buffers” para 2gb no arquivo “postgresql.conf”.

Feito isto primeiramente foi criando uma base da dados com o nome “teste”.

Depois realizei a população desta base da dados com o comando abaixo:

pgbench -U postgres -h 127.0.0.1 -i -s 500 teste

Com esta base de dados devidamente populada os testes foram realizados com o comando abaixo:

pgbench -U postgres -h 127.0.0.1 -c 10 -j 2 -t 10000 teste

Realizei 3 testes na sequencia e os valores de INCLUSÃO e EXCLUSÃO obtidos na sequência foram.:

WINDOWS 10
INCLUSÃO EXCLUSÃO
1 3419 3423
2 3262 3265
3 3802 3806
MÉDIA 3494 3498

Link das imagens dos 3 testes realizados.

teste windows 1
teste windows 2
teste windows 3


# Teste 2 Linux (DEBIAN)

Neste teste o computador foi reinstalado usando o Linux Debian 12.

A instalação foi feita com o instalador em modo texto selecionando pacotes básicos sem interface gráfica + servidor ssh.
O PostgreSQL usado foi a versão binária do postgresql-9.5 para Debian 64 fornecida no site do PostgreSQL através dos repositórios do
http://apt.postgresql.org.
Para instalar esta versão foi adicionado o repositório do site oficial do PostgreSQL. Para isto faça como no exemplo abaixo.

apt install gnupg2

 

echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get -y install postgresql-9.5

Os testes feitos usaram os mesmos parâmetros do teste no windows.
Primeiro vamos conectar no postgres como no exemplo abaixo.

psql -U postgres -h 127.0.0.1 -d template1

Agora vamos criar a base de dados de teste.

create database teste

Veja exemplo:

Agora vamos popular a base de teste.

pgbench -U postgres -h 127.0.0.1 -i -s 500 teste

E agora vamos realizar o teste.

time pgbench -U postgres -h 127.0.0.1 -c 10 -j 2 -t 10000 teste

Também foram realizados 3 testes na sequencia e os valores de INCLUSÃO e EXCLUSÃO obtidos foram.:

LINUX (PostgreSQL Apt Repository)
INCLUSÃO EXCLUSÃO
1 3627 3628
2 4049 4050
3 4170 4171
MÉDIA 3949 3950

Comparando as médias dos testes no Windows o Postgres rodando no Linux foi 13% mais eficiente.

Link das imagens dos 3 testes realizados.

teste Linux 1 (PostgreSQL Apt Repository)
teste Linux 2 (PostgreSQL Apt Repository)
teste Linux 3 (PostgreSQL Apt Repository)

# Teste 3 Linux (Debian Postgres instalado pelo código fonte)

Neste teste foi aproveitado a mesma instalação do Linux anterior do Debian 12.
Mas para poder instalar o postgres pelo código fonte primeiro foram removidos os pacotes .deb instalados anteriormente.

apt-get remove \
postgresql-9.5 \
postgresql-client-9.5 \
postgresql-client-common \
postgresql-common \
postgresql-contrib-9.5

Após remover os pacotes .deb foi feito o download do código fonte da versão postgresql-9.5.25.tar.bz2

Não vou detalhar os métodos de compilação. Mas as configurações do postgres foram a mesmas.

LINUX (compilado)
INCLUSÃO EXCLUSÃO
1 6310 6312
2 6696 6696
3 6708 6708
MÉDIA 6571 6572

Link das imagens dos 3 testes realizados.

teste Linux 1 (Compilado)
teste Linux 2 (Compilado)
teste Linux 3 (Compilado)

Comparando as médias dos testes o Linux com o Postgres compilado pelo código fonte foi quase 88% eficiente que a versão rodando no Windows e aproximadamente 66% mais eficiente que a versão Linux instalada pelos repositórios do site do Postgres.

Comentem os testes e caso alguém tenha links para outros testes deixem nos comentários.

Desativando chamada em espera no OI FIXO


Este post pra mim tem a mesma função de uma agenda.
Eu particularmente não gosto de um telefone que fica em chamada em espera. Pois quando os clientes ligam acham que ninguém atende e não que ele já está ocupado.
E em uma oportunidade entrei em contato no 0800 da OI e uma atendente muito rapidamente me ensinou como desativar o recurso.
Mas um tempo depois após uma alteração do meu plano telefônico a chamada em espera estava novamente ativada. E desta vez já não foi fácil conseguir falar com uma atendente que conseguisse me passar novamente a informação correta de como se desativar o recurso.
E hoje depois de várias tentativas anteriores frustradas acertei uma atendente que localizou nos manuais da OI como se faz. Claro que dei um 10 na avaliação de atendimento dela.

Então segue o procedimento de como fazer pra nunca mais esquecer.

Para desativar a chamada em espera (desprogramar)
#43#

Para ativar a chamada em espera (programar)
*43#

Espero que este post seja útil para mais pessoas.

Imprimindo do Linux para Windows via LPD sem usar o Samba

As ultimas atualizações do Windows 10 criaram grandes problemas para imprimir de Linux para Windows.
Passei por situações onde em ambiente de teste funcionava mas nos cliente por mais que tudo estava configurado igual dava erro e não imprimia.
Cansando e sem perspectiva de solução optei por uma nova abordagem do problema.
Em vez de insistir usando SAMBA/CUPS por que não usar CUPS/LPR ?
Apesar de pouco documentado o Windows possui suporte a impressão no formato LPR mas o mesmo vem desativado por padrão.
Então vamos para os procedimentos necessários.

Parte 1 – Ativar o Serviço LPD no Windows.

Então o primeiro passo é ativar o mesmo. Para isto abre o painel de controle “Clássico” o mesmo do estilo do Windows7.

Vá em Painel de controle.:

Painel de controle\Programas.:

Painel de controle\Programas\Programas e recursos.:

Selecione “Ativar ou desativar recursos do Windows”

Na janela “Ativar ou desativar recursos do Windows” procure por “Serviços de impressão e Documentos” e marque a opção “Serviço de impressão LPD”

Aplique as modificações do Windows e reinicie caso necessário.

Instale, configure e compartilhe sua impressora no windows como faria normalmente. Mas recomendo no nome do compartilhamento usar nomes curtos e evitar espaços nos nomes, pois na hora de configurar o computador com Linux espaços devem ser substituídos por %20 o que pode deixar a configuração mais confusa e gerar erros.

Parte 2 – Configurar o cliente LINUX.

Caso o computador onde a impressora esteja instalada possua endereço ip fixo podemos configurar apontando para o endereço ip do computador. Mas caso o mesmo não possua ip fixo ai devemos configurar pelo nome NetBios mas para isto precisamos de configurações adicionais em seu computador com Linux.

Nas distribuições baseadas em Debian instale os pacotes:
smbclient libnss-winbind
Fontes: https://charlieharvey.org.uk/page/slow_nautilus_browse_with_netbios

apt-get install smbclient libnss-winbind

Agora edite o arquivo.:
/etc/nsswitch.conf

localize a linha começando com “hosts:” algo parecido como abaixo.

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

edite e após a palavra files adicione “wins”, deve ficar assim agora.

hosts:          files wins mdns4_minimal [NOTFOUND=return] dns myhostname

Agora seu computador com Linux consegue localizar computadores windows pelo nome netbios. Agora podemos configurar via cups para imprimir no computador com windows.
No meu exemplo vou configurar utilizando a interface web do próprio cups mas outros métodos podem ser usados.

Como na imagem abaixo acesse em seu navegador o endereço https://127.0.0.1:631

Vá em “Administração” e selecione “Adicionar impressora”

Vai surgir uma janela de autenticação. Em distribuições Debian digite o login “root” e a senha do mesmo. Caso seu Linux seja Ubuntu ou Linux Mint use o usuário principal e senha do mesmo.
Com a autenticação bem sucedida selecione a opção “Impressora ou máquina LPD/LPR”. Obs: Eventualmente o texto pode variar um pouco conforme a versão do Cups ou do Linux.

Agora clique em continuar. Obs: No meu exemplo a versão do Cups está com erro de tradução e está escrito “Continar”…

No meu exemplo o computador se chama “win10-pc” e a impressora está compartilhada como “hplaser”.
Então a configuração fica.: lpd://win10-pc/hplaser

Após configurar clique em continuar.

Selecione o fabricante da impressora. No meu exemplo selecionei “HP”.

Na próxima tela selecione o modelo de sua impressora conforme o exemplo abaixo.

Na próxima tela selecione “Definir opções padrão”

Pronto. A impressora está configurada.

Agora pode testar sua impressão. Claro que para algumas impressoras como hp1102w e modelos Samsung drivers adicionais devem estar instalados em seu Linux para o correto funcionamento.

Configurando LTSP 5 no Linux Mint 20.1 (Revisado – mas ainda por melhorar)

O projeto LTSP sofreu uma grande atualização e passou do LTSP 5 para LTSP 2020.
Mas um dos problemas que encontrei na nova versão é que os processos são executados nas estações e não no servidor. O que pode não ser útil no caso de uso de computadores mais antigos e com menor capacidade de processamento.
Infelizmente desde a versão 20 do Linux Mint e também nas ultimas versões do Ubuntu e na próxima versão do Debian 11 Bullseye somente a versão 2020 do LTSP está disponível.
Então vou mostrar como configurar o LTSP 5 no Linux Mint 20.1 usando pacotes do Ubuntu 18.04 Bionic e as estações usando a versão Debian 10 Buster.

Para começar o primeiro passo é aplicar todas as atualização disponíveis até o momento. Para isto execute os comandos:
apt-get update 
apt-get upgrade 
apt-get dist-upgrade 
Com o sistema já atualizado também configure um endereço de IP fixo para o seu servidor. É importante lembrar que qualquer outro servidor DHCP na rede é interessante desativar os mesmos para evitar conflitos na rede.
Eu particularmente não gosto muito da estrutura de DNS fornecida pelo systemd. Por isto vamos desativar este serviço.
systemctl disable systemd-resolved
systemctl stop systemd-resolved
rm /etc/resolv.conf

cat /etc/NetworkManager/NetworkManager.conf | grep -q "^dns=default" || {
	sed -i "s|\[main\]|\[main\]\ndns=default|" /etc/NetworkManager/NetworkManager.conf
}

systemctl restart NetworkManager
Caso tenho configurado seu IP de rede no arquivo /etc/network/interfaces também vamos configurar manualmente o dns no arquivo /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Também vamos desativar o protocolo IPV6.
echo "net.ipv6.conf.all.disable_ipv6=1" > /etc/sysctl.d/disableipv6.conf
Para um melhor funcionamento das estações vamos remover o pacote dbus-user-session e instalar o pacote dbus-x11.
apt remove dbus-user-session
apt install dbus-x11
Agora vamos instalar os pacotes necessários para a instalação do LTSP.
apt-get -y install \
	isc-dhcp-server \
	tftpd-hpa \
	nfs-kernel-server \
	nbd-server \
	debconf-utils \
	debootstrap \
	tcpd \
	openbsd-inetd \
	ldm-server
O passo seguinte é adicionar o repositório do Ubuntu 18.04 para podermos instalar os pacotes LTSP 5 que foram removidos das versões recentes.
echo "deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse" > /etc/apt/sources.list.d/bionic.list
Vamos atualizar novamente a informação dos pacotes com o novo repositório.
apt-get update
Se eventualmente tiver o pacote dnsmasq instalado vamos removê-lo.
apt-get remove dnsmasq
apt-get -f install
apt-get autoremove
Agora podemos instalar os pacotes LTSP.
apt-get -y install \
   ltsp-server \
   ltsp-server-standalone \
   ltspfs
Se chegou até aqui sem erros finalmente então vamos proceder a configuração do LTSP. Eu particularmente prefiro configurar usando a arquitetura i386 que dá suporte a equipamentos mais antigos. Se não for o seu caso experimente também a versão amd64.
Para definir o uso de versão i386 nos terminais vamos editar o arquivo /etc/ltsp/ltsp-build-client.conf com o conteúdo abaixo:
ARCH="i386"
#ARCH="amd64"
MIRROR="http://deb.debian.org/debian/"
DIST="buster"
A chave para não ter erros da instalação do LTSP no Mint são a definição do mirror http://deb.debian.org/debian/ feito acima no arquivo /etc/ltsp/ltsp-build-client.conf e também criar um link simbólico na pasta ltsp-build-client. Para isto execute os comandos abaixo.
cd /usr/share/ltsp/plugins/ltsp-build-client
ln -sf Debian Linuxmint
Agora podemos completar a instalação do Servidor LTSP executando o comando ltsp-build-client.
ltsp-build-client --copy-package-cache
O parâmetro –copy-package-cache é util pois caso tenha um erro na instalação e tenha que fazer novamente os arquivos foram salvos em /var/cache/apt/archives o que evitará que se tenha que baixar os mesmos novamente.

Caso tenha executado tudo corretamente a sua instalação deve ter concluído sem erros.

Por padrão esta instalação foi feita usando o método NBD. Este modelo tem suas vantagens mas uma desvantagem que me incomoda é que toda vez que alguma modificação for feita para algum terminal editando o arquivo lts.conf uma nova imagem tem que ser gerada, o que pode ser um pouco chato pela demora. Caso prefira trabalhar no formato NFS edite o arquivo /opt/ltsp/i386/etc/ltsp/update-kernels.conf.
sed -i "s|^BOOT_METHODS=\"NBD AOE NFS\"|BOOT_METHODS=\"NFS NBD AOE\"|" /opt/ltsp/i386/usr/share/ltsp/update-kernels
	chroot /opt/ltsp/i386 /usr/share/ltsp/update-kernels
	ltsp-update-kernels
Caso tenha optado por configurar usando NFS é necessário configurar o arquivo /etc/exports. Você pode configurar assim:
/opt/ltsp	*(ro,no_root_squash,async,no_subtree_check)
Ou deixar explicito sua faixa de rede assim como no exemplo. Modifique de acordo com sua faixa de rede.
/opt/ltsp	192.168.0.0/24(ro,no_root_squash,async,no_subtree_check)
Depois de modificar o arquivo /etc/exports temos que reiniciar o serviço NFS usando o comando abaixo
/etc/init.d/nfs-kernel-server restart
Mas nada vai funcionar se não configurarmos o DHCP. Eu prefiro trabalhar com o isc-dhcp-server pra quem usa dnsmasq não vou entrar em detalhes pois nunca implementei nada usando o mesmo. Caso tenha mais de uma placa de rede no seu servidor edite o arquivo /etc/default/isc-dhcp-server como no exemplo abaixo. Nele comentei o uso do protocolo IPV6 e indiquei minha placa de rede em INTERFACESv4. Esta configuração nem sempre é necessária. Mas configurar corretamente não fará nenhum mal.
INTERFACESv4="enp0s3"
#INTERFACESv6=""
Agora vamos configurar o arquivo /etc/dhcp/dhcpd.conf adicionando ao fim do arquivo a linha abaixo.
include "/etc/ltsp/dhcpd.conf";
A instalação já terá criado um arquivo modelo em /etc/ltsp/dhcpd.conf. Mas precisamos editar o mesmo de acordo com sua rede. Veja o exemplo abaixo.
#
# Default LTSP dhcpd.conf config file.
#

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.20 192.168.0.45;
    option domain-name "edeg.localnet";
    option domain-name-servers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    next-server 192.168.0.200;
#    get-lease-hostnames true;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}
Fique atento a linha next-server, ela deve apontar para o endereço IP do seu servidor LTSP Após tudo configurado reinicie o servidor DHCP
/etc/init.d/isc-dhcp-server restart
ou
service isc-dhcp-server restart
Ajustes para as estações devem ser feitos em /opt/ltsp/i386/etc/lts.conf. Mas eu gosto de criar um link para /etc/ltsp
cd /etc/ltsp
ln -sf /opt/ltsp/i386/etc/lts.conf  ./
Se tudo deu certo seu servidor LTSP já está funcionando corretamente.

Alterando a senha do seu certificado digital A1 .pfx no Linux

Hoje em dia muitas empresas fazem uso de certificados no formato A1 pela facilidade de disponibilizar o mesmo em vário computadores simultaneamente, diferente dos certificado no formato A3 que podem apenas ser utilizados em um computador por vez.
Mas ocorre que muitos fornecedores de certificados fornecem os arquivos de certificados .pfx já com uma senha pré configurada, e esta senha ou é muito simples tipo 1234 ou uma senha difícil de ser lembrada.
No ambiente Windows podemos importar o certificado .pfx e depois exportar o mesmo pelo Internet Explorer alterando a senha do certificado exportado.
Mas após várias pesquisas na internet não encontrei nenhuma aplicação para o Linux, nem no projeto GNOME ou projeto KDE.
Mas podemos fazer a manipulação destes certificados tanto pelo Mozilla Firefox ou como pelo Google Chrome.

No firefox vá em:
Preferências -> Avançado -> Ver certificados
Nesta janela vá em:
Seus certificados -> Importar

 

Configurando certificado A3 no LINUX Mint 19


A configuração de certificados digitais no formato A3 no LINUX possuí uma boa documentação já publicada, mas os softwares envolvidos para esta configuração são para versões antigas do Ubuntu e ao tentar configurar em distribuições mais recentes o procedimento encontra erros por causa de dependências de pacotes .deb não satisfeitas.
Nesta postagem vou detalhar como contornar estes problemas.
O site da certificadora VALID apresenta uma ótima documentação e os arquivos necessários para a configuração e funcionamento do seus próprios certificados como o de certificados de outras empresas certificadoras. Abaixo o link do site da VALID onde podemos fazer o download dos pacotes necessários.
http://www.validcertificadora.com.br/SafeSignLinux
As configurações apresentadas abaixo foram testadas no LINUX Mint 19 Mate, mas a mesma deve funcionar em outras distribuições LINUX derivadas do Debian.

Configurando sua leitora

O primeiro passo é configurar o driver para a nossa leitora. Nos meus testes estou utilizando uma leitora da Gemalto.
Para o funcionamento desta leitora e de várias outras basta instalar o pacote libccid que acompanha todas a distribuições LINUX recentes.

Mais informações podem ser vistas no site da Gemalto.
http://support.gemalto.com/

No exemplo abaixo vamos instalar o pacote libccid

apt-get update
apt-get install libccid

Também vamos instalar os pacotes pcscd e pcsc-tools.

apt-get install pcscd pcsc-tools

Para testar se sua leitora está funcionando vamos executar no terminal o comando pcsc_scan. Na imagem abaixo podemos ver que minha leitora Gemalto foi identificada e a mesma não possuiu nenhum cartão inserido.

Comprovado o funcionamento da leitora o próximo passo é instalar a biblioteca safesignidentityclient.
Esta biblioteca é desenvolvida pela SafeSign e é utilizada por várias outras empresas certificadoras e a mesma pode ser baixada do site da VALID nas versões 32 ou 64 bits. Os links estão abaixo:

Versão 32 bits.: safesignidentityclient_3.0.77-Ubuntu_i386.deb
Versão 64 bits.: safesignidentityclient_3.0.77-Ubuntu_amd64.deb

Faça o download do pacote safesign para a versão correta do seu LINUX e depois também faça o download do pacote libgdbm3 32 ou 64 bits para a versão correta do seu LINUX. Os links estão abaixo:

Versão 32 bits.: libgdbm3_1.8.3-13.1_i386.deb
Versão 64 bits.: libgdbm3_1.8.3-13.1_amd64.deb

No exemplo abaixo vou baixar e instalar o pacote libgdbm3 64 bits.

cd /usr/local/src/
wget -c http://mirrors.kernel.org/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb
dpkg -i libgdbm3_1.8.3-13.1_amd64.deb

Agora vamos baixar o pacote safesignidentityclient na pasta “/usr/local/src/”

cd /usr/local/src/
wget -c https://s3-sa-east-1.amazonaws.com/shared-www.validcertificadora.com.br/safesignidentityclient_3.0.77-Ubuntu_amd64.deb

Devido aos problemas de dependências que este pacote apresenta no Mint19 não vamos instalar o mesmo. E sim apenas extrair seus arquivos para que possam ser copiados.
Primeiro vamos criar uma pasta dentro /tmp para extrair os arquivos.

mkdir -p /tmp/safesign

Agora vamos extrair os arquivos do pacote .dev

dpkg -x /usr/local/src/safesignidentityclient_3.0.77-Ubuntu_amd64.deb /tmp/safesign/

Como nossa configuração vai ser um “enxerto”, é altamente recomendável não misturar estes arquivos com os arquivos naturais do sistema. Por isto toda nossa instalação vai ser feita dentro da pasta /opt.
Então criaremos as pastas /opt/safesign/bin e /opt/safesign/lib

mkdir -p /opt/safesign/bin /opt/safesign/lib

Agora vamos copiar alguns arquivos que extraímos em /tmp/safesign para /opt/safesign/bin e /opt/safesign/bin
Abaixo a sequencia de comandos que você deve fazer:

cd /tmp/safesign/
cd usr/lib/
cp -av * /opt/safesign/lib/
cd ../bin/
cp -av * /opt/safesign/bin/

Agora vamos configurar o LINUX para que o mesmo procure pelas bibliotecas copiadas em /opt/safesign/lib/
Então temos que criar arquivo em /etc/ld.so.conf.d
Abaixo os comandos necessários:

touch /etc/ld.so.conf.d/safesign.conf
echo "/opt/safesign/lib" &gt; /etc/ld.so.conf.d/safesign.conf
ldconfig

Configurando seu Navegador

Neste ponto o seu certificado está pronto pra uso e já pode ser configurado e testado no seu navegador Mozilla Firefox.
Abra seu navegador Mozilla Firefox. Vá em.: Menu -> Preferências
Em “pesquisar em preferências” procure por certificados (veja imagem abaixo)

Agora selecione a opção “Dispositivos de Segurança”

Na próxima janela selecione a opção “carregar”

Na janela “Carregar driver de dispositivo PKCS#11” em “Nome do módulo” edite caso deseje ou pode manter como está. Já em “Nome do arquivo do módulo” selecione o botão “Procurar” e navegue até.: /opt/safesign/lib/libaetpkss.so.3 e selecione o mesmo.
Caso não receba nenhuma mensagem de erro o mesmo foi carregado perfeitamente.
Agora na próxima janela selecione a opção “Ver certificados“. Neste momento seu cartão de certificado deve estar inserido na leitora.
Após selecionar a opção “Ver certificados” a próxima janela aparecerá solicitando a senha de seu cartão. Insira a senha correta nesta janela.

Com a senha inserida a próxima janela irá mostrar que seu certificado foi carregado corretamente e está funcional.

Tokenadmin

Junto ao pacote safesing vem a aplicação tokenadmin para que possamos gerenciar seu certificado no cartão. Agora vamos configurar as dependências necessárias para o funcionamento do mesmo.

Precisamos baixar os pacotes libwxbase2.8, libwxgtk2.8 e libtiff4. Abaixo os links para os mesmos.

Versão 32 bits.:
libwxbase2.8-0_2.8.12.1-6ubuntu2_i386.deb
libwxgtk2.8-0_2.8.12.1-6ubuntu2_i386.deb
libtiff4_3.9.6-9ubuntu1_i386.deb
libpng12-0_1.2.54-1ubuntu1.1_i386.deb

Versão 64 bits.:
libwxbase2.8-0_2.8.12.1-6ubuntu2_amd64.deb
libwxgtk2.8-0_2.8.12.1-6ubuntu2_amd64.deb
libtiff4_3.9.6-6ubuntu1_amd64.deb
libpng12-0_1.2.54-1ubuntu1.1_amd64.deb

Nos exemplos abaixo estaremos configurando na versão 64 bits.

cd /usr/local/src
wget -c https://s3-sa-east-1.amazonaws.com/shared-www.validcertificadora.com.br/libwxbase2.8-0_2.8.12.1-6ubuntu2_amd64.deb
wget -c https://s3-sa-east-1.amazonaws.com/shared-www.validcertificadora.com.br/libwxgtk2.8-0_2.8.12.1-6ubuntu2_amd64.deb
wget -c https://s3-sa-east-1.amazonaws.com/shared-www.validcertificadora.com.br/libtiff4_3.9.6-6ubuntu1_amd64.deb
wget -c http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
dpkg -i libtiff4_3.9.6-6ubuntu1_amd64.deb
dpkg -i libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
mkdir -p /tmp/wx
dpkg -x libwxbase2.8-0_2.8.12.1-6ubuntu2_amd64.deb /tmp/wx
dpkg -x libwxgtk2.8-0_2.8.12.1-6ubuntu2_amd64.deb /tmp/wx
cd /tmp/wx/usr/lib/x86_64-linux-gnu
cp -av * /opt/safesing/lib/
ldconfig
cd /usr/local/bin
ln -sf /opt/safesign/bin/* ./

Já podemos testar o funcionamento do aplicativo digitando tokenadmin no terminal e aplicativo se abrirá como na imagem abaixo.

update-icon-caches /usr/share/icons/*

cd /tmp/safesign/
cd usr/lib/
cp -av * /opt/safesign/lib/
cd ../bin/
cp -av * /opt/safesign/bin/

Script automático 64 bits

Fontes utilizadas:
Valid Certificadora Digital – PARA USUÁRIOS LINUX
Usando certificado digital GOV.BR no Firefox em Debian GNU/Linux
Instalando o SafeSign Crypto USB Token no Firefox/Linux
Instalado e utilizando o Token GD Starsign com o certificado A3 no Ubuntu
Utilizando certificados e-CNPJ e e-CPF no Linux
Instaladores – Mac OS e Linux
Suporte Gemalto
Dicas-L – Utilizando smartcards

Configurando Firefox e Java 32 bits em Debian Linux 64

mozicon128Recentemente um cliente que é advogado decidiu passar a utilizar Debian Linux em seu computador de trabalho.
Uma dos problemas de compatibilidade que surgiu e precisou ser sanado foi que um determinado site utilizado pelo cliente somente funciona se usando java na versão 32 bits. Diferente do Windows que mesmo se utilizando o sistema em 64 bits, é padrão o navegador e o Java serem 32 bits. Já no Linux 64 bits o java padrão também é 64 bits.
Para resolver este problema resolvi instalar versões do navegador Firefox e Java em 32 bits no sistema, mas mantendo as versões originais em 64 bits.
O processo foi feito no Debian Linux 9 Stretch mas deve funcionar perfeitamente na versão Debian 8 Jessie.
Então neste post publico o script que desenvolvi para automatizar o processo.

Primeiramente faça o download do script que o link que se encontra mais abaixo.
Salve o mesmo e renomeie para a extensão “.sh”

mv firefox32on64.txt firefox32on64.sh

Feito isto de a permissão de execução para o mesmo com o comando chmod a+x firefox32on64.txt

chmod a+x firefox32on64.sh

Agora como usuário root execute o script

./firefox32on64.sh

O script vai instalar as dependências necessárias de bibliotecas 32 bits.
Depois vai realizar o download automático da ultima versão do Firefox na versão i686 e salvar na pasta /opt e criar o atalho Firefox 32 no sistema.
O próximo passo é instalar o java na versão 32 bits também. Para o java o download não é automático mas o script lhe fornece o link do site da oracle onde você deve copiar o link do download da versão java Linux e copiar o link de volta no terminal. (veja exemplo na imagem abaixo)

captura-de-tela-de-2016-12-02-22-45-47captura-de-tela-de-2016-12-02-22-49-36

Após a cópia do link do download do java no terminal o mesmo será baixado e instalado automaticamente e o plugin habilitado no navegado 32 bits.

Faça o download do script aqui:
task-firefox32on64.txt

Código:

#!/bin/bash
# edmarcos antonio de souza
# 20161202
# task-java 32 on 64

COLOR_RED="\033[1;31m"
COLOR_YELLOW="\033[1;33m"
COLOR_BLUE="\033[1;34m"
COLOR_LESS="\033[0m"

if [ `id -u` != 0 ] ; then
	clear
	echo -e "${COLOR_RED}Voce deve ser root para prosseguir...${COLOR_LESS}"
	exit 1
fi

dpkg --add-architecture i386
apt-get update

apt-get install curl

apt-get -y install \
libstdc++6:i386 \
libgtk-3-0:i386 \
libdbus-glib-1-2:i386 \
libxt6:i386 \
gnome-themes-standard:i386

OS=linux
LANGUAGE="pt-BR"
URL="https://download.mozilla.org/?product=firefox-latest&amp;os=$OS&amp;lang=$LANGUAGE"
FILE=$(basename `curl -s -I "https://download.mozilla.org/?product=firefox-latest&amp;os=$OS&amp;lang=$LANGUAGE" | grep "^Location:" | awk '{print $2}'`)

wget -c --content-disposition $URL -O "/usr/local/src/`echo $FILE | tr '\r' ' '`"
tar -jxvf "/usr/local/src/`echo $FILE | tr '\r' ' '`" -C /opt
mv /opt/firefox /opt/firefox-i686

echo "[Desktop Entry]
Encoding=UTF-8
Name=Firefox 32 bits
Comment=Browse the World Wide Web
GenericName=Browser 32 bits
Exec=/opt/firefox-i686/firefox-bin
Terminal=false
Type=Application
Icon=/opt/firefox-i686/browser/icons/mozicon128.png
Categories=GNOME;GTK;Network;WebBrowser;
MimeType=application/xhtml+xml;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true" &gt; /usr/share/applications/firefox32.desktop

# java ---------------------------------
FILE="Linux"

clear
echo -e "${COLOR_YELLOW}INSTALANDO JAVA ORACLE${COLOR_LESS}"
echo
echo -e "Acesse o link: ${COLOR_BLUE}http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR${COLOR_LESS}"
echo -e "Selecione o arquivo ${COLOR_YELLOW}$FILE${COLOR_LESS} e copie o link do mesmo com o botão direito do mouse."
echo
echo -e "Obs: Não selecione o arquivo ${COLOR_YELLOW}$FILE RPM${COLOR_LESS} !"
echo    "Cole o link selecionado do download do java neste terminal e pressione &lt;enter&gt;..."
echo
read LINK
echo

wget -c $LINK -O /tmp/java.tar.gz

# descompacta o java -------------------
tar -zxvf /tmp/java.tar.gz -C /opt

# ajustas as permissoes do java --------
chown -R root:root /opt/`tar -ztvf /tmp/java.tar.gz | awk {'print $6'} | cut -d / -f1 | uniq`

cd /opt/ ; ln -sf `tar -ztvf /tmp/java.tar.gz | awk {'print $6'} | cut -d / -f1 | uniq`/ java

ln -sf /opt/java/lib/i386/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2-i586.so