Mostrar mensagens com a etiqueta Linux. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Linux. Mostrar todas as mensagens

sexta-feira, 11 de outubro de 2024

Zoom - Problema com Partilha de Ecrã Preto

O sistema utilizado é debian (12.7) com openbox (3.6.1-10) e o Zoom Workspace (6.2.3).

Ao iniciar uma partilha de ecrã no Zoom a janela/ecrã/etc partilhada fica a preto e não transmite a imagem e no computador o retângulo preto fica por cima da janela/ecrã/etc partilhado inviabilizando a sua utilização.

 


Aparentemente o Zoom necessita de ter instalado no sistema um compositor de imagem [1].

É sugerida a instalação do xcompmgr:

sudo apt install xcompmgr

Configurar e executar:

xcompmgr -c -l0 -t0 -r0 -o.00

 Após o comando é possível ver a imagem na partilha e no ecrã.

 

[1] - Troubleshooting black screen during screen sharing - Zoom Support

quarta-feira, 15 de maio de 2024

Cartão de Cidadão em Linux - 2024

Apesar de ser possível utilizar a Chave Móvel Digital para muitas finalidades, existem algumas situações em que pode ser necessária utilização de um leitor de cartões e do cartão de cidadão físico.

Assim, a utilização do plugin Autenticação.Gov é essencial e pode ser facilmente instalado utilizado em sistemas Linux.

Neste caso será utilizado debian GNU/Linux 64 bits na versão Bookworm - 12.

 

Instalação do Plugin

Deve descarregar-se a última versão do plugin a partir do site do plugin Autenticação.Gov.

A versão utilizada foi para Debian/Ubuntu que descarrega um ficheiro .deb e é possível instalar com:

sudo dpkg -i plugin-autenticacao-gov.deb

Caso falhe é necessário instalar as dependências para trabalhar com leitores de cartões pcsc-tools e a biblioteca para perl para de seguida a instalação decorrer normalmente:

sudo apt install pcsc-tools libpcsc-perl

Caso não seja adicionada uma entrada ao menu é possível arrancar o plugin com o comando:

/usr/bin/java -Dsun.java2d.xrender=false -jar /usr/share/plugin-autenticacao-gov/plugin-autenticacao-gov.jar sj

O ícone deverá aparecer na barra de tarefas e é possível Diagnosticar plugin. Se tudo correr bem deve abrir o browser com o seguinte aspeto:

 

Utilização do plugin Autenticação.Gov no browser

Acedendo ao site Autenticação.Gov é possível iniciar sessão com o cartão de cidadão.

Ao efetuar Iniciar Sessão na janela que abre é possível escolher o Cartão de Cidadão como opção para início de sessão:

De seguida é necessário autorizar o acesso aos dados:

A autenticação é iniciada:

E é pedido o PIN de autenticação (disponível na carta de códigos):

Após a autenticação o login é efetuado no site Autenticação.Gov e é possível ver os dados associados à conta do Cartão de Cidadão e realizar algumas operações:


Problemas com o domínio

Nota prévia: Entretanto este problema já não se deve fazer sentir pois existem mapeamentos públicos dos domínios *.mordomo.gov.pt para 127.0.0.1. Assim, os passos abaixo já não devem ser necessários de efetuar.

Caso apresente algum erro relacionado com a impossibilidade de resolver o nome de domínio *.mordomo.gov.pt pode ser necessário ativar as configurações tal como já indiquei num artigo anterior aqui.

Por causa de uma nova mensagem sobre a criação do ficheiro /etc/hosts com as entradas referidas, estive a investigar mais um pouco e existe a possibilidade de utilizar uma solução mais abrangente.

A solução de editar o ficheiro /etc/hosts implica acesso de administração ao sistema e terá que ser feito em cada posto que utiliza esta solução.

Uma solução mais genérica implica a configuração num serviço de DNS, caso se utilize o DD-WRT, tendo o dnsmasq ativado é possível adicionar as seguintes opções adicionais ao serviço, guardar e aplicar as definições:

