crear usuario e base de datos no postresql
05-03-2024
Sempre teño que consultalo, así que queda por aquí:
sudo su postgres - psql CREATE USER my_username WITH ENCRYPTED PASSWORD '1234'; CREATE DATABASE new_database OWNER my_username;
Sempre teño que consultalo, así que queda por aquí:
sudo su postgres - psql CREATE USER my_username WITH ENCRYPTED PASSWORD '1234'; CREATE DATABASE new_database OWNER my_username;
O umask por defecto en Debian é 0022 o que nos crea arquivos cos permisos 644 e facíame falta que por defecto o grupo tamén tivera permisos de escritura e que esto se aplicara en todos os usuarios.
Pódese configurar en PAM, para elo, agrega a seguinte liña a /etc/pam.d/common-session:
session optional pam_umask.so umask=0002
Hai un problema cos usuarios que teñen unha Bourne Shell (sh, bash, khs, ash...)e é que esta reescribe o umask que lle chega de PAM co do profile, así que configurámolo no /etc/profile ou agregando un arquivo ós incluidos:
cat > /etc/profile.d/change_umask.sh << EOF # Change default umask from 0022 to 0002 # changing permissions from 644 to 664 umask 0002 EOF
Así xa nos queda a mesma umask para todos os usuarios :D
O demonio do Docker non rota os logs por defecto. É moi típico que agote todo o espacio en disco.
Pódese configurar o driver dos logs no arquivo /etc/docker/daemon.json para que faiga a rotación. Unha configuración que uso normalmente é esta:
{ "log-driver": "json-file", "log-opts": { "max-file": "3", "max-size": "10m" } }
Así, gardará o log ata un máximo de 10 megas de almacenamento e irá gardando ata 3 arquivos.
NOTA: A ter en conta que solo «collerán» a configuración os contenedores novos.
Antes, para solventar este erro facía a ñapa de poñer en /etc/init.d/asterisk esta liña xusto despóis do shebang:
ulimit -n 2048
Ahora; a maneira é, no /etc/asterisk/asterisk.conf agregar a seguinte liña no contexto «options»:
[options] maxfiles = 999999
Logo é necesario reiniciar o proceso do Asterisk:
host*CLI> core restart now
Así, xa podemos comprobar que o proceso ten o novo límite:
$ cat /proc/`pidof asterisk`/limits | grep "Max open files" Max open files 999999 999999 files
En lugar de publicar na internet o acceso web ó Proxmox que teño no meu «homelab» o que decidín facer (mira que podía usar unha VPN, pero sonche así) foi usar un tunnel SSH.
Así que me creei un pequeno script de bash que teño en ~/bin/proxmox-homelab e que contén o seguinte:
#!/bin/bash # kill ssh tunel si estaba en execución pid=$(ps aux | grep '\-L8006:192\.168\.99\.3:8006' | awk '{print $2}') kill -9 $pid > /dev/null 2>&1 # tunel ssh ssh -fNT -i ~/.ssh/nas -L8006:192.168.99.3:8006 bob@foo.tr4ck.net # Proxmox web UI xdg-open https://localhost:8006
Desta maneira, cando me fai falta, executo «proxmox-homelab» e xa teño acceso á GUI.
Teño un macbook pro de principios do 2011, un core2duo con 4Gb de RAM que non da para moito, pero para poñer música e tal ben chega... A historia é que se lle jodeu a tecla 'Enter' o que me obligaba a usar un teclado externo pero gracias á ferramenta xmodmap puiden remapear o 'Shift dereito' para que funcione como o 'Enter'.
A maneira de facelo é volcando a configuración actual a un arquivo no home do usuario:
xmodmap -pke > .xmodmap
E logo editando o ~/.xmodmap intercambiando esas dúas teclas. Este sería un diff cos cambios:
29c29 < keycode 36 = Return NoSymbol Return --- > keycode 36 = Shift_R NoSymbol Shift_R 55c55 < keycode 62 = Shift_R NoSymbol Shift_R --- > keycode 62 = Return NoSymbol Return
Por último crease o arquivo .xinitrc no home do usuario co seguinte contido:
xmodmap .xmodmap
Dándolle permisos de execución:
chmod 755 ~/.xinitrc
NOTA: Así como post-data, a configuración indicada arriba sería para un GNU/Linux pero eu fíxeno en un OpenBSD cos seguintes cambios:
Recientemente descubrín que a web Low Tech Magazine usa unha técnica nas súas imaxes chamada "dithering" que consiste en pasar a imaxen a escala de grises obtidos pola densidade de píxeles. Esto o que permite é ter unha imaxen en B/N lexible que pesa pouquiño.
Por exemplo:
A maneira de facelo no GIMP é a seguinte: Primeiro instalar o módulo:
sudo pacman -S gimp-plugin-gmic
Logo no propio GIMP ir a Filtros -> G'MIC-Qt e abrirase un menú con tódolos filtros que ten ese módulo. Ahí buscar "Dithering" e o da opción "Black & White" vai ser o máis parecido ó dithering de Floyd–Steinberg
Logo xa, para o meu gusto, selecciono a cor blanca e bórroa de maneira que queda unha imaxen co "fondo" transparente.
Outra maneira é usar o comando "convert" que é parte de ImageMagick. Así con este comando obtemos o mesmo resultado que co GIMP:
convert orixinal.jpg -dither FloydSteinberg -remap pattern:gray50 salida.gif
Tamén se consiguen bos resultados con un dither ordenado, así:
convert orixinal.jpg -colorspace gray -ordered-dither o8x8 salida2.gif
A historia é recibir alertas no email si hai un fallo de SMART en un dos discos do nas da casa. O cal é básicamente un Debian con dous discos duros en espello.
O primeiro é instalar as ferramentas:
apt-get install smartmontools
Logo, non está de máis comprobar si teñen SMART, normalmente así é:
smartctl -i /dev/sda
A configuración está en /etc/smartd.conf. Por exemplo, as seguintes liñas establecen un escaneo corto tódolos días ás 2am e un largo o sábado ás 3am, avisando por email si detectaron algún fallo:
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m alert@tr4ck.net /dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m alert@tr4ck.net
Por último non queda máis que activar o demonio no @#~⅛£ systemd:
systemctl enable|disable smartmontools /etc/init.d/smartmontools start|stop
I esto é todo. Aínda está por confirmar que de verdade funciona pero espero que non me teña que chegar ningunha alerta... :D
O obxectivo é acceder a un porto de unha máquina de maneira remota sin ter acceso ssh a esa máquina, nin posibilidade de NAT.
Desde a máquina remota (mk-remota) executamos un ssh co parámetro -R que tuneliza un porto remoto a un local, conectándonos a un servidor intermedio (srv-intermedio) ó que poidamos facer ssh, claro...
ssh -R 9980:localhost:80 user@srv-intermedio
Esto abrira o porto 9980 en srv-intermedio e estará "tunelizado" hacia o porto 80 de mk-remota.
Desta maneira conectámonos por ssh desde o noso equipo ó srv-intermedio co parámentro -L que "tunelizará" un porto local do srv-intermedio ó noso equipo:
ssh -L 3380:localhost:9980 user@srv-intermedio
Así si accedemos no noso equipo a localhost:3380 a petición irá a srv-intermedio:9980 que a levará a mk-remota:80. Accedendo a un porto sin ter que facer nat e sin ter acceso ssh en mk-remota.
ProFTPd enxaula en un chroot os usuarios, polo tanto non poden seguir os symlinks que salen del. A maneira de solucionar esto é facer un "binding mount", así o directorio parecerá dentro do chroot permitíndolle ó usuario acceder.
Podese facer executando o comando directamente:
mount -o bind /orixen /destino
Ou tamén engadindoo o /etc/fstab para facelo permanente, usando a seguinte liña:
/orixen /destino none defaults,bind 0 0
Para axudar a facer que a web sexa menos hostil para o usuario atopeime con un par de recursos que fan que o rastreo sexa menor ou polo menos non por parte de unha megacorp.
Así por un lado temos https://matomo.org/ que é unha especie de Analytics que podemos aloxar on-premise evitando que os datos de navegación dos nosos usuarios se vaian a alimentar as IAs da "don't be evil" megacorp.
E por outro lado esta app que nos permite descargar e servir nos mesmos as famosas fontes, polas mesmas razós que o caso anterior.
Hai servicios, como wiki.js, que necesitan que cando listan un usuario no LDAP mostre o atributo 'mail'. Nós estamos usando como servidor LDAP o FreeIPA por comodidade e non mostra este atributo por defecto.
Pódese facer a consulta con este comando:
ldapsearch -x -H ldap://127.0.0.1 uid=manolo.fernandez
E veremos que non aparece o atributo 'mail' por ningún lado.
A historia é que no FreeIPA ese campo está baixo o permiso 'System: Read User Addressbook Attributes' e decir, para usuarios autenticados. Para que apareza en unha consulta anónima debería estar baixo o permisos 'System: Read User Standard Attributes'.
Para facer que se mostre nas consultas anónimas hai que ir ó panel do FreeIPA e logo en ServidorIPA -> Role-Based Access Control -> Permisos buscar 'System: Read User Standard Attributes' e ahí, no listado "Atributos efectivos" verás que o atributo 'mail' non está marcado. Solo faría falta marcar a casilla e aplicar.
Así xa aparecerá cando se faiga unha consulta anónima e, no noso caso, permitiranos facer login no servicio autoaloxado wiki.js.
Coa historia da Elastic Stack está mellor soltar os logs en JSON, así é máis sinxelo de que se procese logo.
Podemos usar a biblioteca "winston" que parece que é a máis famosa para logs en nodejs. Esta sería a maneira:
// npm install winston const { createLogger, format, transports } = require('winston'); const { combine, timestamp, json } = format; const logger = createLogger({ format: combine( timestamp(), json(), ), transports: [new transports.Console()] }) logger.log({ level: 'warn', message: 'Lore ipsum dolor...' });
Esto escupe:
{"level":"warn","message":"Lore ipsum dolor...","timestamp":"2021-11-29T12:25:15.302Z"}
Por exemplo, cando editas un archivo de configuración de Asterisk fora do directorio "/etc/asterisk" non lle pon ben os colorinchis da sintaxis. É necesario decirlle que é un archivo do Asterisk, esto decímosllo con: "Escape" para ir a modo normal e logo con ":set filetype=asterisk".
Para non ter que teclealo cada vez que se abre ese archivo existe unha configuración chamada "modeline" e "modelines". Aquí pódense ver exemplos: https://vim.fandom.com/wiki/Modeline_magic ou no propio vim podese ver a documentación con ":help modeline". Pero básicamente é ter activas estas opciós no vimrc:
set modeline set modelines=5
A primeira activaa e a segunda dice que a "modeline" pode estar nas 5 primeiras, ou últimas, liñas do archivo.
Así; si no archivo, ó principio de todo ou ó final, temos algo como:
; vim: filetype=asterisk cursorline
O asterisk interpretará esta liña e aplicará esas opciós: filetype e cursorline, podéndolle poñer ahí todas as necesarias. Poderédes ver polo internet que se usa bastante para especificar tabulaciós específicas.
Para mostrar os directorios de usuario desde NGINX na url: http://host/~usuario é necesario agregar a seguinte configuración na sección "server" do arquivo de configuración do NGINX:
# directorios de usuario location ~ ^/~(.+?)(/.*)?$ { alias /home/$1/public_html$2; index index.html index.htm; autoindex on; }
Así servirase o directorio "/home/usuario/public_html" na URL indicada anteriormente.
O package-lock.json está diseñado para que un equipo de programación traballe con exactamente as mesmas versiós dos módulos. A diferencia é que no package.json aparecerán símbolos antes das versiós como por exemplo "^1.2.3" ou "~1.2.3", o primeiro quere decir: "versiós superiores á 1.2.3" e o segundo quere decir "versiós mais ou menos iguais á 1.2.3". Sin embargo, no package-lock.json describe explícitamente a versión do paquete, donde descargalo e a súa suma de verificación. Exemplos:
express: ~4.17.1,
"node_modules/express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh3WD[...]",
Entonces, para asegurarnos que traballamos coa mesma versión, en vez de executar:
npm install
Será mellor executar:
npm ci
Este último comando esixe que exista o package-lock.json e instala as versiós ahí especificadas.