Adicionar utilizador no MySQL

Nas últimas versões do MySQL, por questões de segurança, já não é possível adicionar utilizadores diretamente na tabela user na base de dados mysql.

Agora é necessário usar comandos para isso. Eis os comandos mais simples para permitir o acesso de novos utilizadores a uma base de dados:

CREATE USER IF NOT EXISTS 'root'@'ip_da_máquina' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_da_máquina';
FLUSH PRIVILEGES;

Xfce pendura

O Xfce começou a pendurar, deixava de responder ao rato e teclado, e a minha primeira reação foi passar a trabalhar apenas em consola.

Hoje, pendurou outra vez, e não me apeteceu deitar a máquina abaixo (porque nunca o conseguia fazer voltar a responder), e fui à procura do problema.

O problema era que o Xfce lançava um screensaver inexistente, que, por ser inexistente, não tinha interface para perceber que o rato mexia, ou que o teclado tinha sido atuado.

Descobri que o problema era o screensaver no ficheiro de logs: ~/.xsession-errors.

Numa janela de consola remota, com o comando ps aux |grep xfce, encontrei o screensaver e matei-o:

ps aux |grep xfce
root      6778  0.0  0.0 188648 24396 ?        Sl   06:51   0:00 /usr/bin/xfce4-screensaver
kill 6778

Depois desativei o screensaver, para não arrancar mais, no menu:
Applications – Settings – xfce4-screensaver.

Mais tarde, uns tempos depois, selecionei um screensaver disponível, e deixei de ter problemas.

ISO num dispositivo USB

Eis o comando para coloca rum ficheiro ISO num dispositivo USB, por exemplo uma pendrive para arrancar com um sistema operativo qualquer:

dd bs=4M if=ubuntu-20.04-desktop-amd64.iso of=/dev/sde

Precisei disto apra arrancar com o Ubuntu – esse sistema famigerado – e tentar repôr o grub, após uma instalação nova. Coisas que nunca me aconteceram com o Slackware.

Let’s Encrypt

Eis como usar o Let’s Encrypt no Slackware!

==========================================
DEHYDRATED – configuração
==========================================

# Local dos ficheiros de configuração
/etc/dehydrated/

# Configuração base – não alterar
/etc/dehydrated/config

# Indicar quais os domínios em SSL. Alias na mesma linha. Domínios diferentes em linhas separadas.
/etc/dehydrated/domains.txt

Exemplo:
dominio.pt    www.dominio.pt
exemplo.pt

==========================================
WELLKNOWN
==========================================

######## ATENÇÃO ########
#
# a configuração seguinte tem que ser feita em http, mas pode ser redirecionada para https

# Criar um ficheiro com o nome abaixo, e colocar lá uma linha vazia
vi /var/www/dehydrated/m4g1C-t0k3n

# No ficheiro /etc/httpd/httpd.conf colocar as linhas abaixo, na zona das parametrização de diretorias
# Colocar também no /etc/httpd/extra/httpd-ssl.conf
# e eventualmente nos VHosts todos: /etc/httpd/extra/httpd-vhosts.conf

#
# Configuracao para o dehydrated
# ver: https://github.com/dehydrated-io/dehydrated/blob/master/docs/wellknown.md
Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated>
Options None
AllowOverride None

<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
# Fim do dehydrated
#

# Reiniciar o apache
apachectl restart

# Neste momento, o endereço seguinte tem que existir e mostrar uma página em branco:
http://DOMINIO/.well-known/acme-challenge/m4g1C-t0k3n

==========================================
Criar os certificados
==========================================

# É necessário aceitar os termos de utilização, uma única vez:
dehydrated –register –accept-terms

# Depois, criar os certificados
dehydrated -c

==========================================
Redirecionar http para https
==========================================

# Os redirecionamentos de http para https, por cada domínio https, têm que ser feitos da forma seguinte, para manter o URL no redirecionamento:
# Isto é para colocar nos VHosts de http (/etc/httpd/extra/httpd-vhosts.conf)
######## ATENÇÃO ########
# Isto só pode ser feito depois de criar os certificados, por causa do acesso ao ficheiro “m4g1C-t0k3n” em http

# As linhas seguintes foram retiradas de:
# “Redirect from http to https in apache showing original url with arguments”
# https://stackoverflow.com/questions/27824676/redirect-from-http-to-https-in-apache-showing-original-url-with-arguments
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

==========================================
Configurar o Apache
==========================================

SSLCertificateFile “/etc/dehydrated/certs/DOMINIO/cert.pem”
SSLCertificateKeyFile “/etc/dehydrated/certs/DOMINIO/privkey.pem”
SSLCertificateChainFile “/etc/dehydrated/certs/DOMINIO/chain.pem”

# Reiniciar o apache
apachectl restart

==========================================
Renovação dos certificados
==========================================