address=/mordomo.gov.pt/127.0.0.1

É possível testar se está a funcionar abrindo a consola e executando:

nslookup m1.mordomo.gov.pt
Server:        192.168.1.1
Address:    192.168.1.1#53

Name:    m1.mordomo.gov.pt
Address: 127.0.0.1

Como se pode observar o dnsmasq está a fazer a tradução do domínio para o IP de localhost da máquina que fizer o pedido.

Esta solução fará com que qualquer máquina que utilize o servidor de DNS onde está a correr o dnsmasq consiga utilizar o plugin Autenticação.Gov sem ser necessário editar o seu ficheiro /etc/hosts.

 

segunda-feira, 18 de dezembro de 2023

Encriptar /home/username

O software eCryptfs tem como mote: "The enterprise cryptographic filesystem for Linux" e permite efetuar uma gestão fácil da encriptação de ficheiros/pastas em Linux.

Para tal, o pacote ecryptfs-utils está disponível para instalação na maior parte das distribuições Linux.

É necessário ter todos os processos do utilizador terminados e fazer login com outro utilizador com privilégios sudo/root.

Executar a ferramenta de migração e seguir os passos:

ecryptfs-migrate-home -u username

 

Antes de reiniciar deve efetuar login com o utilizador e verificar se consegue fazer login e aceder aos seus ficheiros.

Caso algo corra mal existe uma cópia do diretório designada de username.Qualquercoisaestranha e que pode ser restaurada.


Se tudo correr bem deve executar-se:

ecryptfs-unwrap-passphrase

Introduzir a passphrase e obtém-se a mount passphrase que deve ser guardada em local seguro pois permite recuperar os dados encriptados caso se esqueça o login da conta.



[1] - ecryptfs - https://www.ecryptfs.org/









sexta-feira, 3 de novembro de 2023

MySQL Workbench - Instalação e Configuração SNAP

Caso se utilize o MySQL Workbench em Linux é possível instalar através de SNAP.

Para instalar snap:

sudo apt install snap

Depois resta instalar os snaps pretendidos. Neste caso:

snap install core

snap install  install mysql-workbench-community

Para permitir acesso do snap do MySQL Workbench a chaves SSH para tunneling de ligações a servidores MySQL por SSH é necessário ligar o plug:

sudo snap connect mysql-workbench-community:ssh-keys

Para ver as ligações existentes nos snaps:

 snap connections --all

Interface                 Plug                                                Slot                            Notes
content                   -                                                   gtk-common-themes:gtk-2-themes  -
content[gnome-42-2204]    mysql-workbench-community:gnome-42-2204             gnome-42-2204:gnome-42-2204     -
content[gtk-3-themes]     mysql-workbench-community:gtk-3-themes              gtk-common-themes:gtk-3-themes  -
content[icon-themes]      mysql-workbench-community:icon-themes               gtk-common-themes:icon-themes   -
content[sound-themes]     mysql-workbench-community:sound-themes              gtk-common-themes:sound-themes  -
cups-control              mysql-workbench-community:cups-control              -                               -
desktop                   mysql-workbench-community:desktop                   :desktop                        -
desktop-legacy            mysql-workbench-community:desktop-legacy            :desktop-legacy                 -
gsettings                 mysql-workbench-community:gsettings                 :gsettings                      -
home                      mysql-workbench-community:home                      :home                           -
network                   mysql-workbench-community:network                   :network                        -
opengl                    mysql-workbench-community:opengl                    :opengl                         -
password-manager-service  mysql-workbench-community:password-manager-service  -                               -
removable-media           mysql-workbench-community:removable-media           -                               -
ssh-keys                  mysql-workbench-community:ssh-keys                  :ssh-keys                       manual
wayland                   mysql-workbench-community:wayland                   :wayland                        -
x11                       mysql-workbench-community:x11                       :x11                            -


Referências

https://snapcraft.io/docs/interface-management

quarta-feira, 11 de outubro de 2023

NVMe | Verificação e Benchmark

