Commandes courantes
Gestion des paquets
- sudo apt install <paquet> : installe le paquet indiqué
- option -y : accepte automatiquement l’installation (utile pour ne pas avoir besoin d’intervention utilisation dans scripts)
- apt-file search <lib/bin> : indique quel(s) paquet(s) installer pour obtenir la lib ou le binaire indiqué
- nécessite l’installation du paquet
apt-fileet d’avoir exécuter précédemment la commandesudo apt-file update - fonctionne probablement avec n’importe quel type de fichier
Gestion des process
- nécessite l’installation du paquet
- ps : affiche tous les processus du terminal en cours
- ps u : affiche le nom de l’utilisateur
- ps a : affiche les processus de tous les utilisateurs (uniquement ceux liés à un terminal - sauf si option x)
- ps x : affiche tous les processus (même ceux non liés à un terminal)
- ps o : spécifie les champs à affichage. ex:
ps o user:20,pid,start,time,cmd
💽 Gestion des disques
- du <folder> : Disque Usage - liste tous le fichiers et leur taille dans le dossier indiqué
- du -dn : limite la profondeur du scan à n
- du -s : affichage l’espace total utilisé
- du -h : affiche la taille en human readable (ko, Mo, Go, etc.)
- df : affiche les disques montés et les espaces occupés/libres
- option -h : Human readable
👥 Gestion des utilisateurs et des droits
- adduser <user> : Ajoute un utilisateur
- adduser <user> <group> : Ajoute l’utilisateur au groupe
- deluser <user>
- addgroup <group> : Ajoute un groupe
- delgroup <group> : Efface un groupe
- groups: affiche les groupe de l’utilisateur courant
- groups <user>: affiche les groupe de l’utilisateur spécifié
- la liste de tous les groupes existant est accessible dans le fichier /etc/group
- la liste de tous les utilisateurs existants est accessibles dans le fichier /etc/passwd
- chown : change le propriétaire d’un fichier ou dossier
- chown <user>:<group> fichier
- chown -R : récursif
- chmod : modifie les permissions sur un fichier
- chmod <777> <file>|<directory>
- chmod +x <file> : Ajoute les droits d’exécution à tout le monde (peut également être r pour read ou w pour write)
- chmod -x <file> : Retire les droits d’exécution à tout le monde
- chmod u+x <file> : Ajoute les droits d’exécution à l’utilisateur
- u pour User, g pour Group et o pour Other
- + pour ajouter les droits et - pour retirer les droits
- r pour Read, w pour Write et x pour eXecute
- les dossier doivent nécessairement être x pour être browsés
Réseau
Associer des noms à des adresses IP
Permet de donner des noms à des IP du réseau local (plus simple de retenir un nom qu’une IP)
- fichier
/etc/hosts
192.168.0.xxx nas
192.168.0.yyy raspberry4
Montage de lecteurs réseau
Prérequis
Nécessite l’installation d’utilitaires NFS si montage NFS.
sudo apt install nfs-common
Note: Cela va installer l’utilitaire /sbin/mount.nfs
Montage
La commande mount permet de monter un lecteur (USB, réseau, etc.) vers un point de montage n’importe où dans le filesystem. Néanmoins, les montages se feront généralement dans /media/.
Le dossier sur lequel sera monté le lecteur doit préalablement exister (dans l’exemple ci-dessous, le dossier stock doit exister).
sudo mount -t [type] -o [options] /dev/sdc3 /media/stock
| Option | Signification |
|---|---|
| defaults | paramètres de montage par défaut (équivalent à rw,suid,dev,exec,auto,nouser,async) |
| rw | Lecture/Ecriture |
| ro | Read-only |
| exec/noexec | Autorise l’exécution des programmes (par défaut) |
| users | permet à n’importe quel utilisateur de monter/démonter le système de fichiers (cela implique noexec,nosuid,nodev). |
| nouser | autorise seulement le compte root à monter le fichier système (par défaut). Note: si le montage est effectué par un service (ex dans fichier fstab), il sera nécessairement monté en tant que root. Cette option n’empêche donc pas les utilisateurs d’avoir un lecteur monté sur leur session. |
| auto | le système de fichiers sera monté automatiquement au démarrage, ou quand la commande mount -a sera jouée |
| nofail | si la partition n’est pas disponible au démarrage, elle n’est pas montée et ne bloque pas le démarrage |
| noatime | ne pas mettre à jour la date d’accès sur l’inode pour le système de fichier |
| bg | Montage en arrière plan. Si le montage échoue, le process parent continue et des retry sont effectués en arrière-plan |
📚 Biblio: https://doc.ubuntu-fr.org/mount_fstab
Montage automatique
Pour un montage automatique au démarrage du PC, ajouter les lecteurs à monter ainsi que les options dans le fichier /etc/fstab.
✏️ Note: Le montage des lecteurs sera alors effectué par un service en tant que root.
192.168.0.xxx:/media/ /media/nas-media nfs defaults,auto,nofail,noatime,bg 0 0
192.168.0.xxx:/Documents/ /media/nas-doc nfs defaults,auto,nofail,noatime,bg 0 0
mount -a : Effectue tous les montages décrits dans le fichier fstab.
UFW
UFW (Uncomplicated FireWall) est un utilitaire simplifié de configuration du firewall.
- ufw app list : Affiche la liste des applications connues
- ufw allow <app> : Autorise l’application indiquée (trouvée grâce à la commande précédente) - Ex: ufw allow WWW
- ufw allow <port>/<protocol> : Autorise le protocol (tcp/udp) sur le port indiqué. Ex: ufw allow 80/tcp
-
ufw deny reject <app> : Rejete les connexions indiquées. Deny ne laisse pas passer les paquets correspondants tandis que Reject retourne un message d’erreur à l’initiateur de la connexion. - ufw enable : active le firewall
- ufw disable : désactive le firewall
- ufw reload : recharge la nouvelle configuration
Services
Créer un service
Créer un fichier myService.service à un des emplacements suivants:
- /etc/systemd/system - pour que service s’exécute au démarrage du système
- /etc/systemd/user - pour que le service s’exécute à la connexion de n’importe quel utilisateur
- ~/.config/systemd/user/ - pour que le service s’exécute à la connexion d’un utilisateur spécifique
[Unit]
Description=Description du service
After=network.target other_service.service
Before=<idem after mais avant>
Wants=<service à démarrer avant. Dépendance faible, ie le service démarre même si la dépendance échoue>
Requires=<idem Wants mais dépendance dure. ie le service ne démarrera pas si la dépendance a échoué>
[Service]
Type=simple / forking / oneshot / notify / dbus / idle -> généralement simple ou idle
User=<optionnel - user spécifique pour exécuter le service>
Group=<optionnel - group spécifique pour exécuter le service>
Environment=MY_VAR=my_value
ExecStartPre=<commande à exécuter avant ExecStart>
ExecStartPre=<on peut en mettre plusieurs>
ExecStart=<commande à exécuter pour le service>
ExecReload=<optionnel - commande à exécuter en cas de redémarrage du service>
ExecStartPost=<commande à exécuter après ExecStart>
Restart=no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always
RestartSec=3
[Install]
WantedBy=multi-user.target
ou
RequiredBy=<idem WantedBy mais en dépendance dure>
La section [Install] est utilisée pour le démarrage automatique du service (avec la commande enable). Indique l’état du système qui va essayer de démarrer le service en automatique. Généralement multi-user.target - le système est booté et attend qu’un utilisateur se logge.
Dépendances
Pour les options After, Before, Wants, Requires, on peut spécifier des dépendances sur
- un autre service – Extension
.service. Exemple: myService.service - un état du système atteint durant la phase de boot – Extension
.target. Exemple: network.target- poweroff.target : éteint
- rescue.target
- multi-user.target : le système est démarré, les utilisateurs peuvent se connecter en non graphique
- graphical.target : la partie graphique est démarrée
- network.target : le réseau est prêt
Pour les options WantedBy et RequiredBy, on se limite habituellement aux targets
Biblio
- https://www.malekal.com/creer-service-linux-systemd/
- https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html
- https://www.baeldung.com/linux/systemd-target-multi-user
Gérer les services
- sudo service <nom du service> start/restart/status/stop
- sudo systemctl start/status/restart/stop <nom du service>
- sudo systemctl enable/disable <nom du service> : active/désactive le démarrage automatique du service
- la commande service est une commande de plus haut niveau qui peut elle-même faire appel à la commande systemctl ou une autre commande selon l’implémentation
- la commande systemctl est une commande de plus bas niveau qui offre plus de possiblités
- systemctl list-units : liste tous les services
- systemctl list-units -type=target/service/socket: liste tous les services du type indiqué
Journaux système
systemd
systemd est un daemon d’init du system (généralement PID 1). Il est en charge de démarrer les autres démons et services. Toute appli démarrée à l’aide de systemd (via une commande systemctl) voit ses sorties standard (stdout et stderr) redirigées vers journald.
📚 Bibliographie: https://guillaume.fenollar.fr/blog/journald-tutoriel-journald-journalctl/
dmesg
- dmesg (pour display messages) permet d’afficher les messages du kernel linux. Utile pour le boot du système ou lorsqu’on connecte/déconnecte un device.
- on peut écrire des message dans les logs kernel:
echo "mesage" > /dev/kmsg
Hardware
lspci: Liste tous les périphériques PCIlsusb: Liste tous les périphériques USBlshw: Liste les périphériques matériellshw -C <categorie>: Filtre par catégorie (ex: lshw -C network)
lsmod: Liste les modules du kernel qui sont chargés (mise en forme du fichier /proc/modules)
Divers
- free -h : Affiche la mémoire dispo sur le système
- cat /sys/class/thermal/thermal_zone0/temp : Affiche la température CPU (en m°C)