Table des matières
- 2026:
- 2025:
4 billet(s) pour septembre 2026
| Notes HTTP Strict Transport Security - HSTS | 2026/09/18 11:04 | Jean-Baptiste |
| Notes GNU Linux GPU carte graphiques | 2026/09/08 15:49 | Jean-Baptiste |
| Notes GNU Linux graphique | 2026/09/08 15:42 | Jean-Baptiste |
| Notes urlencoding - passer des mots de passe en HTTPS | 2026/09/03 17:58 | Jean-Baptiste |
Snapshot LVM
Voir :
- btrfs
- Stratis
- nilfs2
Snapshot de process avec criu
Voir
- Podman
- checkpointctl
Voir aussi :
- kcarectl / KernelCare
Critmux
Semblable à http://blog.jasonantman.com/2014/07/session-save-and-restore-with-bash-and-gnu-screen/ ?
http://ftp.fr.debian.org/debian/pool/main/c/criu/criu_1.6.1-1_amd64.deb
CRIU avec Docker tmux
Source : https://github.com/jpetazzo/critmux
Démo ici : https://asciinema.org/a/9889
docker run -t -i --privileged --name critmux jpetazzo/critmux
docker stop critmux
docker start critmux ; docker attach critmux
Brouillon
wget http://ftp.fr.debian.org/debian/pool/main/c/criu/criu_1.6.1-1_amd64.deb sha256sum criu_1.6.1-1_amd64.deb
Le nombre en hexadécimal retourné par sha256sum doit être le même que celui figurant sur la page https://packages.debian.org/experimental/amd64/criu/download
78c1acc0fa73e7b7843945f314802760c485557a927f9f886489d0ccb823fc87 criu_1.6.1-1_amd64.deb
dpki -i criu_1.6.1-1_amd64.deb apt-get -f install
# mkdir checkpoint # criu dump -D checkpoint -t $(pgrep iceweasel) --file-locks Error (sk-inet.c:141): Connected TCP socket, consider using tcp-established option. Error (cr-dump.c:1584): Dump files (pid: 17543) failed with -1 Error (cr-dump.c:1947): Dumping FAILED.
On compile newns (voir http://criu.org/VNC)
#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <sys/mount.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/param.h> #include <sys/mman.h> #include <fcntl.h> #include <signal.h> #include <sched.h> #define STACK_SIZE (8 * 4096) static int ac; static char **av; static int ns_exec(void *_arg) { int fd; fd = open("newns.log", O_CREAT | O_TRUNC | O_RDWR | O_APPEND, 0600); if (fd >= 0) { close(0); dup2(fd, 1); dup2(fd, 2); close(fd); } setsid(); execvp(av[1], av + 1); return 1; } int main(int argc, char **argv) { void *stack; int ret; pid_t pid; ac = argc; av = argv; stack = mmap(NULL, STACK_SIZE, PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS, -1, 0); if (stack == MAP_FAILED) { fprintf(stderr, "Can't map stack %m\n"); exit(1); } pid = clone(ns_exec, stack + STACK_SIZE, CLONE_NEWPID | CLONE_NEWIPC | SIGCHLD, NULL); if (pid < 0) { fprintf(stderr, "clone() failed: %m\n"); exit(1); } return 0; }
gcc newns.c -o newns mv newns /usr/local/bin/ chmod +x /usr/local/bin/newns
$ newns iceweasel clone() failed: Operation not permitted
Voir https://github.com/lxc/lxc/issues/261
J'ai essayé : Sans succès !
echo 1 > /sys/fs/cgroup/cpu,cpuacct/cgroup.clone_children echo 1 > /proc/sys/kernel/unprivileged_userns_clone
Analysons
$ strace newns 2>&1 | grep -i clone clone(child_stack=0x7f105164fff0, flags=CLONE_NEWIPC|CLONE_NEWPID|SIGCHLD) = -1 EPERM (Operation not permitted) write(2, "clone() failed: Operation not pe"..., 40clone() failed: Operation not permitted
Snap snapd le gestionnaire de paquet multi distro
Voir :
Voir aussi :
Install de Snap
sudo apt update sudo apt install snapd ## get the latest snapd # sudo snap install snapd sudo snap install core
Test
snap install hello-world
Config proxy
sudo -E snap set system proxy.http="$http_proxy" sudo -E snap set system proxy.https="$https_proxy"
Sous Ubuntu 18.04
# snap list Name Version Rev Tracking Publisher Notes core 16-2.35.5 5742 stable canonical✓ core gnome-3-26-1604 3.26.0 74 stable/… canonical✓ - gnome-calculator 3.30.1 260 stable/… canonical✓ - gnome-characters 3.30.0 139 stable/… canonical✓ - gnome-logs 3.30.0 45 stable/… canonical✓ - gnome-system-monitor 3.30.0 57 stable/… canonical✓ - gtk-common-themes 0.1-4-g88bc1b2 818 stable/… canonical✓ - rocketchat-desktop 2.7.0 4 stable rocketchat✓ -
Install un paquet
sudo snap find notepad # snap info notepad-plus-plus sudo snap install notepad-plus-plus sudo snap install --classic notepadqq
Mise à jour
sudo snap refresh --list sudo snap refresh
Lancer une application
$ snap list Name Version Rev Tracking Publisher Notes core 16-2.48 10444 latest/stable canonical✓ core pycharm-community 2020.3 222 latest/stable jetbrains✓ classic $ snap run pycharm-community &
Redémarrer un service
snap stop multipass snap start multipass
Logs
journalctl --unit 'snap.multipass*'
Autres
Autre
snap install core sudo snap refresh core
Remove
apt-get -y autoremove --purge snapd snap-confine snapd ubuntu-core-launcher squashfs-tools
Accès à /etc /var … (mais toujours pas /tmp)
snap install --devmode gedit
snap connect vlc:removable-media
Smolnet Gemini and co
Voir :
- Gemini
Voir aussi :
- gopher
- telnet
Signer des fichiers
Voir
Avec ssh_keygen
Avec OpenSSL
Création de la paire de clefs
Génération de la clef privé
openssl genrsa -out priv.pem 4096
Génération de la clef public
openssl rsa -in priv.pem -pubout -out public.pem
Signer
openssl dgst -sha256 -sign priv.pem -out plop.txt.sha256 plop.txt openssl base64 -in plop.txt.sha256 -out /tmp/plop.txt.sign
Vérifier la signature
openssl base64 -d -in plop.txt.sign -out /tmp/plop.txt.sha256 openssl dgst -sha256 -verify public.pem -signature plop.txt.sha256 plop.txt
Exemple de script pour signer
Ce script crée un fichier contenant une date Ce fichier date est signé
La signature est vérifiée Un délais est défini au delà duquel il est considéré comme expiré.
poc_crypto_sign.sh
#! /bin/bash set -o nounset DELAY=60 KEY_PRIV=priv.pem KEY_PUB=public.pem SIGN_FILE=plop.txt.sign TMP_SIGN_FILE=/tmp/plop.txt.sha256 DATA_FILE=plop.txt enc_create_key_priv() { openssl genrsa -out "$KEY_PRIV" 4096 } enc_create_key_pub() { openssl rsa -in "$KEY_PRIV" -pubout -out "$KEY_PUB" } enc_sign() { openssl dgst -sha256 -sign "$KEY_PRIV" -out "$TMP_SIGN_FILE" "$DATA_FILE" openssl base64 -in "$TMP_SIGN_FILE" -out "$SIGN_FILE" } err() { local err_code=$1 shift echo $* >&2 exit $err_code } enc_verif_sign() { openssl base64 -d -in "$SIGN_FILE" -out "$TMP_SIGN_FILE" openssl dgst -sha256 -verify "$KEY_PUB" -signature "$TMP_SIGN_FILE" "$DATA_FILE" > /dev/null if [ $? -ne 0 ] then err 1 "Error. Sign. Verification Failure" fi } date_epoch() { echo $(date +%s) } read_date_file() { echo "$(cat $DATA_FILE)" } create_date_file() { date_epoch > "$DATA_FILE" enc_sign } check_date() { enc_verif_sign local -i epoch_file="$(read_date_file)" local -i epoch_now="$(date_epoch)" echo "DEBUG: $epoch_file > $(( epoch_now - DELAY ))" if (( epoch_file > epoch_now )) then err 2 "Error. Time in futur" elif (( $epoch_file < $(( epoch_now - DELAY )) )) then err 3 "Error. Expired" else echo "OK" fi } #enc_create_key_priv #enc_create_key_pub #create_date_file #enc_sign enc_verif_sign read_date_file check_date