Instalar ferramenta nvme:

apt install  nvme-cli

Listar armazenamento nvme no sistema:

nvme list -v


Verificar a ligação (deve obter-se o Address da unidade nvme a partir da lista anterior e substituir):

sudo lspci -vv -nn -s 0000:01:00.0|grep Lnk

(...)
LnkSta:    Speed 16GT/s, Width x4
(...)

 

Referências

[1] - NVMe storage verification and benchmarking - Krzysztof Ciepłucha https://medium.com/@krisiasty/nvme-storage-verification-and-benchmarking-49b026786297

terça-feira, 10 de outubro de 2023

Kobo | KoboCloud - Sincronização de Biblioteca com Nextcloud

KoboCloud

https://github.com/fsantini/KoboCloud

 

Descarregar instalador:

https://github.com/fsantini/KoboCloud/releases/download/latest/KoboRoot.tgz

Copiar KoboRoot.tgz diretamente para a pasta .kobo na raiz do dispositivo (ligado por USB).

Desligar e reiniciar Kobo.

 

Ligar novamente dispositivo ao computador e aceder a .add/kobocloud/

Editar ficheiro kobocloudrc

Acrescentar as linhas de partilha:

# Pasta Partilhada de um servidor Nextcloud:

https://servidornextcloud.pt/linkgeradonoNextcloud


Reiniciar o Kobo para carregar as alterações no ficheiro de configuração.


A pasta partilhada é gerida no computador pelo Calibre, permitindo assim ter a biblioteca bem organizada e com uma gestão centralizada mais fácil, sendo depois sincronizada para o servidor pelo cliente Nextcloud.

O Kobo quando se liga à Internet verifica todos os repositórios nas configurações e vai começando a sincronizar os livros para o dispositivo. Se for uma biblioteca grande pode demorar bastante tempo até a Biblioteca do Kobo importar todos os livros.

quinta-feira, 5 de outubro de 2023

VirtualBox - Linux Guest Aditions

 Testado com host VirtualBox 7.0 e guest Lubuntu 20.04 LTS.

 

