Console Linux – Commandes de base

28 janvier 2022

Contenu

Objectif général

À la suite de cet atelier le participant sera en mesure d’utiliser les commandes de base de la console Unix et aura acquis une connaissance raisonnable du système de droits d’accès aux fichiers et dossiers.

Prérequis

Sommaire des commandes couvertes

commandeexempledescription
ls
ls
ls -l
ls / -lR
ls -a
ls -ld -- */
Afficher le contenu d'un dossier
Afficher une liste détaillée
Afficher les fichiers de / des sous dossiers
Afficher les fichiers + ceux débutants par un .
Afficher seulement les dossiers
~


.

..
cd ~
cp /projet1/ ~

./uneApp

ls ../..
Aller au dossier de travail
Copier le dossier /projet1 vers le dossier de travail

Exécuter une cmd du dossier courant

Afficher les fichiers du dossier 2 niveaux plus haut
touchtouch fichier1.txt
touch fichier2.txt fichier3.html
echo Bonjour TIM > hello.txt

echo Hello world >> hello.txt
Créer un fichier vide
Créer deux (2) fichiers vides
Créer un fichier à partir du résultat d'une commande
Ajouter du contenu à un fichier
cpcp ./fichier1 /home/toto/
cp a1 a2 a3 ../test2
cp a? ../test
cp a* /home/toto
Copier un fichier ou un dossier
Copier plusieurs fichiers
Copier des fichiers de 2 car débutant par 'a'
Copier tous les fichiers débutant par 'a'
mv

mv index.html /var/www/html/
mv nom.txt nouveauNom.txt
mv /home/bob/ /tmp/
Déplacer un fichier
Renommer un fichier
Déplacer un dossier
rm
rm -r
rm plusbesoin.html
rm -R ./unDossierCourant
rm -i a*


sudo apt install testdisk
Effacer un fichier
Effacer un dossier
Effacer les fichiers débutant par 'a' avec confirmation (-i)

Récupérer des fichiers effacés.
ln -sln -s nomFichier nomLienCréer un lien symbolique
adduser
deluser
sudo adduser fred
sudo deluser coco
Ajouter un nouvel utilisateur
Effacer un utilisateur
adduser

usermod





deluser
sudo adduser toto sudo

sudo usermod -aG sudo toto





sudo deluser toto sudo
Ajouter toto au groupe des 'sudoers'. Par la suite, toto pourra utiliser la commande 'sudo'




Retirer l'utilisateur d'un groupe
usersusers

cat /etc/passwd
Afficher les utilisateurs connectés au serveur.

Afficher tous les utilisateurs du système.
addgroupsudo addgroup designCréer un nouveau groupe
groupsgroups

groups toto

cat /etc/group
Afficher les groupes de l'utilisateur courant.

Afficher les groupes de l'utilisateur nommé.

Afficher tous les groupes du système.
delgroupsudo delgroup designEffacer un groupe
chmodchmod a+r /public/lisezmoi.MD
a=all, u=user, g=group, o=other

