Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
raspberrypi:linux:bashp1 [2022/09/01 19:14] – [4. Les utilisateurs, les groupes et les droits] phil | raspberrypi:linux:bashp1 [2024/02/15 18:24] (Version actuelle) – [4. Les utilisateurs, les groupes et les droits] phil |
---|
===== BASH - Découvrir son système d'exploitation ===== | ===== BASH - Découvrir son système d'exploitation ===== |
{{ :raspberrypi:linux:bash.png?nolink&200|}} | {{ :raspberrypi:linux:bash.png?nolink&200|}} |
[Mise à jour le 2/5/2022] | [Mise à jour le 13/3/2023] |
| |
<html><span style="color:red"><strong>En cours de rédaction</strong></span></html> | <html><span style="color:red"><strong>En cours de rédaction</strong></span></html> |
| |
<code bash *.bash> | <code bash *.bash> |
# Exemple | # Exemple : affichage d'un calendrier |
| # Remarque : n'est pas présent par défaut dans le Raspberry Pi, à installer avec sudo apt install ncal |
$ cal -m apr # nom : cal, option : m, argument d'option: apr | $ cal -m apr # nom : cal, option : m, argument d'option: apr |
</code> | </code> |
<callout type="warning" icon="true">Le shell Bash est en permanence associé à un répertoire dans lequel s’exécutent les commandes. Ce répertoire est appelé **répertoire courant**.</callout> | <callout type="warning" icon="true">Le shell Bash est en permanence associé à un répertoire dans lequel s’exécutent les commandes. Ce répertoire est appelé **répertoire courant**.</callout> |
| |
==== 1. La ligne de commande ==== | ==== 1. La ligne de commande ==== |
{{ :raspberrypi:linux:invite2.png?nolink|}} | {{ :raspberrypi:linux:invite2.png?nolink|}} |
| |
=== 1.1 L'invite de commande === | === 1.1 L'invite de commande === |
Lorsque l'on démarre un terminal sur lequel le shell Bash est présent, ont est accueilli avec l’**invite | Lorsque l'on démarre un terminal sur lequel le shell Bash est présent, on est accueilli avec l’**invite |
de commande** appelée **prompt** en anglais. | de commande** appelée **prompt** en anglais. |
| |
{{ :raspberrypi:linux:shell.jpg?nolink&120|}} | {{ :raspberrypi:linux:shell.jpg?nolink&120|}} |
===1.2 Les commandes (généralités) === | ===1.2 Les commandes (généralités) === |
Le shell est une application qui sert d’**interface entre le noyau su système d'exploitation et l’utilisateur**. Il sert à exécuter des commandes qui proviennent d’un terminal (**mode interactif**) ou d’un fichier (**mode script**). Ces commandes peuvent être **internes au shell** ou **externes** au shell. Les commandes externes font appel à des programmes séparés du shell tandis que les commandes internes sont exécutées par le shell lui-même. | Le shell est une application qui sert d’**interface entre le noyau du système d'exploitation et l’utilisateur**. Il sert à exécuter des commandes qui proviennent d’un terminal (**mode interactif**) ou d’un fichier (**mode script**). Ces commandes peuvent être **internes** ou **externes** au shell. Les commandes externes font appel à des programmes séparés du shell tandis que les commandes internes sont exécutées par le shell. |
| |
<code bash *.bash> | <code bash *.bash> |
# La commande interne type suivie du nom d’une commande sert à indiquer le type de la commande | # La commande interne //type// suivie du nom d’une commande sert à indiquer le type de la commande |
| # Exemple |
pi@Pi4Bp8Go:~ $ type echo man | pi@Pi4Bp8Go:~ $ type echo man |
echo est une primitive du shell # type built-in (commande interne) | # Renvoie |
man est /usr/bin/man # commande externe dans le répertoire /usr/bin | echo est une primitive du shell # echo est de type built-in (commande interne) |
| man est /usr/bin/man # man est une commande externe située dans le répertoire /usr/bin |
</code> | </code> |
| |
<callout type="primary" icon="true">//Format// : **commande** **arg1** **arg2** ... **argn**</callout> | <callout type="primary" icon="true">//Format// : **commande** **arg1** **arg2** ... **argn**</callout> |
| |
//Exemples// : la commande date avec et sans arguments | //Exemples// : la commande **date** avec et sans arguments |
| |
<code bash *.bash> | <code bash *.bash> |
</code> | </code> |
| |
La valeur associée à l’option peut être spécifiée dans le même argument mais séparée de l’identifiant d’option via un **caractère délimiteur**. | La valeur associée à l’option peut être spécifiée dans le même argument, mais séparée de l’identifiant d’option via un **caractère délimiteur**. |
| |
//Exemple// : la commande date | //Exemple// : la commande **date** |
| |
<code bash *.bash> | <code bash *.bash> |
</code> | </code> |
| |
<callout type="primary" icon="true">La norme **POSIX** (**P**ortable **O**perating **S**ystem **I**nterface) répond au besoin de compatibilité entre les systèmes d’exploitations qui se trouvent sur les différents équipements informatiques. Elle définit diverses interfaces d’outils, de commandes et d’interfaces pour la programmation en **langage C**.</callout> | <callout type="primary" icon="true">La norme **POSIX** (**P**ortable **O**perating **S**ystem **I**nterface) répond au besoin de compatibilité entre les systèmes d’exploitation qui se trouvent sur les différents équipements informatiques. Elle définit diverses interfaces d’outils, de commandes et d’interfaces pour la programmation en **langage C**.</callout> |
==== 2. Trouver de l'aide ==== | ==== 2. Trouver de l'aide ==== |
La documentation est fournie par les commandes elles-mêmes et l’utilisateur peut y accéder soit au travers de la | La documentation est fournie par les commandes elles-mêmes et l’utilisateur peut y accéder soit au travers de la |
* **Aide depuis la commande** | * **Aide depuis la commande** |
| |
<callout type="tip" icon="true">La plupart des commandes disposent d’une **aide interne** accessible avec **<nowiki>--</nowiki>help** ou **-h**.</callout> | <callout type="tip" icon="true">La plupart des commandes disposent d’une **aide-interne** accessible avec **<nowiki>--</nowiki>help** ou **-h**.</callout> |
| |
//Exemple// | //Exemple// |
apropos (1) - Chercher le nom et la description des pages de manuel | apropos (1) - Chercher le nom et la description des pages de manuel |
</code> | </code> |
| |
==== 3. Système de fichiers et répertoire ==== | ==== 3. Système de fichiers et répertoire ==== |
| |
==== 4. Les utilisateurs, les groupes et les droits ==== | ==== 4. Les utilisateurs, les groupes et les droits ==== |
| |
<callout type="primary" icon="true">Linux est un système **multi-utilisateurs**. Cela signifie que plusieurs personnes peuvent travailler simultanément sur le même OS, en s'y connectant à distance notamment.</callout> | <callout type="primary" icon="true">Linux est un système **multi-utilisateur**. Cela signifie que plusieurs personnes peuvent travailler simultanément sur le même OS, en s'y connectant à distance notamment.</callout> |
| |
* **Organisation des utilisateurs sous Linux** | * **Organisation des utilisateurs sous Linux** |
* **Devenir super utilisateur** | * **Devenir super utilisateur** |
| |
<callout type="warning" icon="true">Pour passer de simple utilisateur à super utilisateur, on utilise la commande **sudo** (**S**ubstitute **U**ser **DO**) puis on entre le mot de passe super utilisateur.</callout> | <callout type="warning" icon="true">Pour passer de simple utilisateur à **super utilisateur**, on utilise la commande **sudo** (**S**ubstitute **U**ser **DO**) puis on entre le mot de passe super utilisateur. (**exit** pour revenir en simple utilisateur)</callout> |
| |
//Exemple// | //Exemple// |
| |
<callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Seul le super utilisateur (**root**) peut créer des utilisateurs et des groupes.</callout> | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Seul le super utilisateur (**root**) peut créer des utilisateurs et des groupes.</callout> |
| |
{{ :raspberrypi:linux:personne.jpg?nolink|}} | {{ :raspberrypi:linux:personne.jpg?nolink|}} |
=== 4.1 Les utilisateurs === | === 4.1 Les utilisateurs === |
**Créer un utilisateur** | **Créer un utilisateur** |
| |
<callout type="primary" icon="true">Lorsqu'on crée un utilisateur, le répertoire personnel portant son nom est automatiquement créé : **/home/**//nom//. Un mot de passe est demandé. Pour des raison se sécurité, ce qui est entré au clavier n'apparaît pas à l'écran.</callout> | <callout type="primary" icon="true">Lorsque l'on crée un utilisateur, le répertoire personnel portant son nom est automatiquement créé : **/home/**//nom//. Un mot de passe est demandé. Pour des raisons de sécurité, ce qui est entré au clavier n'apparaît pas à l'écran.</callout> |
| |
//Commande// | //Commande// |
//Commandes// | //Commandes// |
<code bash *.bash> | <code bash *.bash> |
sudo deluser nom_utilisateur # Supprime l'utilisateur mais pas son répertoire personnel | sudo deluser nom_utilisateur # Supprime l'utilisateur, mais pas son répertoire personnel |
sudo deluser --remove-home nom_utilisateur # Supprime l'utilisateur et son répertoire personnel | sudo deluser --remove-home nom_utilisateur # Supprime l'utilisateur et son répertoire personnel |
</code> | </code> |
sudo passwd nom_utilisateur | sudo passwd nom_utilisateur |
</code> | </code> |
| |
| |
**Afficher la liste des utilisateurs et des groupes** | **Afficher la liste des utilisateurs et des groupes** |
* **Source** : <html><a href="https://www.tutos.eu/?n=1509" target="_blank">tuto.eu</a></html> | * **Source** : <html><a href="https://www.tutos.eu/?n=1509" target="_blank">tuto.eu</a></html> |
<callout type="warning" icon="true">Le fichier **/etc/passwd** contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...).</callout> | <callout type="warning" icon="true">Le fichier **/etc/passwd** contient toutes les informations relatives aux utilisateurs (nom, mot de passe chiffré, UID, GID, nom complet, répertoire home utilisateur, connexion Shell (par défaut /bin/bash)).</callout> |
| |
//Commande// | * **Liste des utilisateurs** |
| //Exemple 1// |
<code bash *.bash> | <code bash *.bash> |
grep bash /etc/passwd | cut -f1 -d: | cat /etc/passwd # ou less /etc/passwd si le fichier comprend plusieurs pages |
</code> | </code> |
| |
| //Exemple 2// |
| <code bash *.bash> |
| grep bash /etc/passwd | cut -f1 -d: # Filtrage et affichage des noms d'utilisateur ayant une connexion bash dans le fichier passwd |
| </code> |
| |
| |
| |
{{ :raspberrypi:linux:groupe.png?nolink|}} | {{ :raspberrypi:linux:groupe.png?nolink|}} |
=== 4.2 Les groupes === | === 4.2 Les groupes === |
<callout type="warning" icon="true">Chaque utilisateur appartient à un groupe. Si on ne définit rien un groupe du même nom que l'utilisateur est automatiquement créé.</callout> | <callout type="warning" icon="true">Chaque utilisateur appartient à un groupe. Si on ne définit rien, un **groupe du même nom** que l'utilisateur est automatiquement créé.</callout> |
| |
//Exemple// | |
<code bash *.bash> | |
| |
</code> | |
| |
**Créer un groupe** | **Créer un groupe** |
| |
//Exemple// | //Commande// |
<code bash *.bash> | <code bash *.bash> |
sudo addgroup nom_groupe | sudo addgroup nom_groupe |
</callout> | </callout> |
| |
//Commande// | //Commandes// |
<code bash *.bash> | <code bash *.bash> |
sudo usermod -g nom_groupe nom_utilisateur # place l'utilisateur nom_utilisateur dans le groupe nom_groupe | sudo usermod -g nom_groupe nom_utilisateur # place l'utilisateur nom_utilisateur dans le groupe nom_groupe |
<code bash *.bash> | <code bash *.bash> |
sudo usermod -g www-data ruche1 | sudo usermod -g www-data ruche1 |
| </code> |
| |
| * **Lister le contenu d'un groupe** |
| //Exemple// |
| <code bash *.bash> |
| cat /etc/group # ou less /etc/group si le fichier comprend plusieurs pages |
| |
| # Exemples d'affichage |
| # www-data:x:33:hickel, leguilloux, bailly, borracino, lefreteur, etc. sont dans le groupe www-data |
| # tsin:x:1029:borracino,lefreteur sont dans le groupe tsin |
| # borracino:x:1030 est dans son propre groupe |
</code> | </code> |
| |
delgroup nom_groupe | delgroup nom_groupe |
</code> | </code> |
| |
| |
**Afficher la liste des groupes** | **Afficher la liste des groupes** |