Le mode privilégié est le plus souvent activé en accédant à un compte d'utilisateur privilégié. Nous disons donc que sur un système, nous avons des comptes d'utilisateurs réguliers (utilisateurs réguliers) et des comptes d'utilisateurs privilégiés (utilisateur privilégié). L'utilisateur privilégié est aussi appelé administrateur, admin ou superutilisateur. Sous Linux, l'utilisateur privilégié est appelé root.
Un utilisateur ordinaire ne peut pas effectuer d'actions critiques ; seul l'utilisateur privilégié peut le faire. Par conséquent, nous devrons accéder à l'utilisateur privilégié pour effectuer des actions critiques.
Effectuez les actions suivantes à partir du compte d'utilisateur régulier et voyez qui a besoin d'un accès privilégié. Expliquez pourquoi certains ont besoin d'un accès privilégié.
touch /home/student/a.txt
apt install strace
ip address show
cat /etc/passwd
cat /etc/shadow
touch /etc/test.conf
touch /tmp/my.data
service ssh restart
dmesg
dmesg -c
Supposons qu'il y ait une situation où nous voulons écrire des informations dans un fichier. Disons que nous voulons écrire les informations All for the empire dans le fichier /home/student/zealot.txt. Nous avons deux options :
nano /home/student/zealot.txt
, écrivons les informations All for the empire* puis sauvegardons
Si nous choisissons un fichier auquel l'utilisateur actuel n'a pas accès, l'intuition serait de préfixer les commandes ci-dessus avec sudo
. Autrement dit, dans le cas du fichier /etc/zealot.txt
, nous effectuerions les actions :
/etc/zealot.txt
, écrivons les informations All for the empire puis sauvegardons./etc/zealot.txt
sans redirection. De cette façon, le fichier sera ouvert en mode privilégié.Pour la deuxieme variante:
student@uso:~$ sudo su root@uso:/home/student# echo "All for the empire" > /etc/zealot.txt
Dans cette situation, la deuxième commande est exécutée avec les autorisations du compte privilégié (racine).
Pour la troisième variante, on peut utiliser la commande tee qui reçoit en argument un fichier dans lequel écrire des informations. Le préfixe avec sudo entraînera l'exécution de la commande tee en mode privilégié, c'est-à-dire qu'il ouvrira également /etc/zealot.txt en mode privilégié. La commande utilisée est :
student@uso:~$ echo "All for the empire" | sudo tee /etc/zealot.txt All for the empire
La commande tee
a pour effet d'écrire les informations dans le fichier reçu en argument et sur la sortie standard. C'est pourquoi le message All for the empire apparaît également dans le fichier /etc/zealot.txt
et sur la sortie standard.
La commande tee
en mode ajout.
Dans le formulaire par défaut ci-dessus, la commande tee
écrase le contenu du fichier reçu en argument. Si nous voulons ajouter du contenu au fichier (append), nous utilisons l'option -a
de la commande tee
:
student@uso:~$ echo "All for the empire" | sudo tee -a /etc/zealot.txt
Souvent, nous souhaitons effectuer plusieurs actions critiques, sous la forme d'exécution de plusieurs commandes. Le moyen le plus simple consiste à utiliser un processus shell qui s'exécute en mode privilégié.
Comme nous l'avons vu plus haut, nous utilisons la commande sudo su
pour obtenir un shell privilégié :
student@uso:~$ sudo su root@uso:/home/student#
Une autre façon d'obtenir un shell root consiste à utiliser la commande sudo bash
, avec les mêmes effets que ci-dessus :
student@uso:~$ sudo bash root@uso:/home/student#
Les deux commandes (sudo su
, respectivement sudo bash
) conduisent à exécuter certaines commandes en mode privilégié : la commande su est exécutée en mode privilégié, la commande bash est exécutée en mode privilégié. L'effet est de créer un processus shell Bash qui s'exécute en tant que privilégié ; et donc un shell dans lequel nous pouvons exécuter des commandes privilégiées.
Pour fermer le processus shell exécuté en mode privilégié, nous utilisons les commandes habituelles pour fermer le shell : exit
, logout
ou la combinaison de touches Ctrl+d
. Une fois le processus shell privilégié terminé, nous reviendrons au processus shell d'origine.
sudo su
et sudo bash
tour à tour pour obtenir un shell privilégié. Utilisez ensuite la commande exit
ou la commande logout
ou la combinaison de touches Ctrl+d
pour fermer le shell actuel.sudo su
pour obtenir un shell privilégié. Dans le nouveau shell privilégié, utilisez la commande sudo su
pour obtenir un nouveau shell privilégié. Utilisez deux instances de commandes de sortie du shell (exit ou logout ou Ctrl+d) pour revenir au shell d'origine (non privilégié).L'invite du shell est configurable et peut ne pas fournir d'informations sur l'utilisateur actuel. Pour des raisons de sécurité, nous utilisons des commandes dédiées pour identifier l'utilisateur actuel.
La commande la plus directe, pour afficher le nom de l'utilisateur courant (username), est la commande whoami
:
student@uso:~$ whoami student student@uso:~$ sudo whoami root
L'exécution de la commande whoami
affiche l'utilisateur actuel (student). Le préfixe de la commande avec sudo
entraîne l'affichage du nom de l'utilisateur privilégié (root).
Une commande qui permet d'afficher des informations sur les utilisateurs est la commande id. Une simple utilisation de la commande affiche des informations détaillées sur l'utilisateur actuel :
student@uso:~$ id uid=1000(student) gid=1000(razvan) groups=1000(student),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),128(kvm),130(docker)
Pour l'utilisateur actuel, il affiche :
Les informations relatives à l'identifiant et au nom d'utilisateur sont pertinentes à ce stade. L'identifiant d'utilisateur (UID) est utilisé par le système d'exploitation pour vérifier les autorisations. Le nom d'utilisateur est utilisé par nous, les humains, qui se souviennent plus facilement des chaînes / noms au lieu des chiffres. Il en va de même pour les processus : le système d'exploitation les identifie par un numéro appelé PID (process identifier).
Tout utilisateur possède un identifiant (pour le système d'exploitation) et un nom (pour les humains). Typiquement, le premier utilisateur régulier (non privilégié) sur un système Linux a l'identifiant 1000 ; c'est le cas de l'utilisateur étudiant ci-dessus.
Nous pouvons également utiliser la commande id pour afficher des informations sur les autres utilisateurs du système, par exemple sur l'utilisateur privilégié (root) :
razvan@uso:~$ id root uid=0(root) gid=0(root) groups=0(root) razvan@uso:~$ id -u root 0 razvan@uso:~$ id -un 0 root
Lors de la première exécution de la commande, j'ai affiché des informations sur l'utilisateur root. L'utilisateur a l'UID 0 ; c'est ainsi qu'il est reconnu par le système d'exploitation. Fondamentalement, le nom root est une convention ; ce qui privilégie un processus est la présence de l'UID 0 comme attribut de processus.
Nous pouvons afficher uniquement l'UID d'un utilisateur en utilisant l'option -u
de la commande id
, comme dans la deuxième commande ci-dessus. De même, nous pouvons afficher uniquement le nom correspondant à un UID en utilisant l'option -un
, comme dans la troisième commande ci-dessus.
whoami
et id
pour afficher des informations sur l'utilisateur actuel (root). Utilisez la commande id
pour afficher l'ID de votre utilisateur.daemon
.syslog
.noms_de_users
, et à l'intérieur un fichier nommé users.txt
. Écrivez-y le nom de l'utilisateur actuel et l'UID de l'utilisateur syslog, en utilisant les redirections et les commandes whoami
et id
.Ces utilisateurs sont des utilisateurs du système, non interactifs - c'est-à-dire qu'ils ne sont pas des utilisateurs avec lesquels nous pouvons nous connecter au système.