Para utilizar o Guest Aditions é necessário instalar kernel modules (cf. https://www.virtualbox.org/manual/ch02.html#externalkernelmodules), no caso do Lubuntu já tem os headers instalados foi apenas necessário instalar GCC e make:

sudo apt install gcc make

De seguida é necessário ir a Devices e Insert Guest Aditions CD... De onde será necessário executar com sudo o instalador para linux:

sudo ./VBoxLinuxAdditions.run

Para aceder a pastas partilhadas do host no guest é necessário adicionar o grupo vboxsf ao utilizador no guest (cf. https://dev.to/rahedmir/virtualbox-cannot-access-shared-folder-items-permission-denied-fixed-59mi):

sudo usermod -a -G vboxsf utilizador

Depois de reiniciar é possível aceder a pastas partilhadas do host.

sábado, 30 de setembro de 2023

Clonezilla - Erro com partição NTFS is scheduled for a check

Ao realizar o clone de uma disco com uma partição NTFS suja o Clonezilla não consegue concluir o processo e apresenta uma mensagem parecida com a seguinte:

NTFS Volume '/dev/sdaX' is scheduled for a check or it was shutdown uncleanly. Please reboot Windows or fix it by fsck.

Abortando o resto do clone ´é possível aceder a uma consola e corrigir os problemas na partição NTFS com:

sudo ntfsfix /dev/sdaX

sudo ntfsfix -d /dev/sdaX

Depois resta iniciar o clonezilla novamente com:

ocs-live

E repetir o processo de criação do clone.

 


terça-feira, 29 de agosto de 2023

Testar Velocidade do Armazenamento

Escrita | Testar a velocidade de escrita

dd bs=128k count=100k if=/dev/zero of=test conv=fdatasync

Exemplo num array RAID1 com 2x M.2 NVMe 1TB
102400+0 records in
102400+0 records out
13421772800 bytes (13 GB, 12 GiB) copied, 7.80817 s, 1.7 GB/s

Exemplo num array RAID1 com 2x SATA6G HDD 1TB
10240+0 records in
10240+0 records out
1342177280 bytes (1.3 GB, 1.2 GiB) copied, 14.8238 s, 90.5 MB/s
 

Leitura | Testar a velocidade de leitura

hdparm -Ttv /dev/mapper/vg1-lv_root

/dev/mapper/vg1-lv_root:
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 0/0/0, sectors = 1950203904, start = 0
 Timing cached reads:   36902 MB in  2.00 seconds = 18478.49 MB/sec
 Timing buffered disk reads: 10242 MB in  3.00 seconds = 3413.64 MB/sec


Referências

[1] Which benchmark utilities are recommended for testing NVMe transfer performance in a Linux Environment?

sexta-feira, 4 de agosto de 2023

Som em Debian GNU/Linux

Com o alsamixer é possível definir som nas colunas e headphones:


Front e Headphones podem estar ambos ativados (sem Mute tecla 'M').

No caso de ser um sistema surround é possível definir também os restantes canais.

Existe ainda o pavucontrol que permite fazer o controlo de volume com interface gráfica através do pulseaudio mas sem possibilidade de ativar ambos os dispositivos.

É possível ver e controlar o volume de som dos vários programas:

amixer (cli)

Listar faders default:

amixer

Listar faders da placa 0:

amixer --card 0

Definir volume dos headphones da placa 0 para 80:

amixer --card 0 sset 'Headphone' 80

 

 

quinta-feira, 20 de outubro de 2022

Android - Gestão APK com ADB

Android - Ativar modo de Programador to Settings

Para ativar o modo de Programador é necessário:

Definições > Sobre o Dispositivo

Clicar 7 vezes consecutivas no número da compilação para ativar o modo de Programador


Android - Ativar depuração USB

Para ativar a depuração por USB é necessário:

Definições > Opções do programador

Ativar a depuração por USB


ADB - Instalação

É possível instalar o adb a partir dos repositórios:

sudo apt install adb


ADB - Utilização

Para iniciar o servidor adb:

adb start-server


Ligar o dispositivo android com a opção de depuração USB ativa por USB ao computador.

No android é apresentada mensagem para confirmar que se confia na ligação adb.

Listar pacotes instalados no dispositivo

adb shell pm list packages

É necessário procurar o nome do pacote. Na play store o URL da aplicação tem o nome do pacote.

Obter Path de um pacote

adb shell pm path nome_do_pacote

Extrair pacote para APK

adb pull data/app/nome_do_pacote_na_path/base.apk /caminho/nome.apk

Instalar APK no dispositivo

adb install -r /caminho/nome.apk  




Referências

https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device

https://www.vrtourviewer.com/docs/adb/

sábado, 4 de dezembro de 2021

Instalação de cliente VPN com SNX - Debian

Instalação do cliente SSL Network Extender para ligação à VPN da Universidade de Aveiro.


Instalar o software cliente

Descarregar o instalador a partir do site
https://www.ua.pt/pt/stic/teletrabalho_vpn

Extrair do zip e instalar segundo as instruções.


Verificar bibliotecas em falta

sudo ldd /usr/bin/snx

    linux-gate.so.1 (0xf7f7e000)
    libX11.so.6 => not found
    libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f30000)
    libresolv.so.2 => /lib32/libresolv.so.2 (0xf7f10000)
    libdl.so.2 => /lib32/libdl.so.2 (0xf7f08000)
    libpam.so.0 => not found
    libnsl.so.1 => /lib32/libnsl.so.1 (0xf7ee8000)
    libstdc++.so.5 => not found
    libc.so.6 => /lib32/libc.so.6 (0xf7cf8000)
    /lib/ld-linux.so.2 (0xf7f80000)


É sugerido instalar os seguintes pacotes:

apt install libstdc++5:i386 libpam0g:i386 libx11-6:i386

Como são pacotes para a arquitetura i386, no caso de dar erro é necessário adicionar a arquitetura e atualizar a cache de pacotes:

dpkg --add-architecture i386

apt update

De seguida já será possível instalar as dependências sem erros:
apt install libstdc++5:i386 libpam0g:i386 libx11-6:i386


Utilizar o cliente snx

Iniciar sessão na VPN

snx -s go.ua.pt -u user@ua.pt


Terminar sessão na VPN

snx -d

sábado, 12 de dezembro de 2020

Dança das Cadeiras - Script

O jogo da Dança das Cadeiras é necessário que a música páre aleatoriamente para que os jogadores possam disputar as cadeiras livres.

Uma forma simples de se alcançar isso com o audacious é colocar a reproduzir uma música e utilizar o comando sleep para esperar aleatoriamente e depois pausar a reprodução com a ferramenta audtool:

sleep $((15 + RANDOM % 30)) && audtool --playback-pause

 

Para se repetir rapidamente na consola sem ser necessário iniciar a reprodução novamente no audacious é possível utilizar o seguinte:

audtool --playback-pause && sleep $((15 + RANDOM % 30)) && audtool --playback-pause


sábado, 20 de junho de 2020

Google Drive File Stream - Linux

Não havendo aplicação nativa para Linux do Google Drive File Stream a comunidade cria e partilha as suas soluções: google-drive-ocamlfuse.

Instalação

Na documentação existem diversas opções para a instalação. Neste caso utilizei as instruções para Debian Stretch.

Instalação de dependências

apt install software-properties-common dir

Adicionar repositório

Criar um ficheiro para o repositório apt:
nano /etc/apt/sources.list.d/google-drive-ocamlfuse.list

Acrescentar ao ficheiro:
deb http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu xenial main

Adicionar a chave do servidor ao apt:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AD5F235DF639B041

Instalar

Atualizar a lista de pacotes:
apt update

Instalar o pacote:
apt install google-drive-ocamlfuse

Utilização

Primeira Utilização

Na primeira utilização será configurado o acesso ao Google Drive. Assim, deve executar-se o programa sem qualquer argumento:
google-drive-ocamlfuse

O comando cria uma estrutura de pastas de configuração em ~/.gdfuse/default que contém o ficheiro de configuração config.

De seguida abre o browser e pede para iniciar sessão com a conta Google que dará acesso ao Drive correspondente. Após iniciar-se sessão parece que o processo fica parado e pode demorar algum tempo até a linha de comandos indicar que configurou tudo com sucesso e sair do programa voltando à shell normal.

Pastas

Antes de se começar a utilizar convém criar um diretório que será o ponto de montagem dos ficheiros Google Drive.
Assim, pode criar-se:
mkdir ~/DRIVE

Caso se pretenda ter utilizadores ou drives diferentes podem criar-se diferentes diretórios para cada um desses fins. Como previa essa utilização criei uma pasta para a drive pessoal:
mkdir ~/DRIVE/Drive

Montar Google Drive

Para se aceder aos ficheiros é necessário executar o comando:
google-drive-ocamlfuse ~/DRIVE/Drive

A partir deste momento na pasta ~/DRIVE/Drive estarão os ficheiros e pastas tal e qual como no Google Drive e é possível abrir, editar, copiar, colar, mover, etc.

Desmontar Google Drive

Caso se pretenda terminar a utilização é possível desmontar com o comando:
fusermount -u ~/DRIVE/Drive

Utilização de Outras Contas e Team Drives

No caso de ser necessário utilizar outras contas é possível utilizar o parâmetro -label para definir outras credenciais de acesso ou utilizar uma Team Drive.
google-drive-ocamlfuse -l myTeamDrive

Será iniciado o processo de autorização que deve ser feito com a conta Google que terá acesso à Team Drive e aguardar que termine.
Quando terminar é necessário saber o team_drive_id da Team Drive

Team Drive ID

Para saber qual o team drive ID é necessário aceder à Team Drive através do browser e observar o URL e copiar a última parte:
https://drive.google.com/drive/u/1/folders/0XS2-_aJgHL29KfOVHAS22

De seguida é necessário abrir o ficheiro de configuração: ~/.gdfuse/myTeamDrive/config

Procurar a chave no final do ficheiro e colocar o ID:
team_drive_id=0XS2-_aJgHL29KfOVHAS22

Guardar o ficheiro e fechar.

Criar Pasta

Deve criar-se a pasta para a Team Driv:
mkdir ~/DRIVE/Team

Montar Team Drive

Para montar a Team Drive é necessário executar o comando com a label e o diretório correspondente:
google-drive-ocamlfuse -label myTeamDrive ~/DRIVE/Team

Desmontar Google Drive

Caso se pretenda terminar a utilização é possível desmontar com o comando:
fusermount -u ~/DRIVE/Team


Referências e Recursos

quarta-feira, 22 de janeiro de 2020

Clonezilla - Clonar HDD para SSD mais pequeno

Gparted ou Windows Disk Management

Reduzir o tamanho das partições até ficar com espaço não alocado no final do disco. O tamanho total das partições deverá ser inferior à capacidade do SSD.


Clonezilla - Expert

device-device
-g
-icds


-k (a tabela de partições foi criada manualmente pelo layout do disco de origem setor de início, setor de fim e tipo de partição)


Nota: Ao clonar uma imagem maior para um disco mais pequeno que tenha a tabela de partições semelhante é possível utilizar as opções -g e -icds e utilizar a tabela de partições do disco de destino -k.

Referências:


domingo, 10 de novembro de 2019

Recuperar ficheiros apgados num RAID com LVM

Neste caso foi utilizada uma máquinacom 2 discos de 1TBem RAID por mdadm e LVM.


- /dev/sdb e /dev/sdc - Espelhados em RAID 1 com mdadm
- /dev/md0 - Com LVM
- /dev/vg0/swap e /dev/vg0/data


- /dev/vg0/data é montado como /home

Para recuperar ficheiros apagados em /home é necessário iniciar o sistema sem montar /home.

Uma das formas é arrancar um sistema live (por exemplo, USB) e ligar um outro disco para guardar as recuperações.

Ativar RAID
- Confirmar se RAID não está montado:
cat /proc/mdstat

- Ativar RAID
mdadm --assemble --scan





- Confirmar se LVM está ativo
lvscan

- Ativar LVM com
vgchange -ay

- Depois é necessário montar a partição como readonly e com a opção noload para evitar escritas
mount -o ro,noload /dev/vg0/data /mnt/data


- Finalmente é possível utilizar o photorec para procurar e recuperar os ficheiros pretendidos.

Cartão de Cidadão em Linux

 

Atenção: Está disponível uma nova versão mais atualizada aqui.


Após diversas tentativas foi possível colocar o leitor de cartões do cartão de cidadão a funcionar em Debian GNU/Linux - buster 64bits.


1. Descarregar plugin do site: https://autenticacao.gov.pt/fa/ajuda/autenticacaogovpt.aspx

É possível descarregar o plugin para Debian/Ubuntu e fazer a sua instalação manual:
dpkg -i plugin-autenticacao-gov.deb

Um dos problemas estava em arrancar o plugin utilizando o OpenBox... Acedendo ao conteúdo do .deb é possível obter o ficheiro .desktop que contém a informação de arranque:
[Desktop Entry]
Version=1.0
Name=plugin Autenticação.Gov
GenericName=plugin Autenticação.Gov
GenericName[pt]=plugin Autenticação.Gov
Comment=Autenticação com o Cartão de Cidadão
Exec=/usr/bin/java -Dsun.java2d.xrender=false -jar /usr/share/plugin-autenticacao-gov/plugin-autenticacao-gov.jar sj
Icon=plugin-autenticacao-gov
Terminal=false
Type=Application
Categories=Utility


Assim, resta arrancar o plugin:
/usr/bin/java -Dsun.java2d.xrender=false -jar /usr/share/plugin-autenticacao-gov/plugin-autenticacao-gov.jar sj

O ícone aparece na barra de tarefas do tint2 e a opção Diagnosticar Plugin abre uma página indecifrável com uma impossibilidade qualquer relativa ao DNS e a um *.mordomo...

Alguma pesquisa e um comentário no PPLware indica a razão da questão:
«N'uno 7 de Dezembro de 2017 às 13:21
Continuas a depender de uma aplicação que faz o mesmo que as applets java faziam mas usa uma comunicação com o browser incompatível com alguns routers. No meu caso, num ambiente linux ligado a um router com DD-WRT, esta aplicação batia sempre na impossibilidade de resolver nomes para o IP do localhost. O serviço de DNS do DD-WRT não permite tal coisa, logo não funcionava. Contactei o suporte deles e a solução foi mesmo martelar os múltiplos nomes que eles usam com o 127.0.0.1 no ficheiro de hosts…»


Assim, deve editar-se o /etc/hosts para conter:
127.0.0.1 m1.mordomo.gov.pt
127.0.0.1 m2.mordomo.gov.pt
127.0.0.1 m3.mordomo.gov.pt
127.0.0.1 m4.mordomo.gov.pt
127.0.0.1 m5.mordomo.gov.pt
127.0.0.1 m6.mordomo.gov.pt
127.0.0.1 m7.mordomo.gov.pt
127.0.0.1 m8.mordomo.gov.pt
127.0.0.1 m9.mordomo.gov.pt
127.0.0.1 m10.mordomo.gov.pt
127.0.0.1 m11.mordomo.gov.pt
127.0.0.1 m12.mordomo.gov.pt
127.0.0.1 m13.mordomo.gov.pt
127.0.0.1 m14.mordomo.gov.pt
127.0.0.1 m15.mordomo.gov.pt
127.0.0.1 m16.mordomo.gov.pt
127.0.0.1 m17.mordomo.gov.pt
127.0.0.1 m18.mordomo.gov.pt
127.0.0.1 m19.mordomo.gov.pt
127.0.0.1 m20.mordomo.gov.pt


Ao que parece o leitor de cartões anuncia-se como webserver com um domínio *.mordomo.gov.pt e o router não permite essa alteração.

Situação resolvida, é possível utilizar o cartão de cidadão com o leitor para realizar as operações, correu tudo bem com o Opera, resta testar com outros browsers.


terça-feira, 19 de março de 2019

RAID 1 - substituir drive com mdadm

Apesar de o array não ter qualquer problema o SMART do disco indica problemas. A troca do disco é aconselhada.

Verificar o array

Para ver o estado do array:
cat /proc/mdstat

md0 : active raid1 sdb1[0] sdc1[1]
      976629760 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

Para ver os detalhes do array:
mdadm --detail /dev/md0
 /dev/md0:
        Version : 1.2
  Creation Time : Sat Jan 21 17:33:16 2017
     Raid Level : raid1
     Array Size : 976629760 (931.39 GiB 1000.07 GB)
  Used Dev Size : 976629760 (931.39 GiB 1000.07 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Mar 19 08:48:42 2019
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : data:0  (local to host hostname)
           UUID : f047a10d:ae9c8424:c469fb59:5f6773bd
         Events : 13799

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1



Verificar erros nos discos

É possível os discos com a ferramenta  smartctl, fazendo o teste curto (cerca de 2 minutos) ou o teste longo (mais demorado):
smartctl -t short /dev/sdb
smartctl -t long /dev/sdb

Assim, apesar de o array indicar que está tudo bem, um dos disco apresenta erros nos testes SMART.
smartctl -a /dev/sdb(...)
=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Green
Device Model:     WDC WD10EARX-00N0YB0
Serial Number:    WD-WMC0T0383723

(...)
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     33281         296
# 2  Short offline       Completed: read failure       90%     33281         296
(...)

Substituir disco do array

Para substituir o disco é necessário provocar uma falha no disco:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

cat /proc/mdstat
md0 : active raid1 sdb1[0](F) sdc1[1]      976629760 blocks super 1.2 [2/1] [_U]
      bitmap: 3/8 pages [12KB], 65536KB chunk


Depois é necessário remover o disco do array:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

Agora é necessário:
  1. desligar a máquina;
  2. retirar o disco em falha (é possível ver o serial number com o smartctl -a para remover o disco correto);
  3. colocar o novo disco;
  4. ligar a máquina.

Como o novo disco está vazio é necessário clonar a tabela de partições do disco bom do array para o novo:


sfdisk -d /dev/sdc | sfdisk /dev/sdb
Checking that no-one is using this disk right now ... OK

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0xd6ec1f12.
/dev/sdb1: Created a new partition 1 of type 'Linux raid autodetect' and of size 931.5 GiB.
/dev/sdb2: Done.

New situation:

Device     Boot Start        End    Sectors   Size Id Type
/dev/sdb1        2048 1953523711 1953521664 931.5G fd Linux raid autodetect
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


Após esta operação pode adicionar-se o novo disco ao array:

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

O array inicia o processo de espelho do disco bom para o novo.

Como o processo é demorado, pode ser acompanhado com:
watch cat /proc/mdstat
md0 : active raid1 sdb1[2] sdc1[1]
      976629760 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  1.0% (10220864/976629760) finish=122.3min speed=131660K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk



Referências:


[1] - Replacing a Failed Mirror Disk in a Software RAID Array (mdadm) - https://www.thegeekdiary.com/replacing-a-failed-mirror-disk-in-a-software-raid-array-mdadm/

[2] - mdadm cheat sheet - http://www.ducea.com/2009/03/08/mdadm-cheat-sheet/

quinta-feira, 31 de maio de 2018

Regras iptables - webserver SYN flood

Algumas regras para o iptables proteger um webserver contra alguns ataques. Por exemplo, o ataque SYN flood [0].

Descartar os pacotes SYN que não são recebidos:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Descartar pacotes com fragmentos:
iptables -A INPUT -f -j DROP

Descartar pacotes mal criados XMAS:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Descartar pacotes nulos:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

Bloquear um IP externo de aceder ao servidor:
iptables -A INPUT -s IP-ADDRESS -j DROP

Bloquear um IP externo de aceder a uma porta do servidor:
iptables -A INPUT -s IP-ADDRESS -p tcp --destination-port 80 -j DROP


[0] - https://en.wikipedia.org/wiki/SYN_flood

[1] - https://www.cyberciti.biz/tips/linux-iptables-10-how-to-block-common-attack.html

[2] - https://www.cyberciti.biz/faq/how-do-i-block-an-ip-on-my-linux-server/

quarta-feira, 26 de julho de 2017

owncloud upgrade para ubuntu 16.04

O setup inicial era este:
- ubuntu 14.04.5 LTS
- owncloud 8.1.9.2

Após o upgrade para ubuntu 16.04 pretendia também atualizar o owncloud. Contudo no repositório a última versão era a 9... E não é possível fazer upgrades de vários major.

Assim, é necessário ir fazendo o upgrade entre as diversas versão major:
https://owncloud.org/changelog/#latest8.0

Neste caso
- 8.1.9.2 » 8.1.11
- 8.1.11 » 8.2.11
- 8.2.11 » 9.0.10
- 9.0.10 » 9.1.6

Fazer backup da instalação anterior
cd /var/www
mv owncloud owncloud_8.1.9

Obter última versão e extrair
tar xjvf owncloud-8.1.11.tar.bz2

Copiar configuração da versão anterior (neste caso não é necessária a pasta data porque na configuração está definida noutro local e não dentro da pasta owncloud)
cp owncloud_8.1.9.2/config/config.php owncloud/config/config.php

chown www-data:www-data -R owncloud

Executar o upgrade
cd /var/www/owncloud
sudo -u www-data ./occ upgrade

Repetir os passos para cada uma das versões.

Configurar repositórios

wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.key
apt-key add - < Release.key
Run the following shell commands as root to add the repository and install from there.

sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud.list"
apt-get update
apt-get upgrade