Linux General Cheat Sheets
Information système
Commande | Commentaire |
---|---|
uname -a | Afficher les informations systèmes de linux |
uname -r | Afficher la version du noyau |
uptime | Afficher le temps d'activité du système et affiche la charge |
hostname | Affiche le nom d'hôte de la machine |
hostname -I | Affiche l'adresse IP de l'hôte |
last reboot | Afficher l'historique des redémarrages |
date | Afficher la date et l'heure du système |
cal | Affiche le calendrier du mois |
w | Affiche qui est en ligne |
whoami | Affiche où nous sommes loggué en tant que qui |
Information matérielle
Commande | Commentaire |
---|---|
dmesg | Affiche les messages du noyau |
cat /proc/cpuinfo | Affiche les informations du CPU |
cat /proc/meminfo | Affiche les informations de la RAM |
free -h | Affiche la mémoire libre et utilisé (-h pour lisible par l'homme, -m for MB et -g pour GB) |
lspci -tv | Affiche les périphériques PCI |
lsusb -tv | Affiche les périphériques USB |
dmidecode | Affiche les information DMI/SMBIOS (informations systèmes) depuis le BIOS |
hdparm -i /dev/sda | Affiche les informations du disque /dev/sda |
hdparm -rT /dev/sda | Faire un test de vitesse de lecture sur le disque /dev/sda |
badblocks -s /dev/sda | Test le disque /dev/sda pour d'éventuels blocks défectueux |
ls - Lister le contenu d'un répertoire
Permet de lister le contenu d'un répertoire
Syntaxe :
ls <option> répertoire
Option | Commentaire |
---|---|
-a | Lister tout le répertoire (y compris fichier caché) |
-l | Afficher le répertoire sous forme de tableau, avec permission, ... |
-i | Affiche les inodes |
-h | Affiche la taille dans un format lisible par l'homme (Mo par exemple) |
-R | Liste également les sous-répertoires |
-s | Affiche la taille des répertoires |
pwd - Afficher le répertoire courant
Affiche le répertoire dans lequel on se situe.
Syntaxe :
pwd
mkdir - Créer un répertoire
Créer un répertoire.
mkdir -p /chemin/répertoire/à/créer
Option | Commentaire |
---|---|
-p | Créer les répertoires parents si ces derniers n'existent pas |
Exemple : Je souhaite créer un répertoire truc dans /home/user1/test1, mais le fichier test1 n'existe pas.
Syntaxe :
mkdir -p /home/user1/test1/truc
cd - Changer de répertoire
Permet de se déplacer dans l'arborescence
Syntaxe :
cd /répertoire/de/destination
cat - Afficher le contenu d'un fichier
Permet d'ouvrir un fichier et d'afficher son contenu.
Syntaxe :
cat <option> fichier
Option | Commentaire |
---|---|
-b | Numéroter toutes les lignes non vides |
-n | Numéroter toutes les lignes |
df - Afficher la taille d'un répertoire
Permet d'afficher la taille d'un répertoire.
Syntaxe :
df <option> répertoire
Option | Commentaire |
---|---|
-h | Permet d'obtenir un résultat plus lisible pour un humain (ex Mo, Ko,...) |
-i | Affiche les inodes |
-k | Affiche le résultat en kilobytes |
-m | Affiche le résultat en megabytes |
-d n. | Affiche la taille des sous-répertoires jusqu'au nème |
mv - Déplacer un fichier ou dossier
Permet de déplacer un fichier ou un répertoire.
Syntaxe :
mv <option> /chemin/source /chemin/destination
Option | Commentaire |
---|---|
-f | Forcer le déplacement |
-i | Demander la confirmation de l'utilisateur |
rm - Supprimer un fichier ou dossier
Permet de supprimer un fichier ou un dossier
Syntaxe :
rm <option> /chemin/truc/a/supprimer
Option | Commentaire |
---|---|
-d | Efface un répertoire |
-f | Force la suppression |
-i | Demande confirmation à l'utilsateur (Inutile avec -f ) |
-r | Récursif |
groups - Afficher les groupes d'appartenance d'un utilisateur
Permet d'afficher dans quels groupes se trouve l'utilisateur
Syntaxe :
groups utilisateur
passwd - Changer le mot de passe
**Permet de changer le mot de passe d'un utilisateur
Syntaxe :
passwd <option> utilisateur
Option | Commande |
---|---|
-d | Supprimer le mot de passe |
-e | Faire expirer le mot de passe |
-i | Rendre un compte inactif |
-l | Verouille le mot de passe et empêche sa modification par l'utilisateur |
-S | Affiche le status du compte |
-u | Déverouille un mot de passe |
Faire un rechercher remplacer récursif :
Remplacer "texte1" par "texte2".
find . -name "*" -exec sed -i 's/texte1/texte2/g' {} \;
Rechercher une chaine présente dans des fichiers d'un dossier de manière récursive :
grep -rnw /PATH/TO/THE/FOLDER -e 'MA-CHAÎNE'
Répéter une commande en boucle :
watch macommande [options]
Couper le début d'une réponse
cat /mon/fichier | cut -c 19-
--> On retire les 18 premiers chars
Envoyer une commande à un autre utilisateur :
su - UTILISATEUR -c "MA COMMANDE"
Mettre à jour à la fois les paquets mais aussi la version de la distribution :
apt-get full-upgrade
Lister les IP D'un CIDR :
nmap -sL -n 10.10.64.0/27 | awk '/Nmap scan report/{print $NF}'
# Résultat :
10.10.64.0
10.10.64.1
10.10.64.2
10.10.64.3
10.10.64.4
10.10.64.5
10.10.64.6
10.10.64.7
10.10.64.8
10.10.64.9
10.10.64.10
10.10.64.11
10.10.64.12
10.10.64.13
10.10.64.14
10.10.64.15
10.10.64.16
10.10.64.17
10.10.64.18
10.10.64.19
10.10.64.20
10.10.64.21
10.10.64.22
10.10.64.23
10.10.64.24
10.10.64.25
10.10.64.26
10.10.64.27
10.10.64.28
10.10.64.29
10.10.64.30
10.10.64.31
Supprimer les dossier datant de plus de quinze jours :
DIR=/backup
find $DIR -type d -ctime +15 -exec rm -rf {};
Savoir le load du proc :
cat /proc/loadavg
Installer un environnement graphique :
apt-get install task-lxde-desktop
Ajouter un utilisateur à la liste des Sudoers :
Avec l'utilisateur Root exécutez la commande ci-dessous :
sudo usermod -a -G sudo <username>
L'utilisateur peut désormais faire la commande sudo !
Mettre une adresse IP fixe sur Linux :
On modifie le fichier situé dans /etc/network/interfaces :
nano /etc/network/interfaces
auto eth1
iface eth1 inet static
address 192.168.0.42
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.1
Puis on redémarre le service :
service networking restart
L'IP est désormais fixe !
Grep toutes les IPS d'un fichier
cat mon_super_fichier | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
Savoir son adresse IP d'une manière lisible :
ip -br a
Savoir la taille totale de RAM non-utilisée :
free
Détails de la RAM :
sudo dmidecode -t 17
Savoir le nombre de processeurs :
nproc
Détails du CPU :
lscpu
Changer le fuseau d'horaire :
dpkg-reconfigure tzdata
Changer le fuseau horaire sans intéraction :
ln -fs /usr/share/zoneinfo/Europe/Paris /etc/localtime
dpkg-reconfigure --frontend noninteractive tzdata
Générer une chaine aléatoire :
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
Filtrer le résultat d'une commande : Récupérer la X ième collone
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b47869c06afa local_ansible:latest "tail -F anything" 4 days ago Up 4 days XXXXXXXXXX.1.xkdfozjzesx3i9tiiwi7v4mx2
98d251874810 local_ansible:latest "tail -F anything" 4 days ago Up 4 days XXXXXXXXXX.1.30q690xvddk600wt35tuii2qr
e59db4bf005e local_ansible:latest "tail -F anything" 4 days ago Up 4 days XXXXXXXXXX.1.wf6mpbnyl3fmvvl1dm6rvgx7q
d5bb4b393058 local_ansible:latest "tail -F anything" 4 days ago Up 4 days XXXXXXXXXX.1.ug7xuyrdx61jz2hyir01i85dl
c7e24c57b1c3 local_ansible:latest "tail -F anything" 4 days ago Up 4 days XXXXXXXXXX.1.xgn2wopz174n4vsq8sfu1hbuz
docker ps | awk '{print $1}'
CONTAINER
b47869c06afa
98d251874810
e59db4bf005e
d5bb4b393058
c7e24c57b1c3
$1 représente la première collone ; pour la suivante ce sera $2 etc.
Lister les processus :
ps aux
KILL un processus :
sudo kill -9 ID
Faire un SSH via un proxy :
# Forward le trafic sur le port 8080 de mon ordinateur vers le port 80 de l'hote distant
ssh -L 8080:localhost:80 remote_host
Afficher les logs du boot précédent et ainsi voir à la toute fin, les logs de la dernière extinction du système.
journalctl -b -1
Actualiser le /etc/fstab :
sudo mount -a
Couper un affichage à partir d'un caractère :
cat monfichier.log | cut -d "|" -f 2
Journalclt purge :
- Per days
journalctl --vacuum-time=2d
- Per size
journalctl --vacuum-size=500M
--> Après purge des fichiers de logs, pour libérer l'espace (uniquement si on supprime rsyslog ou daemon.log ):
systemctl restart rsyslog
Taille dossier d'un niveau uniquement :
du -h --max-depth=1
Supprimer un hostname des know_host ssh :
ssh-keygen -R hostname
Lister les services actuellement fonctionnels :
sudo systemctl --type=service --state=running | awk '{print $1}'
UNIT
chrony.service
containerd.service
cron.service
dbus.service
docker.service
getty@tty1.service
google-cloud-ops-agent-diagnostics.service
google-cloud-ops-agent-fluent-bit.service
google-cloud-ops-agent-opentelemetry-collector.service
google-guest-agent.service
google-osconfig-agent.service
haveged.service
mariadb.service
nmbd.service
polkit.service
rsyslog.service
serial-getty@ttyS0.service
smbd.service
ssh.service
systemd-journald.service
systemd-logind.service
Certificats :
Etablir une connexion ssl pour tester les certificats :
openssl s_client -connect host:port -CAfile chemin_vers_certificat_public_de_la_ca.pem
Debug Deep :
Afficher les logs du noyeau linux :
dmesg
Kernel :
--> On va lister les vieux kernels présents sur le system. Puis on va les supprimer pour faire de l'espace dans /boot.
Kernel actuellement en cours d'execution :
uname -r
X.X.X-26-amd64
J'utilise donc le kernel : X.X.X-26-amd64
Liste des kernels présents dans le système (exépté le kernel actuellement utilisé) :
sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
linux-image-X.X.X-18-amd64
linux-image-X.X.X-19-amd64
linux-image-X.X.X-20-amd64
linux-image-X.X.X-21-amd64
linux-image-X.X.X-22-amd64
linux-image-X.X.X-23-amd64
Ici, nous allons pouvoir supprimer les versions X.X-18-amd64 à X.X-23-amd64 compris. Il faut toujours garder deux versions de kernels précédentes.
Pour supprimer les anciens kernels, je vais réaliser les commandes suivantes :
sudo apt purge linux-image-X.X.X-18-amd64
sudo apt purge linux-image-X.X.X-19-amd64
sudo apt purge linux-image-X.X.X-20-amd64
sudo apt purge linux-image-X.X.X-21-amd64
sudo apt purge linux-image-X.X.X-22-amd64
sudo apt purge linux-image-X.X.X-23-amd64
sudo apt purge linux-image-X.X.X-24-amd64
Puis, je vais réaliser une purge des packets qui sont désormais obsolètes :
sudo apt autoremove
Enfin, on met à jour la liste des noyeaux grub :
sudo update-grub
Conclusion :
Mon /boot est passé de 427 Mo utilisés à 168 Mo.
TCPDUMP :
ARP:
sudo tcpdump -nni any vrrp
--> Sur toutes les interfaces.
Récupérer un fichier perdu, supprimé :
Foremost permet de récupérer les fichiers supprimés. Cette récupération n'est pas parfaite car les données perdues peuvent être écrasés par une réécriture :
foremost -t all -i /dev/sda1
Gestion du disque linux (LVM) :
Afficher les volumes physiques :
pvdisplay
Afficher le groupe :
vgdisplay
Afficher les volumes logiques :
lvdisplay
Augmenter la taille d'un volume :
# Taille définie :
lvextend -L '+9G' /dev/vg0/lib
# Taille relative :
lvextend -l '+100%FREE' /dev/vg0/lib
Affecter la nouvelle taille :
xfs_growfs /var/lib
Supprimer un volume récalsitrant :
# Eteindre le volume.
lvchange -an -v /dev/vg0/lib
# Afficher les process qui utilisent le volume
lsof | grep /var/lib
# Si besoin de debug : Afficher les processus cachés qui utilisent le volume
grep -l /var/lib /proc/*/mountinfo
# --> Cette commande nous retounre des PID. Faire : ps -aux | grep <PID_ID> ; pour connaitre les service qui continuent d'utiliser le volume.
# Maintenant que nous avons éteinds tous les services qui posent problème, nous pouvons supprimer le volume.
lvremove -f vg0/lib
lvcreate -n lib -l 100%FREE vg0
mkfs.xfs /dev/vg0/lib
Procédure pour augmenter la SWAP :
free -h
swapoff /dev/vg0/swap
lvextend -L '+6G' /dev/vg0/swap
mkswap /dev/vg0/swap
swapon /dev/vg0/swap
free -h
Procédure pour supprimer un volume "100%FREE" qui nous empéche forcément de créer un volume /home de 20 Go :
# Démonter /var/lib ; sauvegarder ; préparer au redémarrage
cp -pR /home /root/
cp -pR /var/lib /root/
umount /var/lib
cp -pR /root/lib/* /var/lib/
############################
############################
COMMENER LE /ETC/FSTAB (ligne lib) :
#/dev/vg0/lib /var/lib xfs rw,noatime,logbufs=8,logbsize=256k,inode64 1 2
############################
############################
Reboot
############################
############################
# Supprimer le volume
lvremove -f vg0/lib
##############################
# Créer les volumes qu'il faut
lvcreate -n home -L "20G" vg0
mkfs.xfs /dev/vg0/home
#...
lvcreate -n lib -l 100%FREE vg0
mkfs.xfs /dev/vg0/lib
##############################
# supprimer les données résiduelles avant remontage
rm -r /var/lib/*
rm -r /home/*
############################
DECOMMENTER LE /ETC/FSTAB !
+
AJOUTER LES MONTAGES neccessaires :
/dev/vg0/lib /var/lib xfs rw,noatime,logbufs=8,logbsize=256k,inode64 1 2
/dev/vg0/home /home xfs rw,noatime,logbufs=8,logbsize=256k,inode64 1 2
############################
mount -a
# VERIFIER
mount | grep /home
mount | grep /var/lib
# Réimporter les datas dans les volumes
cp -pR /root/lib/* /var/lib/
cp -pR /root/home/* /home/
# Reboot
reboot
# vérification
ls -lisa /var/lib
ls -lisa /home
# suppression des données dupliquées
rm /root/home -r
rm /root/lib -r
SSHD - Only sftp
Prérequits :
- home de l'user toto : /opt/toto
Configuration /etc/ssh/sshd_config :
Match User toto
ChrootDirectory /opt/toto
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PasswordAuthentication no
ForceCommand internal-sftp -d /%u
Commandes pour rendre la chose fonctionelle :
mkdir /opt/toto/data
chown root:root /opt/toto
chown -R toto:toot /opt/toto/*
systemctl restard sshd
Test :
sftp -i id_rsa toto@SERVEUR <<< 'put fichier.txt /data/'
# Test de perms
ssh -i id_rsa toto@SERVEUR
This service allows sftp connections only.
Connection to SERVEUR closed.
Gérer les ACL
Récupérer les informations d'un fichier :
stat launch_kee.sh
====================================================
Fichier : launch_kee.sh
Taille : 82 Blocs : 8 Blocs d'E/S : 4096 fichier
Périphérique : 254/1 Inœud : 4718858 Liens : 1
Accès : (0755/-rwxr-xr-x) UID : ( 0/ root) GID : ( 0/ root)
Accès : 2024-06-10 11:24:44.881570498 +0200
Modif. : 2024-06-10 11:24:33.865592246 +0200
Changt : 2024-06-10 11:24:41.201577761 +0200
Créé : 2024-06-10 11:24:29.949599980 +0200
Récupérer les ACL d'un fichier :
getfacl launch_kee.sh
=========================
# file: launch_kee.sh
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
Ajouter les perms à un utilisateur :
sudo setfacl -m user:nehemie:rw- launch_kee.sh
Constat :
getfacl launch_kee.sh
==============================
# file: launch_kee.sh
# owner: root
# group: root
user::rwx
user:nehemie:rw-
group::r-x
mask::rwx
other::r-x
Supprimer les perms à un utilisateur :
sudo setfacl -Rm user:nehemie:--- launch_kee.sh
- - R : ACL Récurcif
Constat :
getfacl launch_kee.sh
====================================
# file: launch_kee.sh
# owner: root
# group: root
user::rwx
user:nehemie:---
group::r-x
mask::r-x
other::r-x
Réduire la valeur des ports privilégiés:
echo 80 | sudo tee /proc/sys/net/ipv4/ip_unprivileged_port_start
Lister les démons qui utilisent le dossier :
sudo lsof /var/lib/
Convertir des timestamps milisencondes en date humaines :
# dans mon fichier tmp j'ai des lignes de timestamp en format ms
for line in $(cat /var/lib/db_backup/tmp); do date -ud @$(($line / 1000)); done;
vmware-toolbox-cmd timesync enable
Installer un packet dans un conteneur debian bizzare :
apk add curl
apk add jq
No Comments