Devia ser automático, mas ainda não sei como fazer isso.
Quando os certificados expiram, ou uns dias antes de expirarem, na maior parte das vezes, basta executar os comandos seguintes:

dehydrated -c
apachectl restart

Se der o erro seguinte, é necessário executar os passos abaixo.

ERROR: Challenge is invalid! (returned: invalid) (result: [“type”] “http-01”

Os passos são:
– No ficheiro /etc/httpd/extra/httpd-vhosts.conf, criar a variável seguro: Define seguro true e no final do ficheiro, eliminá-la: UnDefine seguro
– Envolver as linhas do RewriteEngine com um If:

<If "'${seguro}' == 'true'">
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
</If>

Temporariamente, fazer Define seguro false, reiniciar o Apache e correr o comando

dehydrated -c

Depois, voltar a colocar Define seguro true, e reiniciar o Apache.

Mais sobre o vi

No artigo Cores no vi, indico que, para remover as cores, basta criar ou editar o ficheiro de configuração do vi ~/.vimrc, colocar a linha syntax off.

Mas há mais funcionalidades que podem ter que ser alteradas, a partir desse ficheiro de configuração.

Nas novas instalações do Slackware, podemos escolher entre duas versões que suportam UTF-8: o nvi (BSD) e o vim (improved).

Com o nvi, já tive problemas ao usar as setas do cursor, em modo de edição. Por outro lado, o vim tem uns modos estranhos, relacionados com o rato, que não me servem (Visual, Insert, etc.). Apesar de tudo, prefiro o vim, pois nunca me causou problemas com o uso das setas do cursor.

Por omissão, o vim tem o rato no modo a, que não tem, entre outras coisas, a possibilidade de fazer copy+paste com o rato, da mesma forma que o faço em linha de comando, não permitindo que eu copie texto de uma janela de consola para outra.

Para obter este funcionamento, com o vim, é necessário colocar no ficheiro ~/.vimrc uma linha adicional: set mouse=r.

Nota: para ligar o vi ao vim, ou ao nvi usar um dos comandos seguintes

ln -sf /usr/bin/vim /usr/bin/vi
ln -sf /usr/bin/nvi /usr/bin/vi

Instalação incoerente

Uma das minhas máquinas estava com um comportamento estranho, desde a última atualização. Detetei dois problemas, mas, provavelmente, haveria mais:

  • O relógio estava extremamente lento: cada segundo demorava 25 segundos
  • O servidor de imap recusava ligações

Para testar o servidor de imap, usei o comando seguinte, na própria máquina (ver Testing the IMAP Server):

telnet localhost imap

Na resposta, a máquina disse que não encontrava a biblioteca libcrypto.so.1.
Pesquisei noutra máquina e vi que este nome é um link simbólico para libcrypto.so.1.0.0.
Criei o link à mão e o telnet passou a queixar-se de outra biblioteca.

Decidi, então, reparar a instalação. Para isso, usei o comando:

slackpkg reinstall slackware64

que reinstala todos os pacotes que estão atualmente na máquina.

Samba e passwords

Isto já me aconteceu várias vezes. No total, já perdi talvez uma dúzia de horas até descobrir a solução.

Instalo o Samba numa máquina Linux nova, e depois, quando tento aceder a partir do Windows, ele pede-me autenticação.

O que é que está errado?

De todas as vezes, o que me esqueci foi de vriar uma password na máquina Linuxa para o utilizador do Samba:

smbpasswd -a

Apagar o último caráter de cada linha, no editor vi

Como edito muitos ficheiros de Linux, via Samba, no Notepad, tenho muito código em Linux com linhas a terminar com CRLF, em vez de apenas LF, como é normal no Linux.

Entretanto, a nova versão do vi (nvi) usada pelo Slackware, passou a mostrar esses carateres, que antes estavam escondidos. Agora vejo um ^M no fim de cada linha dos ficheiros editados no Notepad.

Para remover esse caráter, ao longo de todo o ficheiro, pode usar-se o seguinte comando, no vi:

:%s/.$//

vtown e xfce

Atualizei as máquinas para a nova versão --current do Slackware.
Neste momento, o ambiente gráfico deixou de ser o kde, e passou a ser o vtown com xfce.
Quando arranquei com as máquinas, não tinha ambiente gráfico.

Em consola, corri startx e recebi um ecrã com erros.
Corri, então xwmconfig e escolhi a opção xinitrc.xfce.
Corri novamente startx e o ambiente gráfico arrancou!

Som no Ubuntu

Sempre que arranco com o Ubuntu, não tenho som. Nem sequer tenho dispositivo de audio.
Encontrei, na net@, algumas “soluções”. Como sempre, no que toca ao Ubuntu, há publicações com todo o tipo de disparates.

Desta vez usei esta solução e funcionou. O dispositivo apareceu na lista e já deu para configurar.

pulseaudio -D --system

O parâmetro --system é necessário porque eu trabalho sempre como root, o que no Ubuntu é considerado uma anormalidade.