Guide de survie : quelles commandes dois-je absolument connaître?

Lorsque vous allumerez votre serveur, qu'il soit relié à un écran ou au travers d'SSH, vous verrez une invite de commande :

acdc$ ▮

C'est en entrant des commandes avec votre clavier que vous administrerez votre serveur.

Bien sûr, il en existe beaucoup. Vous les découvrirez petit à petit selon vos besoin.

Pour l'instant, en voici quelques unes. Ne cherchez pas à retenir tout d'un coup : revenez chercher ce dont vous avez besoin le moment venu.

Astuces

Astuce n°1 : Tab

En utilisant la touche "tabulation" ↹, vous pouvez compléter une commande ou un chemin vers un fichier. Commencer à en écrire le début puis appuyez sur ↹.

Tab, c'est in-dis-pen-sable ! 😉

Astuce n°2 : ctrl-c

Pour annuler ce que vous êtes en train d'écrire, appuyez simultanément sur "ctrl" et "c". ("cancel").

Astuce n°3 : "\"

Bien que ce soit très rare, il arrive que certains noms de fichier contiennent des espaces " ", voire des symboles un peu étranges. Or, un espace est considéré par l'invite de commande comme un séparateur entre les fichiers. Il risque donc de penser que vous faîtes référence à plusieurs fichiers au lieu d'un seul.

Utilisez alors "\" pour "échapper" le symbole bizarre. De cette façon, l'invite de commande va en quelque sorte l'ignorer. Par exemple :

/chemin/vers/un/fichier\ avec\ des\ espaces.txt

Dans tous les cas, évitez de créer des fichiers aux noms étranges.

Si vous devez en traiter un grand nombre, renseignez-vous sur l'outil "detox" (port du même nom).

Astuce n°4 : historique des commandes

Pour retrouver l'historique et relancer rapidement une ancienne commande, utilisez le raccourci ctrl-R.

Vous devez avant tout l'avoir activé en ajoutant export "HISTFILE=~/.history" dans le fichier "~/.profile" :

$ echo "export HISTFILE=~/.history" >> ~/.profile

Au prochain login, l'historique sera actif.

su et doas : comment devenir superutilisateur (root) ?

Entrez la commande "su -l" puis le mot de passe de l'utilisateur root.

ATTENTION : dans ce cas, votre utilisateur doit appartenir au groupe "wheel" pour que cela soit possible. C'est le cas du premier utilisateur créé sur un système.

Vous pouvez aussi configurer doas pour lancer une commande avec les droits superutilisateurs ainsi :

doas commande

Modifiez/créez le fichier /etc/doas.conf (doas.conf) pour y ajouter :

permit utilisateur

Adaptez "utilisateur" selon votre cas.

Voir aussi :

"man doas"

ls : lister le contenu d'un répertoire

Lancez "ls" suivi du chemin vers le dossier à lister (ou rien pour lister le dossier courant).

L'option "-l" permet aussi d'indiquer les permissions, propriétaires, tailles et dates de modification.

Exemple :

$ ls -l /etc
drwxr-xr-x  7 root  wheel        512 Apr 19 19:12 X11
drwx------  2 root  wheel        512 Apr 19 18:16 acme
-rw-r--r--  1 root  wheel       1542 Apr 13 15:39 acme-client.conf
-rw-r--r--  1 root  wheel       1764 Nov 28 13:56 adduser.conf
drwxr-xr-x  2 root  wheel        512 Apr 19 18:16 amd
drwxr-xr-x  2 root  wheel        512 Apr 19 18:16 authpf
-rw-r--r--  1 root  wheel         30 Aug  2  2020 boot.conf
[...]

On obtient une ligne par fichier/dossier. Chaque ligne est découpée de cette façon :

<permissions> <inode> <proprietaire> <groupe> <taille> <date dernier acces> <nom du ficher>

Une méthode simple et pourtant redoutable pour sécuriser son site web -- et plus généralement son serveur -- consiste à modifier les droits et le propriétaire des fichiers dudit site.

Lisez les parties sur "chmod" et "chown" pour en savoir plus.

chmod : changer les permissions

Regardons en détail ce que nous indique le retour de la commande "ls -l" vue précédemment.

