À 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.
commande | exemple | description |
---|---|---|
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 |
touch | touch 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 |
cp | cp ./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 -s | ln -s nomFichier nomLien | Cré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 |
users | users cat /etc/passwd | Afficher les utilisateurs connectés au serveur. Afficher tous les utilisateurs du système. |
addgroup | sudo addgroup design | Créer un nouveau groupe |
groups | groups 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. |
delgroup | sudo delgroup design | Effacer un groupe |
chmod | chmod 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 |
umask | umask 002 | Suite à 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 |
uname | uname -a | Afficher des informations sur la distribution Linux |
nano | nano unFichier.txt | Créer et/ou Éditer un fichier |
cat | cat /etc/group | Afficher le contenu d'un fichier |
apt-get | sudo 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 |
wget | wget -c http://wordpress.org/latest.tar.gz | Télécharger un fichier à partir d'Internet |
tar | tar -xvzf latest.tar.gz tar -zcvf nom_archive.tar.gz dossier_a_compresser | Décompresser et désarchiver un dossier. Compresser un dossier |
git | git clone https://github.com/creativetimofficial/bootstrap4-cheatsheet | Télécharger un projet à partir d'un dépôt git * Tester dans une session MacOS |
man | man ls | Consulter 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 sshd | sudo apt-get install openssh-server | Installer le démon de connexion ssh |
service | sudo service --status-all sudo service apache2 status | Afficher tous les services Afficher l'état d'un service |
systemctl | sudo systemctl enable sendmail sudo systemctl disable vsftpd | Activer un service Désactiver un service |
rsync | sudo rsync -avz * root@24.225.129.79:/root/bd-sql | Copier 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 | |
fg | fg | Revenir à la session courante, par exemple, suite à un CTRL+Z |
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.13 – Effacer 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.
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:
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:
B) Pour un dossier il est possible de:
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
Linux propose une série de commandes permettant de:
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.
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