chmod -R 750 /var/www/*

chmod u+x,g+rw,a+r lisez-moi.txt
Modifier les droits d'accès à un fichier - tous en lecture

user=rwx, group=rx, other=rien sur tous les fichiers dans /var/www

r=4
w=2
x=1

https://fr.m.wikipedia.org/wiki/Chmod
umaskumask 002Suite à cette commande, les nouveaux fichiers auront le masque de droits 775 (rwxrwxr-x)
chown
chgrp
chown toto /dossier/unFichier
chgrp etudiant unFichier
chown toto:toto unFichier
Modifier le propriétaire d'un fichier
Modifier le groupe d'un fichier
Modifier le proprio et le groupe d'un fichier
unameuname -aAfficher des informations sur la distribution Linux
nanonano unFichier.txtCréer et/ou Éditer un fichier
catcat /etc/groupAfficher le contenu d'un fichier
apt-getsudo apt install mc


sudo apt install gnuchess

sudo apt install lynx

sudo apt update



sudo apt upgrade


sudo apt remove lynx
Installer une application
Ici, nous installons 'midnight commander'

Installer un jeu d'échec : gnuchess --graphic (e4)

Installer un fureteur Web pour la console

Mise à jour des dépôts de paquets (package). Les paquets contiennent les programmes d'installation.

Mise à jour de la distribution Linux (même nombre entier de la version)

Supprimer une application
wgetwget -c http://wordpress.org/latest.tar.gzTélécharger un fichier à partir d'Internet
tartar -xvzf latest.tar.gz

tar -zcvf nom_archive.tar.gz dossier_a_compresser
Décompresser et désarchiver un dossier.

Compresser un dossier
gitgit clone https://github.com/creativetimofficial/bootstrap4-cheatsheetTélécharger un projet à partir d'un dépôt git

* Tester dans une session MacOS
manman lsConsulter la documentation d'une application (programme)
top

ps


kill
top

ps
ps -a

kill PID (-9)
Afficher les processus en cours d'exécution

Afficher les processus de l'utilisateur courant
Afficher tous les processus courants

Forcer l'arrêt du processus no PID
>



|




&
ls . > resultat.txt
echo "toto labrosse" > labrosse


ls -R /var/log | more
ls -R /var/log | less
ls -R / 2>/dev/null | grep .txt >ext-txt.liste

ls -Rl / >liste.txt 2>/dev/null &
ls -Rl / >liste.txt 2>erreurs.txt &
Envoyer la sortie d'une commande vers un fichier


Envoyer la sortie d'une commande vers l'entrée d'une autre commande



Exécuter une commande en arrière plan
0= input, 1=output, 2=error
Installer sshdsudo apt-get install openssh-serverInstaller le démon de connexion ssh
servicesudo service --status-all
sudo service apache2 status
Afficher tous les services
Afficher l'état d'un service
systemctlsudo systemctl enable sendmail
sudo systemctl disable vsftpd
Activer un service
Désactiver un service
rsyncsudo rsync -avz * root@24.225.129.79:/root/bd-sqlCopier tous les fichiers du dossier courant vers le serveur à l'adresse IP 129.79

https://linux.die.net/man/1/rsync
sudo !!Exécuter la dernière commande en mode sudo
fgfgRevenir à la session courante, par exemple, suite à un CTRL+Z

Partie 1 – Commandes de base

Mise en contexte

Pour être en mesure d’installer et d’effectuer la configuration de base d’un serveur LAMP,  l’intégrateur Web doit posséder des notions de base d’utilisation d’un environment Linux sans GUI.
Le but de cet atelier n’est pas de faire de vous un ‘Ingénieur Linux’ mais plutôt de vous fournir les notions de base permettant la mise en place d’un environnement ‘Linux Apache MySQL PHP’ fonctionnel.
Plusieurs ‘cours programme’ pourraient-être consacrés à l’apprentissage de Linux.
Voyons de quoi il en retourne.


Action 1.1 – Démarrer la machine virtuelle hébergant Ubuntu-Desktop et ouvrir une session à partir du compte ‘Etudiant’.

Pour pouvoir expérimenter avec les commandes de la console Unix, il faut afficher cette dernière.

Action 1.2 – Ouvrir la console de commandes (terminal)
Il y a plusieurs façon d’ouvrir la console.
1 – Effectuer une recherche dans la liste des applications:


2 – Lancer l’application terminal à partir du menu des favoris

Pour ajouter une raccourci au menu, il suffit de glisser une application de la liste des applications vers le menu.

3 – Utiliser le raccourci Ctrl+Alt+t
Ceci affichera sur le bureau la fenêtre suivante:

Action 1.3 – Afficher le nom du dossier courant – la commande pwd

etudiant@etudiant-VirtualBox:~$ pwd
/home/etudiant

Action 1.4 – Effacer l’écran  – la commande clear (ou le raccourci Ctrl+l)

etudiant@etudiant-VirtualBox:~$ clear

Action 1.5 – Afficher le contenu du dossier courant – la commande ls

etudiant@etudiant-VirtualBox:~$ ls
Bureau  Documents  examples.desktop  Images  Modèles  Musique  Public  Téléchargements  Vidéos

Action 1.6 – Utilisation d’options d’une commande: ls -l

etudiant@etudiant-VirtualBox:~$ ls -l
total 44
drwxr-xr-x 2 etudiant etudiant 4096 jan  8 08:40 Bureau
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Documents
-rw-r--r-- 1 etudiant etudiant 8980 jan  3 08:54 examples.desktop
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Images
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Modèles
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Musique
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Public
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Téléchargements
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Vidéos

Action 1.7 – Afficher l’aide intégrée à une commande: ls –help

etudiant@etudiant-VirtualBox:~$ ls --help
Utilisation : ls [OPTION]... [FICHIER]...
Afficher des renseignements sur les FICHIERs (du répertoire actuel par défaut).
Trier les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
ne sont utilisées.
Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --all                  ne pas ignorer les entrées débutant par .
  -A, --almost-all           ne pas inclure . ou .. dans la liste
      --author               avec -l, afficher l'auteur de chaque fichier
  -b, --escape               afficher les caractères non graphiques avec des
                               protections selon le style C
      --block-size=TAILLE    convertir les tailles en TAILLE avant de les
                               afficher. Par exemple, « --block-size=M » affiche
                               les tailles en unités de 1 048 576 octets ;
                               consultez le format de TAILLE ci-dessous
  -B, --ignore-backups       ne pas inclure les entrées se terminant par ~ dans
                               la liste
...

Action 1.8 – Référer en dossier courant – ls .
Action 1.9 – Référer au dossier précédant – ls .., ls ../..


Note: À cette étape, nous allons ouvrir l’explorateur de fichier dans le menu des raccourcis pour voir le résultat des prochaines commandes:

Action 1.10 – Créer un nouveau dossier –  la commande mkdir unDossier

etudiant@etudiant-VirtualBox:~$ mkdir unDossier
etudiant@etudiant-VirtualBox:~$

Note: Remarquez l’ajout du dossier dans l’explorateur

Action 1.11 – Changer de dossier – la commande  cd  nomDudossierDeDestination

etudiant@etudiant-VirtualBox:~$ cd unDossier/
etudiant@etudiant-VirtualBox:~/unDossier$

La nouvelle position est affichée dans l’invite de commandes.

Action 1.12 – Créer un fichier vide – la commande touch nomDuFichier

Action 1.13Effacer un fichier – rm nomDuFichier

etudiant@etudiant-VirtualBox:~/unDossier$ ls
unFichier
etudiant@etudiant-VirtualBox:~/unDossier$ rm unFichier
etudiant@etudiant-VirtualBox:~/unDossier$

Action 1.14 – Remonter d’un dossier – cd ..

etudiant@etudiant-VirtualBox:~/unDossier$ cd ..
etudiant@etudiant-VirtualBox:~$

Action 1.15 – Effacer un dossier – rm -r nomDuDossier

etudiant@etudiant-VirtualBox:~$ rm unDossier/
rm: impossible de supprimer 'unDossier/': est un dossier
etudiant@etudiant-VirtualBox:~$ rm -r unDossier/
etudiant@etudiant-VirtualBox:~$

Action 1.16 – Copier un fichier – la commande mv source destination

etudiant@etudiant-VirtualBox:~$ mkdir test
etudiant@etudiant-VirtualBox:~$ touch lisez-moi.txt
etudiant@etudiant-VirtualBox:~$ cp lisez-moi.txt test
etudiant@etudiant-VirtualBox:~$ ls test
lisez-moi.txt
etudiant@etudiant-VirtualBox:~$

Action 1.17 – Renommer un fichier – la commande mv nomDuFichier nouveauNom

etudiant@etudiant-VirtualBox:~$ ls
Bureau     examples.desktop  lisez-moi.txt  Musique  Téléchargements  Vidéos
Documents  Images            Modèles        Public   test
etudiant@etudiant-VirtualBox:~$ mv lisez-moi.txt read-me.txt
etudiant@etudiant-VirtualBox:~$ ls
Bureau     examples.desktop  Modèles  Public       Téléchargements  Vidéos
Documents  Images            Musique  read-me.txt  test
etudiant@etudiant-VirtualBox:~$

Action 1.18 – Utiliser le caractère ~ dans une commande

etudiant@etudiant-VirtualBox:~$ cd /
etudiant@etudiant-VirtualBox:/$ ls
bin    dev   initrd.img      lib64       mnt   root  snap      sys  var
boot   etc   initrd.img.old  lost+found  opt   run   srv       tmp  vmlinuz
cdrom  home  lib             media       proc  sbin  swapfile  usr  vmlinuz.old
etudiant@etudiant-VirtualBox:/$ cd ~
etudiant@etudiant-VirtualBox:~$ pwd
/home/etudiant
etudiant@etudiant-VirtualBox:~$

Action 1.19 – Afficher la documentation d’une commande – man nomDeLaCommande

etudiant@etudiant-VirtualBox:~$ man ln
-------------------------------------------------------------------
LN(1)                                    User Commands                                    LN(1)
NAME
       ln - make links between files
SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       ln [OPTION]... TARGET                  (2nd form)
       ln [OPTION]... TARGET... DIRECTORY     (3rd form)
       ln [OPTION]... -t DIRECTORY TARGET...  (4th form)
DESCRIPTION
       In the 1st form, create a link to TARGET with the name LINK_NAME.  In the 2nd form, cre‐
       ate a link to TARGET in the current directory.  In the 3rd and 4th forms,  create  links
       to  each  TARGET in DIRECTORY.  Create hard links by default, symbolic links with --sym‐
       bolic.  By default, each destination (name of new link) should not already exist.   When
       creating hard links, each TARGET must exist.  Symbolic links can hold arbitrary text; if
       later resolved, a relative link is interpreted in relation to its parent directory.
       Mandatory arguments to long options are mandatory for short options too.
       --backup[=CONTROL]
              make a backup of each existing destination file
       -b     like --backup but does not accept an argument
       -d, -F, --directory
              allow the superuser to attempt to hard link directories (note: will probably fail
              due to system restrictions, even for the superuser)
       -f, --force
 Manual page ln(1) line 1 (press h for help or q to quit)

Action 1.20 – Éditer un fichier – commande nano nomDuFichieÀÉditer

etudiant@etudiant-VirtualBox:~$ nano read-me.txt

Résultat:

Action 1.21 
A) Ajouter le texte suivant dans le fichier:

Il fit de la sorte un assez long chemin…

B) Enregistrer avec Ctrl+O suivi de Ctrl+X pour quitter
Attention – Sous Linux il faut utiliser la touche Ctrl même si votre poste de travail roule sous MacOS.

Il y a plusieurs éditeurs de texte disponibles sous Linux, certains sont plus conviviaux (nano) que d’autres (vi).
Plus tard, nous verrons comment accéder aux systèmes de fichiers du serveur à partir de notre poste de travail (via ssh).
Il sera alors possible d’utiliser l’éditeur de notre choix – par exemple, Atom, Visual Code, Brackets, …

Action 1.21 – Afficher le contenu d’un fichier – la commande cat nomDuFichier

etudiant@etudiant-VirtualBox:~$ cat read-me.txt
Il fit de la sorte un assez long chemin
etudiant@etudiant-VirtualBox:~$

Action 1.22 – Utilisation des caractères * et ?
TODO:
Action 1.23 – Créer un lien symbolique (raccourci) vers un fichier: la commande ln -s nomDuFichier nomDuLien

etudiant@etudiant-VirtualBox:~$ ln -s read-me.txt lisez-moi.txt
etudiant@etudiant-VirtualBox:~$ ls -l
total 52
drwxr-xr-x 2 etudiant etudiant 4096 jan  8 08:40 Bureau
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Documents
-rw-r--r-- 1 etudiant etudiant 8980 jan  3 08:54 examples.desktop
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Images
lrwxrwxrwx 1 etudiant etudiant   11 jan  8 15:38 lisez-moi.txt -> read-me.txt
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Modèles
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Musique
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Public
-rw-rw-r-- 1 etudiant etudiant   40 jan  8 15:24 read-me.txt
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Téléchargements
drwxrwxr-x 2 etudiant etudiant 4096 jan  8 14:55 test
drwxr-xr-x 2 etudiant etudiant 4096 jan  3 09:03 Vidéos
etudiant@etudiant-VirtualBox:~$

La commande ‘ln -s‘ est habituellement utilisée pour référencer un fichier qui est dans un autre répertoire.  Il est aussi possible de définir des liens durs vers un fichier mais cela n’est pas couvert par cet atelier.


Partie 2 – Les droits d’accès au système de fichiers

Linux propose un système relativement simple de droits d’accès aux ressources du système.
Premièrement, le système reconnait l’accès aux fichiers à trois catégories d’utilisateurs:

  1. Le propriétaire du fichier – user
  2. Le groupe propriétaire du fichier – group
  3. Et tous les autres – other

Les droits d’accès du propriétaire d’un fichier (généralement celui qui a créé le fichier) peuvent être différents des droits du groupe propriétaire et des droits de tous les autres.
Par exemple,

Deuxièmement, le système propose une liste courte de droits:
A) Pour un fichier il est possible de:

  1. Lire le contenu d’un fichier – read
  2. Modifier le contenu d’un fichier – write
  3. Exécuter un fichier qui contient un programme (application) – execute

B) Pour un dossier il est possible de:

  1. Voir le contenu du dossier – read
  2. Créer de nouveaux fichiers/dossiers – write
  3. Traverser (cd – entrer à l’intérieur) le dossier – execute

Voici un schéma résumant les concepts de base

Référence: Permissions Unix
Note: Modifier le SUID: chmod u+s temp/
Note: Afficher tous les fichiers avec le ‘sticky bit’:  sudo find /  -perm /1000
Note: Afficher tous les fichiers avec le SUID: sudo find /  -perm /4000


Partie 3 – Modifications de l’accès à une ressource

Linux propose une série de commandes permettant de:

  1. Consulter les propriétaires (ayants droits) et les droits d’accès à un fichier: ls -l
  2. Modifier le propriétaire et le groupe d’un fichier: chown et chgrp
  3. Modifier les droits d’accès à un fichier: chmod
  4. Créer un nouvel utilisateur ou un nouveau groupe: adduser

Pour être en mesure d’expérimenter avec ces notions, nous avons ajouter un nouvel utilisateur à notre système.
Action 3.1 – Créer l’utilisateur ‘toto’

etudiant@etudiant-VirtualBox:~$ sudo adduser toto
[sudo] Mot de passe de etudiant :
Ajout de l'utilisateur « toto » ...
Ajout du nouveau groupe « toto » (1001) ...
Ajout du nouvel utilisateur « toto » (1001) avec le groupe « toto » ...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
Modification des informations relatives à l'utilisateur toto
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
	Nom complet []:
	N° de bureau []:
	Téléphone professionnel []:
	Téléphone personnel []:
	Autre []:
Ces informations sont-elles correctes ? [O/n]
etudiant@etudiant-VirtualBox:~$

Action 3.2 – Tester l’accès au compte ‘toto’ avec la commande ‘login

etudiant@etudiant-VirtualBox:~$ sudo login toto
Mot de passe :
Dernière connexion : mercredi 10 janvier 2018 à 14:52:05 EST sur pts/1
Welcome to Ubuntu 17.10 (GNU/Linux 4.13.0-21-generic x86_64)
toto@etudiant-VirtualBox:~$ users
etudiant etudiant toto
toto@etudiant-VirtualBox:~$ pwd
/home/toto
toto@etudiant-VirtualBox:~$ ls . -l
total 12
-rw-r--r-- 1 toto toto 8980 jan 10 14:42 examples.desktop
toto@etudiant-VirtualBox:~$ cd ..
toto@etudiant-VirtualBox:/home$ ls -l
total 8
drwxr-xr-x 18 etudiant etudiant 4096 jan 10 14:40 etudiant
drwxr-xr-x  3 toto     toto     4096 jan 10 14:52 toto
toto@etudiant-VirtualBox:/home$
toto@etudiant-VirtualBox:/home$ exit
déconnexion
etudiant@etudiant-VirtualBox:~$

Remarquer l’invite qui passe de ‘etudiant@etudiant-VirtualBox:’ à ‘toto@etudiant-VirtualBox:’

La commande ‘exit’ a fermé la session de ‘toto’ et nous sommes retourné à la session de ‘etudiant’.

Action 3.3
– Exécuter la série de commandes suivante:

etudiant@etudiant-VirtualBox:~$ mkdir mesFichiers
etudiant@etudiant-VirtualBox:~$ cd mesFichiers/
etudiant@etudiant-VirtualBox:~/mesFichiers$ touch fichier1 fichier2 fichier3
etudiant@etudiant-VirtualBox:~/mesFichiers$ ls -l
total 0
-rw-rw-r-- 1 etudiant etudiant 0 jan 10 15:20 fichier1
-rw-rw-r-- 1 etudiant etudiant 0 jan 10 15:20 fichier2
-rw-rw-r-- 1 etudiant etudiant 0 jan 10 15:20 fichier3
etudiant@etudiant-VirtualBox:~/mesFichiers$

En analysant les droits d’accès aux fichiers courant, nous constatons que ‘other’ a la capacité de lire le contenu des fichiers.
Nous allons retirer ce droit de lecture à ‘other’.

Action 3.4 – Exécuter la série de commandes suivante:

etudiant@etudiant-VirtualBox:~/mesFichiers$ chmod o-r fichier1
etudiant@etudiant-VirtualBox:~/mesFichiers$ ls -l
total 0
-rw-rw---- 1 etudiant etudiant 0 jan 10 15:20 fichier1
-rw-rw-r-- 1 etudiant etudiant 0 jan 10 15:20 fichier2
-rw-rw-r-- 1 etudiant etudiant 0 jan 10 15:20 fichier3
etudiant@etudiant-VirtualBox:~/mesFichiers$ chmod o-r fichier?
etudiant@etudiant-VirtualBox:~/mesFichiers$ ls -l
total 0
-rw-rw---- 1 etudiant etudiant 0 jan 10 15:20 fichier1
-rw-rw---- 1 etudiant etudiant 0 jan 10 15:20 fichier2
-rw-rw---- 1 etudiant etudiant 0 jan 10 15:20 fichier3
etudiant@etudiant-VirtualBox:~/mesFichiers$

‘fichier?’ veux dire, un fichier dont le nom commence par ‘fichier’ suivi d’un caractère quelconque.


Laboratoire 02

Durée 90 minutes

Les instructions sont dans un dépôt GitHub à l’adresse:
https://github.com/ve2cuy/assemblage-des-medias
Il faut cloner le dépôt dans le dossier de travail de l’utilisateur ‘etudiant’ de votre machine virtuelle Ubuntu.
Une fois le dépôt cloné, il faut suivre les directives dans le fichier ‘directives.txt’.
Note: Travaillez avec deux sessions:


Référence supplémentaire: https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base
Atelier suivant: Installation d’une pile AMP sur un serveur Linux.


Document rédigé par Alain Boudreault – version 2018.01.08