Les lettres en début de ligne décrivent les permissions accordées au fichier. Nous pouvons retenir deux choses :

1. Si le premier caractère est un d, alors il s'agit d'un répertoire. Sinon, c'est un fichier (sauf exceptions).

2. Les caractères restants se lisent 3 par 3. Chaque "trio" décrit respectivement les permissions pour le propriétaire, pour le groupe puis pour tous les autres.

Par exemple, pour cette ligne :

drwxr-xr-x   2 www  daemon    512 May  5 17:10 bin

On voit qu'il s'agit d'un répertoire. Ensuite, on lit par groupe de 3 par 3 :

rwx : Le propriétaire www peut :

"r-x" : Ceux appartenant au groupe "daemon" peuvent

"r-x" : Tous les autres peuvent :

En règle générale, il faut éviter autant que possible de donner les droits d'écriture et d'exécution à d'autres personnes que le propriétaire. Parfois, on retire aussi les droits de lecture sur certains fichiers (mots de passe...).

Pour changer les droits, il existe plusieurs méthodes.

chmod "symbolique"

Certains utilisent une série de chiffres, comme chmod 700. Je trouve cette façon peu explicite lorsqu'on n'a pas encore l'habitude. Quitte à devoir taper quelques commandes en plus, préférez utiliser chmod <identite>±<permission> où :

Vous prendrez bien quelques exemples?

Ces modifications peuvent être appliquées récursivement (à tous les sous-documents d'un dossier) avec l'option -R.

Astuce : pour autoriser à se déplacer dans les dossiers, sans rendre exécutables les fichiers, utilisez X (majuscule) au lieu de x.

chmod "absolu"

Si vous souhaitez comprendre la notation numérique d'un chmod :

Il n'y a pas de distinction entre les dossiers ou les fichiers, il faut dont procéder avec prudence.

Le premier chiffre correspond au droit attribué au propriétaire, le second au groupe, le dernier aux autres.

On additionne les chiffres entre eux. Cela signifie que "chmod 700" attribue les permissions "rwx" au propriétaire, et aucune pour le groupe et les autres (7 = 4+2+1).

Pour finir, afin de définir les permissions en faisant la distinction entre le dossiers et les fichiers, et ne pas rendre exécutable un fichier avec un "chmod -R" (récursif), la commande "find" est votre amie:

Comme toujours, la commande "man chmod" vous en apprendra davantage.

chown : Propriétaire et groupe

Chaque fichier appartient à un propriétaire et fait partie d'un groupe. Cela nous permettra de donner certaines permissions aux propriétaires, qui ne seront pas forcément les mêmes que celles données au membre du groupe.

Pour modifier le propriétaire et le groupe, on utilise la commande chown (change owner).

# chown <proprietaire>:<groupe> nom_du_fichier

Gestions des fichiers

Avant de voir comment gérer les fichiers, prenez note des notations suivantes :

pwd : afficher le dossier courant

Avec pwd, vous demandez "où suis-je" :)

mkdir : créer un répertoire

$ mkdir nom_du_nouveau_dossier

Utilisez l'option "-p" pour créer toute une structure d'un coup :

$ mkdir -p ~/dossier/avec/des/sous-dossiers

cd : changer de répertoire

Pour vous déplacer dans le dossier "/var/www" :

$ cd /var/www

La commande "cd" sans argument vous déplace dans votre "$HOME".

cp : copier

Pour copier un fichier :

$ cp fichier_source fichier_copie

Pour copier un dossier et son contenu :

$ cp -R dossier_source dossier_copie

rm : supprimer

$ rm chemin_vers_le_dossier
$ rm -R chemin_vers_le_dossier

mv : déplacer

$ mv source destination

C'est comme faire un couper-coller.

less : comment lire et chercher dans du texte ?

Pour seulement consulter un fichier, utilisez la commande "less".

Ensuite, vous pouvez chercher n'importe quelle chaîne de caractères en appuyant sur "/" puis en écrivant votre recherche. Appuyez sur "n" pour aller à l'occurrence suivante, ou bien "N" pour revenir en arrière.

Pour quitter less, appuyez sur "q".

Si vous voulez chercher dans le contenu des logs, ça peut être pratique 😉.

man

