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 |
Trouver des liens symboliques en erreur / Trouver les liens symboliques morts
Voir aussi :
find / -type l | perl -lne 'print if ! -e'
Source : http://www.tux-planet.fr/trouver-des-liens-symboliques-en-erreur/
Ou encore
diff <(find . -type l -print0 | xargs -0 -I {} readlink -e {}) <(find . -type l -print0 | xargs -0 -I {} readlink -m {})
Avec le paquet debian fslint
Placer vous avant dans le répertoire à vérifier
/usr/share/fslint/fslint/findbl
find -L dossier/ -not -readable
Ou plus simplement
find . -xtype l
Trier et effacer les vidéos
find /home/$USER/Téléchargements/ -type f \( -iname "*.webm" -o -iname "*.mp4" -o -iname "*.avi" \) -print0 -ok rm {} \; | xargs -0 -I '{}' mplayer {} >/dev/null 2>&1
[Esc] pour fermer la vidéo Puis y pour effacer la vidéo ou [Entrée] pour passer à la suivante
Serveur FTP Debian ftpd
Voir aussi :
File Transfer Protocol (FTP) server
This is the netkit ftp server. You are recommended to use one of its alternatives, such as vsftpd, proftpd, or pure-ftpd.
Install, config et chroot
apt-get install ftpd
/etc/passwd
john:x:1002:1003:FTP access,,,:/ftp:/bin/false
/etc/ftpchroot
# /etc/ftpchroot: list of users who needs to be chrooted. See ftpchroot(5). john
/etc/ftpusers
# /etc/ftpusers: list of users disallowed ftp access. See ftpusers(5). root ftp anonymous
Comme c'est chrooté, la commande ls ne fonctionne pas
Pour la faire fonctionner :
ldd /bin/ls mkdir /ftp/bin mkdir /ftp/lib cp -p /bin/ls /ftp/bin/ cp -a /lib/x86_64-linux-gnu/ /ftp/lib/
Pour changer le numéro de port /etc/services
#ftp 21/tcp ftp 2121/tcp
systemctl restart inetd
Autres
vsftpd
echo "chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
Traefik - un reverse proxy pour Docker
Voir aussi :
traefik.yml
entryPoints: web: address: ":80" websecure: address: ":443" serversTransport: insecureSkipVerify: true # rootCAs: # - certs/inter-chain.pem providers: file: filename: dynamic_conf.yml watch: true docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false log: #level: DEBUG level: INFO api: dashboard: true #debug: true #insecure: true
dynamic_conf.yml
tls: certificates: - certFile: certs/registry.docker.local.crt keyFile: certs/registry.docker.local.key - certFile: certs/wildcard.docker.local.crt keyFile: certs/wildcard.docker.local.key stores: - default stores: default: defaultCertificate: certFile: certs/wildcard.docker.local.crt keyFile: certs/wildcard.docker.local.key options: default: minVersion: VersionTLS12 sniStrict: true
docker-compose.yml
version: '3.7' services: traefik: image: traefik #restart: unless-stopped ports: - "80:80" - "443:443" volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock - $PWD/traefik.yml:/traefik.yml:ro - $PWD/dynamic_conf.yml:/dynamic_conf.yml:ro - $PWD/certs:/certs:ro # environment: # PUID: ${PUID} # PGID: ${PGID} # TZ: ${TZ} labels: - traefik.enable=true - traefik.http.routers.dashboard.entrypoints=web - traefik.http.routers.dashboard.rule=Host(`traefik.docker.local`) #- traefik.http.services.s-dashboard.loadbalancer.server.port=8080 - traefik.port=8080 - traefik.http.routers.s-dashboard.entrypoints=websecure - traefik.http.routers.s-dashboard.rule=Host(`traefik.docker.local`) - traefik.http.routers.s-dashboard.service=api@internal - traefik.http.routers.s-dashboard.middlewares=auth@docker # mkpasswd -m md5 |sed -e 's/\$/$$/g' - traefik.http.middlewares.auth.basicauth.users=jean:$$1$$qvbVKuOn$$qKZpjcMQuMFWNgC9vtycL1 - traefik.http.routers.s-dashboard.tls=true - traefik.http.routers.dashboard.middlewares=https-redirect@docker - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true # hello: # image: osones/helloworld # labels: # - traefik.enable=true # - traefik.http.routers.hw.entrypoints=web # - traefik.http.routers.hw.rule=Host(`hw.docker.local`) # - traefik.http.routers.s-hw.entrypoints=websecure # - traefik.http.routers.s-hw.rule=Host(`hw.docker.local`) # - traefik.http.routers.s-hw.tls=true # - traefik.http.routers.hw.middlewares=https-redirect@docker # - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https # - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true # #- "traefik.port=80" # #- "traefik.backend=hello" redis: image: redis #restart: unless-stopped restart: always registry: image: registry:2 depends_on: - redis environment: environment: - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=redis - REGISTRY_REDIS_ADDR=redis:6379 volumes: - $PWD/data:/data labels: - traefik.enable=true - traefik.port=5000 - traefik.http.routers.s-registry.rule=Host(`registry.docker.local`) - traefik.http.routers.s-registry.entrypoints=websecure - traefik.http.routers.s-registry.tls=true registry-ui: image: konradkleine/docker-registry-frontend:v2 #restart: unless-stopped depends_on: - registry environment: ENV_DOCKER_REGISTRY_HOST: 'registry' ENV_DOCKER_REGISTRY_PORT: 5000 #ENV_DOCKER_REGISTRY_USE_SSL: 1 ENV_DEFAULT_REPOSITORIES_PER_PAGE: 50 labels: - traefik.enable=true - traefik.port=80 - traefik.http.routers.s-registry-ui.rule=Host(`registry-ui.docker.local`) - traefik.http.routers.s-registry-ui.entrypoints=websecure - traefik.http.routers.s-registry-ui.tls=true - traefik.http.routers.s-registry-ui.middlewares=auth@docker - traefik.http.middlewares.auth.basicauth.users=jean:$$1$$qvbVKuOn$$qKZpjcMQuMFWNgC9vtycL1
Exemple de génération de certificats. Notez que Traefik est capable d'utiliser Let's Encrypt
mkdir certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/wildcard.docker.local.key -x509 -days 365 -out certs/wildcard.docker.local.crt
docker-compose up -d
Tous logger et historiser vos commandes bash grace à la commande "script"
Voir aussi :
- netconsole
- commande
ac,sa,lastcomdu paquet acct (Debian) ou psacct (RedHat)
Conserver un historique en local de tout ce qui est affiché dans vos shells (entrée/sortie) C'est également valable pour les connexions distantes via SSH. NB : Les mots de passes SSH ne serons pas enregistré (car pas affichés à l'écran)
Il suffit d'ajouter dans le .bashrc
~/.bashrc
##### EXTREM LOGING / HISTORIZE #### historyFolder="$HOME" historyFilename=".history_$(date '+%Y-%m-%d-%H-%M').$$.txt" historyFilenameTime=".history_$(date '+%Y-%m-%d-%H-%M').$$.time" #parentProcessNameOfCurrentShell=$(ps --no-headers -o comm -p $(ps --no-headers -o ppid -p $$)) parentProcessNameOfCurrentShell=$(ps --no-headers -o comm -p $PPID) if [ "$parentProcessNameOfCurrentShell" != script ] then script -aqf ${historyFolder}/${historyFilename} -t 2> ${historyFolder}/${historyFilenameTime} fi
Vous pouvez voir Les caractères de contrôle, le mouvement du curseur, couleurs, etc… seront également enregistrés ce qui “pollue” le fichier. Voici un exemple de comment le nettoyer en cas de besoin :
cat $NOMDUFICHIER |sed -e 's/[[:cntrl:]]//g' -e 's/\[[^m]*m//g' -e 's/\^*M//g' >$NOUVEAUFICHIER
Pour arrêter l'historisation du shell courant, utiliser la commande :
exit
A utiliser une seul fois. Sinon vous fermerez votre shell.
Pour reprendre l'historisation, après un “exit” il suffit de sourcer votre .bashrc
source ~/.bashrc
Rejouer l'historique, exemple :
scriptreplay -t .history_2014-10-14-16-57.7649.time .history_2014-10-14-16-57.7649.txt
Il est possible de jeter un œil rapide sur le fichier avec cat, more ou less
cat .history_2014-10-14-16-57.7649.txt less -r .history_2014-10-14-16-57.7649.txt more .history_2014-10-14-16-57.7649.txt
Autre façon avec rsyslog
/etc/rsyslog.d/bash.conf
local6.* /var/log/commands.log
/etc/bash.bashrc
# bash history logger export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
systemctl restart rsyslog
Autre
De pas dupliquer les ligne dans l'historique
export HISTCONTROL=ignoredups
Afficher les date & heure dans l'history (hardening)
export HISTTIMEFORMAT="[ %d/%m/%Y %H:%M:%S ]"
Avec SystemD
# journalctl -t sudo -p 5 -u session-*.scope -b Sep 12 08:19:01 vmdeb01 sudo[601]: admin : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/bin/bash