Voici la véritable raison pour laquelle il n'y a pas 36 forums d'entraide autour d'OpenBSD mais seulement une liste de discussion : les pages de manuel sont très complètes, agrémentées d'exemples, et suffisent la plupart du temps à répondre aux problèmes rencontrés.

La commande "man" vous permet d'afficher une page de manuel.

Notez qu'il existe différentes sections pour classer les pages de manuel :

Aussi, il arrive parfois qu'une page man existe dans plusieurs section différentes : son contenu n'est alors pas le même. Afin de les différencier, on fait référence à une manpage ainsi : "nom_de_la_page(section)".

Par exemple : "apm(8)", ou "apm(4)". Ou encore "man(1)" et "man(7)". Oui, "man" a une page "man".

On utilise cette commande ainsi, sans les parenthèses :

$ man (section) page

La section est facultative.

Pour vous entrâiner, lancez "man hier". Utilisez les flèches pour faire défiler. Comme avec "less", vous pouvez faire une recherche avec "/". Remarquez la partie "SEE ALSO" qui vous invite à lire d'autres manpages pouvant avoir un intérêt. Quittez avec "q".

Si vous ne savez pas quel est le nom de la page man, vous pouvez la rechercher avec la commande "apropos" :

$ apropos votre_recherche 

vi : pour éditer un fichier

Savoir éditer un fichier est crucial.

Il existe une ribambelle d’éditeurs de texte (vim, nano…). L'éditeur par défaut sur OpenBSD est vi.

vi

Il est peut être étonnant à utiliser au premier abord, si bien que certains voudront peut-être installer un autre éditeur à la place. Cependant, vi est très pratique une fois qu'on l'a pris un peu en main. Si au contraire vous êtes déjà habitué à l'éditeur emacs, vous trouverez votre bonheur avec l'éditeur mg présent lui aussi par défaut.

Voici quelques conseils pour utiliser vi au travers d'un exemple. Pour éditer le fichier /etc/iloverocknroll, vous saisirez ceci :

$ vi /etc/iloverocknroll

Apparaîtra alors le contenu de ce fichier dans le terminal :

apercu vi

En général, vous procéderez seulement ainsi :

Vous êtes toujours là ? 😁

Allons donc un peu plus loin (mais pas trop, promis 😁). Comprenez tout de suite qu'il existe trois modes :

Pour enregistrer les modifications, appuyez sur : puis sur w. Validez avec entrée. On peut maintenant quitter en écrivant :q. Notez que vous pouvez aller plus vite en saisissant directement :wq.

Pour annuler une modification appuyez sur "u". Pour retirer plusieurs modifications, appuyez sur "u" puis sur "." autant de fois que nécessaire, il permet de répéter la dernière action.

Afin de chercher un texte, ce qui est bien utile dans les gros fichiers, appuyez sur la touche "/" puis écrivez votre recherche.

Si vous souhaitez quitter sans enregistrer vos modifications, saisissez alors :q!.

D'autres astuces bien pratiques :

rcctl : Comment gérer les services ?

Afin d'activer/désactiver des services (qu'on appelle "démons" car ils tournent en arrière-plan), la commande "rcctl" est prévue à cet effet. Tous les services disponibles sont dans le dossier "/etc/rc.d". Voici quelques rappels :

Si vous préférez la méthode manuelle, alors il vous est possible d'éditer directement le fichier "/etc/rc.conf.local" qui gère les services lancés au démarrage.

TP : un peu de pratique

Entraînons nous avec un petit exercice. Réalisez les consignes suivantes puis vérifiez que vous obtenez la même chose que dans la "correction". Essayez de répondre de mémoire dans un premier temps. Si vous êtes bloqués, relisez la page à la recherche de ce qui vous manque.

La correction :


$ cd /tmp
$ mkdir ah
$ cd ah
$ vi vital.txt
$ cp vital.txt Karadoc.txt
$ chmod 600 Karadoc.txt
$ rm vital.txt
$ cd ~
$ pwd
/home/prx
$ ls -l /tmp/ah
total 2
-rw-------  1 prx  wheel  22 May  5 21:10 Karadoc.txt
$ cat /tmp/Karadoc.txt
Le gras, c'est la vie

Notez que on peut remplacer "cd ~" par "cd $HOME", voire même par "cd".