NOTE Post Réécriture : Cet article, et bien dâautres, fait parti de la sĂ©rie âScript kiddieâ. Il a Ă©tĂ© Ă©crit il y a plusieurs annĂ©es. Son contenu nâest pas Ă jour et il contient potentiellement des erreurs. Plus dâinformation sur la page de prĂ©sentation de la sĂ©rie.
Continuons sur notre lancĂ©e en abordant ce qui fait toute lâutilitĂ© dâune machine : les processus, la gestion de multiples utilisateurs et la programmation. Au travers de cette partie, nous ferons donc un tour vers Python afin que vous puissiez maĂźtriser un premier langage de programmation. Cela vous permettra de gagner en logique mathĂ©matique et en confiance pour vos projets.
Le super utilisateur
Sur Linux comme sur Windows, il existe la possibilitĂ© dâavoir plusieurs utilisateurs sur la mĂȘme machine. Vous devez probablement ĂȘtre habituĂ© Ă exĂ©cuter des programmes en tant quâadministrateur, eh bien Linux dĂ©livre Ă©galement cette fonctionnalité ; cependant, celle-ci demeure fortement diffĂ©rente.
Sur les machines Linux, lâadministrateur est appelĂ© root. Il possĂšde tous les droits sur le systĂšme, câest dâailleurs de cette facultĂ© quâil tire son nom, root signifiant « racine » en anglais. En effet, le super-utilisateur peut modifier le systĂšme de fichier Ă partir de sa racine et Ă©crire dans nâimporte quel dossier, de ce fait, il est la personne ayant le droit de vie ou de mort sur la machine (ainsi que sur les donnĂ©es de tous les autres utilisateurs).
WARN : Restez toujours bien concentrĂ© lorsque vous utilisez les permissions et les pouvoirs du super-utilisateur. Une petite faute peut rapidement se transformer en un enfer signant lâarrĂȘt de mort du PC.
En tant que simple utilisateur, vos pouvoirs sont limités. Par exemple, tapez ceci :
cat /etc/sudoers
La commande vous renvoie une erreur de permission :
cat: /etc/sudoers: Permission denied
Afin de remédier à ce problÚme, nous allons acquérir les pouvoir du super-utilisateur.
NOTE : Au dĂ©but de cet ouvrage, je vous avais conseillĂ© dâĂȘtre le maĂźtre de votre machine, ou du moins, de la partie sur Linux. Si ce nâest pas le cas, vous aurez beaucoup de mal Ă effectuer les tĂąches en tant quâadministrateur.
Afin dâacquĂ©rir les prĂ©cieuses permissions, il faut utiliser la commande suivante :
su
Le programme vous demande alors de rentrer un mot de passe :
Password:
root@ordinateur:/home/jean#
Vous voilà enfin root !
Ce quâil y a de pratique dans lâutilisation du super-utilisateur sur Linux, câest que vous nâĂȘtes pas obligĂ© dâĂȘtre constamment connectĂ© avec cet utilisateur pour utiliser ses privilĂšges, ce qui est un avantage indĂ©niable au niveau de la sĂ©curitĂ©.
Ainsi, pour obtenir les pleins pouvoirs, il ne suffit que de taper le mot sudo devant nâimporte quelle commande. Par exemple :
sudo cat /etc/sudoers
Lâordinateur vous demandera une nouvelle fois de renseigner votre mot de passe pour continuer. Sâil ne le fait pas, câest que vous avez utilisĂ© les privilĂšges de root il nây a pas si longtemps que ça.
Vous remarquerez que cette fois-ci, le systĂšme ne vous a pas renvoyĂ© dâerreur, tout câest bien passĂ© lors de lâexĂ©cution de la commande car vous aviez les bonnes permissions au bon endroit.
Afin de passer de lâutilisateur au super-utilisateur, on prĂ©fĂ©rera quand mĂȘme cette mĂ©thode qui induit beaucoup moins dâerreurs sur les systĂšmes :
sudo su
De mĂȘme, vous remarquerez le # prĂ©sent Ă la place du $ sur la ligne introduisant votre instruction.
Elle symbolise root, nous la mettrons donc au début des commandes nécessitant de plus amples privilÚges
pour vous indiquer quâil faudra faire appel Ă votre toute puissance.
NOTE : Nâoubliez pas de quitter le mode super-utilisateur dĂšs que vous nâen avez plus besoin. Son utilisation peut ĂȘtre dangereuse sur votre machine, et, quelquâun de malveillant pourrait passer aprĂšs vous et en profiter.
Installer un programme depuis les sources
Maintenant que vous avez obtenu les privilĂšges de root, il est temps dâinstaller vos premiers programmes sur la machine.
Sur nâimporte quelle distribution Linux ouverte au grand public, on utilise ce que lâon appelle un gestionnaire de paquets. Celui-ci va, Ă lâaide dâune base de donnĂ©es regroupant lâensemble des logiciels que vous pouvez installer, retrouver lâadresse du programme que vous dĂ©sirez et exĂ©cuter les instructions pour lâinstaller Ă votre place.
Sur Ubuntu et les machines basĂ©es sur Debian, on utilise apt en guise de gestionnaire. Son utilisation est trĂšs simple, mĂȘme si elle peut parfois sâavĂ©rer complexe lorsquâil faut installer un paquet qui nâest plus disponible sur la base de donnĂ©es. Il faudra alors se battre quelque peu avec le logicielâŠ
Avant toute utilisation, il faut mettre Ă jour la base de donnĂ©es, et le faire assez rĂ©guliĂšrement. Au moins une fois par semaine nâest pas de trop, car une base de donnĂ©es non Ă jour vous redirigera vers des liens dĂ©placĂ©s ou supprimĂ©s.
Ainsi, tapez cette commande pour la mettre à jour :
apt update
NOTE : Cette commande est inefficace si vous avez choisi une autre distribution quâUbuntu ou Debian. Inutile de vous arracher les cheveux pour cela.
Installer un paquet devient alors trÚs simple, il suffit de taper la ligne suivante :
apt install [paquet]
Remplacez paquet par le logiciel que vous désirez, par exemple cmatrix :
apt install cmatrix
Et le tour est joué. Vous pourrez ainsi bénéficier de votre nouveau programme !
Afin dâessayer de mâadresser au plus grand nombre, je vais rajouter des dĂ©tails sur les procĂ©dures dâinstallation sur les autres distributions. Pour les personnes ayant installĂ© Manjaro ou Arch Linux, les commandes seront les suivantes :
Mettre à jour la base de données :
pacman -Syu
Installer un paquet :
pacman -S [paquet]
Les commandes pour désinstaller un paquet sur Ubuntu et Debian sera :
apt remove [paquet]
Et elle ressemblera à ça pour les utilisateurs dâArch et de Manjaro :
pacman -Rns [paquet]
NOTE : En tant quâutilisateur de Debian ou dâUbuntu, vous nâavez pas Ă exĂ©cuter les commandes avec pacman. Et inversement pour les autres avec apt.
NOTE : Si vous ĂȘtes un utilisateur de Fedora, les commandes seront les mĂȘmes quâavec apt, sauf quâici le gestionnaire sâappelle dnf. Par exemple :
dnf install cmatrix
Cette ligne installera cmatrix sur votre systĂšme. Pour plus dâinformations, nâhĂ©sitez pas Ă lire la doc.
Ce quâil y a de pratique sur Linux, câest que les possibilitĂ©s sont infinies dans lâexĂ©cution dâune seule et mĂȘme tĂąche. Le vieux gestionnaire de paquet apt-get avait dĂ©jĂ laissĂ© sa place Ă apt que voici un nouveau concurrent dans la liste des gestionnaires de paquets : Synaptic.
Ce gestionnaire a lâavantage dâĂȘtre disponible sur tous les systĂšmes Linux, mais cela est aussi la raison de sa faiblesse, ses problĂšmes dâoptimisation. Synaptic est lent, trĂšs lent, tout aussi lent quâil est pratique dây installer des paquets. En effet, le logiciel dispose dâune interface graphique en plus de celle par ligne de commande.
Ici pas de base de données à mettre à jour, juste un gestionnaire avec des commandes claires. Par exemple, pour Installer un paquet on utilisera :
snap install [paquet]
Cependant, Synaptic doit ĂȘtre installĂ© au prĂ©alable avec votre gestionnaire de paquets de base, sans quoi il ne fonctionne pas. Lâinterface graphique est-elle beaucoup plus facile Ă apprĂ©hender pour un novice. Je vous laisse faire sa connaissance en tapant, depuis le terminal ou le menu dĂ©marrer, la commande :
gnome-software
NOTE : Ă proprement parler, gnome-software nâest pas snap, mais beaucoup de paquet de snap viennent de cet endroit chaleureux et accueillant.
Si un programme nâest pas installable depuis les sources, il a de fortes chances que vous puissiez le trouver sur GitHub ou sur SourceForge. Dans ces cas-lĂ , de nombreuses mĂ©thodes, ĂŽ combien diffĂ©rentes existent pour installer le logiciel en question. Nous les verrons toutes dans une prochaine partie, car beaucoup nĂ©cessitent des connaissances dans la gestion des permissions propres aux fichiers que nous allons Ă©tudier, et aux utilisateurs qui peuvent les employer.
NOTE : Avant de vous quitter pour cette partie, un dernier petit dĂ©tail doit ĂȘtre fait pour les utilisateurs dâArch et de Manjaro : un accĂšs Ă des dĂ©pots plus important est possible avec AUR. Vous obtiendrez plus dâinformations sur le wiki de Manjaro
Les utilisateurs et les groupes
Pour cette partie, nous allons crĂ©er un utilisateur et changer ses droits. Ă la fin de celle-ci, vous ne serez pas obligĂ©s de garder cette personne inutile. Le restant de cette partie se fera avec root, vous savez donc ce quâil vous reste Ă faireâŠ
Notre ami Jean veut partager notre poste de travail fixe (le sien Ă brĂ»ler suite Ă une mauvaise utilisation des privilĂšges dâadministrateur). Bien Ă©videmment, conscient du risque que peut reprĂ©senter Jean vis-Ă -vis des systĂšmes informatiques quâil peut toucher, vous dĂ©cider de lui crĂ©er un endroit appropriĂ© sur votre systĂšme. Commençons par crĂ©er un utilisateur, pour ce faire, nous utiliserons la commande suivante :
adduser [nom]
Ce qui donnera ici :
adduser jean
Lâordinateur vous demande alors de taper le mot de passe de Jean et de rentrer quelques informations (facultatives) sur lui.
Une fois fait, le dossier personnel de Jean se trouvera dans /home/jean.
Ne vous inquiétez pas pour la faiblesse du mot de passe de Jean, il pourra le changer à tout moment avec la commande suivante :
passwd
En tant quâadministrateur systĂšme, vous pouvez Ă©galement changer son mot de passe en rajoutant son nom derriĂšre la commande :
passwd jean
Jean en tant quâapprenti hacker souhaiterait utiliser la suite de logiciel Metasploit (si vous ne lâavez pas installĂ©, ce nâest pas grave, Metasploit nâest pas lâobjet de notre Ă©tude actuellement) Ă laquelle il a pour habitude de rajouter ses propres programmes (un peu lourd ce Jean, vous devrez penser Ă revoir vos frĂ©quentations). Pour ce faire, il va falloir lui donner la permission dâĂ©crire dans le dossier /opt.
Un problĂšme se pose, si vous donner les permissions du super utilisateurs Ă Jean, il risque de reproduire les mĂȘmes erreurs quâil a commit sur sa propre machine sur la vĂŽtre. Une solution existe, les groupes ! Les groupes sont des listes dâutilisateurs ayant des privilĂšges communs aux membres du groupe.
En tant quâutilisateur, vous faites dĂ©jĂ partie de plusieurs groupes et vous pouvez en voir la liste en tapant :
groups
Je ne mâĂ©tendrai pas sur la liste que vous avez en face des yeux puisquâelle se trouve ĂȘtre diffĂ©rente pour chaque utilisateur et est dĂ©finie par les actions entreprises sur la machine (programmes installĂ©s, privilĂšges obtenus, groupes créés par la suite). De rapides recherches sur internet vous permettront de comprendre Ă quoi servent les groupes auxquels vous ĂȘtes inscrits.
Vous pouvez également visualiser la liste de Jean :
groups jean
CrĂ©ons donc un groupe auquel nous rajouterons Jean Ă lâaide de la commande suivante :
addgroup [nom]
Pour ma part, je vais créer le groupe avec le nom suivant :
addgroup lesbg
Ajouter ce groupe à votre liste personnelle avec cette instruction :
usermod -a -G [group] [utilisateur]
Ce qui donne pour Jean :
usermod -a -G lesbg jean
Maintenant que Jean et moi sommes dans le mĂȘme groupe,
je nâai plus quâĂ dire que le dossier /opt appartient au groupe Ă lâaide de la commande chown :
chown -R [user]:[group] [dossier]
Ce qui donnera lâinstruction suivante dans notre cas :
chown -R :lesbg /opt
Il ne reste plus quâĂ accorder les droits de modifier, exĂ©cuter et lire les fichiers au groupe, ce que lâon va apprendre Ă faire dans la prochaine partie.
NOTE : Nâoubliez pas de supprimer Jean aprĂšs avoir fini, Ă moins que vous ne vouliez quâil vous hante pour lâĂ©ternitĂ©. Cette ressource devrait vous aider.
Changer les permissions pour un fichier
Une fois tous les groupes bien paramĂ©trĂ©s, il va falloir changer les permissions des fichiers que Jean voulait consulter. Cette partie est un peu complexe mais reste lâune des plus importantes.
Elle vous permettra ensuite de repĂ©rer trĂšs facilement, dans un systĂšme de fichier, ce que vous pouvez ou non consulter, exĂ©cuter ou modifier. Pour ceux ayant lu le manuel de la commande ls, ils ont pu remarquer que lâoption -l prĂ©sentez un rĂ©sultat assez particulier :
ls -l
drwxr-xr-x 2 jean jean 4096 avril 13 17:24 jean
Voici le rĂ©sultat que jâobtiens dans mon dossier /home. Dans lâordre :
- La partie qui va nous intéresser tout de suite, à savoir, les permissions que possÚde le fichier (ou dossier, lien).
- Le nombre dâĂ©lĂ©ments prĂ©sents dans ce dossier (. et .. comptent).
- Lâutilisateur ayant la possession de lâĂ©lĂ©ment
- Le groupe ayant la possession de lâĂ©lĂ©ment
- La taille de lâĂ©lĂ©ment en octet (4096 par dĂ©faut pour un dossier)
- La date de modification
- Le nom du dossier (ici, il sâagit du rĂ©pertoire personnel de Jean)
PrĂȘtons attention Ă la partie suivante : drwxr-xr-x Je vais la dĂ©couper en 4 pour vous expliquer Ă quoi correspond ce charabia :
| Type | Droit utilisateur | Droit groupe | Droit des autres |
|---|---|---|---|
d | rwx | r-x | r-x |
Commençons par le type, cette part indique sâil sâagit dâun fichier, dâun dossier ou dâun lien (lâalternative aux raccourcis sur Windows).
Cette case peut prendre trois valeurs : d, l, -.
dveut dire que câest un dossier,lsignifie que câest un lien etâque câest un fichier. Ainsi, en face de nous se trouve un dossier.
Le droit utilisateur est lâensemble des permissions accordĂ©es Ă la personne ayant la possession du dossier. Il sâexprime de la mĂȘme maniĂšre que le droit du groupe (permissions que possĂšde le groupe ayant créé lâĂ©lĂ©ment) et le droit des autres utilisateurs (permissions des utilisateurs nâayant aucuns rapports avec lâĂ©lĂ©ment).
Ils existent trois autorisations que lâon peut accorder Ă un utilisateur (ou un groupe)Â :
- ExĂ©cuter le fichier â (
x) - Lire le fichier â (
r) - Modifier le fichier â (
w) Elles sont classĂ©es de la plus basse Ă la plus hauteâŠ
Quand une de ces lettres est prĂ©sente, cela veut donc dire que lâutilisateur
(ou le groupe) possĂšde cette permission. Dans le cas contraire,
il y aura un tiret (-) Ă la place de la lettre. Lâutilisateur Jean (propriĂ©taire du rĂ©pertoire Jean)
a donc tous les droits sur son répertoire personnel puisque les trois lettres (rwx) sont présentes.
Pour changer les permissions dâun utilisateur sur un Ă©lĂ©ment :
chmod [valeur] [fichier/dossier/lien]
Lâargument [valeur] peut prendre deux formes diffĂ©rentes, nous nâen verrons quâune seule afin dâabrĂ©ger un peu.
Pour faire simple, chaque permission est associée à une valeur numérique. 1 pour exécuter, 2 pour lire et 4 pour écrire (modifier). On peut additionner ces valeurs pour donner de multiples permissions à un utilisateur.
Par exemple, si je veux donner lâaccĂšs Ă la lecture et Ă lâĂ©criture Ă un document, je vais devoir rentrer la valeur 4 (pour la modification) + 2 (pour la consultation) = 6 (lecture + Ă©criture). Ce paramĂštre doit ĂȘtre exprimĂ© avec trois chiffres, le premier reprĂ©sentant les droits du possesseur, le second, ceux du groupe et le dernier, lâaccĂšs accordĂ© aux autres utilisateurs.
Ainsi, la valeur 666 permettra Ă lâutilisateur possĂ©dant le fichier,
au groupe possédant le fichier et à un utilisateur quelconque de pouvoir lire et modifier le fichier.
Elle donnera rw-rw-rw- comme chaĂźne de permission lorsque vous la visualiserez avec ls.
Cependant, nous dĂ©vions un peu de la tĂąche de dĂ©part, offrir Ă Jean lâaccĂšs au dossier /opt.
Histoire de ne pas avoir à recommencer cette opération pour les futurs utilisateurs de notre machine,
on va donner les droits dâaccĂšs au groupe directement
(il nây aura plus quâĂ ajouter la personne dans le groupe pour quâelle ait accĂšs Ă ces fichiers) Ă lâaide des paramĂštres de chmod :
chmod 775 /opt
Je ne peux malheureusement pas couvrir lâentiĂšretĂ© des commandes gĂ©rant les droits des utilisateurs et de leurs groupes ici, faute de temps et dâenvie⊠Je vous recommande cependant, bien que le sujet nâintĂ©resse pas grand monde (moi-mĂȘme ne suis pas en adoration devant ce genre de manipulation), de poursuivre votre apprentissage dans ce domaine. En effet, lorsque vous vous retrouverez Ă exploiter une machine, il sera nĂ©cessaire de faire ce quâon appelle une escalade de privilĂšge, passant de simple utilisateur Ă root. Les quelques connaissances (qui forment dĂ©jĂ une bonne base ceci-dit) qui sont en votre possession ne sont guĂšre suffisantes pour certaines tĂąches, qui certes nâarriveront pas dans lâimmĂ©diat face Ă vous, mais qui pourront tĂŽt ou tard vous poser problĂšme. Le Web est donc votre plus grand ami dans lâenrichissement de vos connaissancesâŠ
Compiler et installer manuellement des programmes
Maintenant que nous avons vu comment changer les permissions des fichiers, des dossiers et des utilisateurs, il est temps de voir la derniĂšre façon dâinstaller des programmes, celle que nous utiliseront assez souvent en raison de la nature des programmes que nous allons installer.
Dans un premier temps, certains programmes possĂšdent un script dâinstallation, ce sont les plus simples Ă ajouter Ă votre logithĂšque. Trouvez le fichier et exĂ©cuter le avec la syntaxe suivante :
./[fichier]
./ suivi du nom du fichier permet de le lancer.
Quelques fois, le développeur ne spécifie pas le langage à utiliser et ./ sera donc inutile. Dans ces cas là ,
en fonction de lâextension du fichier, il va falloir le lancer avec le bon langage (bonne chance).
NOTE : Certains fichiers dâinstallation nĂ©cessitent des droits dâadministrateur.
Si vous ne voyez pas de fichier dâinstallation, peut-ĂȘtre voyez-vous un fichier nommĂ© MakeFile.
Ce dernier sert de base aux instructions de compilation,
il suffit donc de taper les commandes suivantes pour installer le programme :
make && make install
De mĂȘme, parfois ce sera un fichier dont le nom commencera par cmake qui sera prĂ©sent au sein du rĂ©pertoire. Il faut donc utiliser le logiciel cmake :
mkdir build && cd build
cmake ..
Un fichier Makefile devrait ĂȘtre gĂ©nĂ©rĂ© dans le dossier build, alors, vous savez ce quâil vous reste Ă faire pour compiler !
NOTE : Sur beaucoup de systĂšme, make et cmake ne sont pas installĂ©s par dĂ©faut, vous savez ce quâil vous reste Ă faire :
apt install make cmake
Sâil nây a pas de fichier dâinstallation, ni de quoi compiler avec make ou cmake, peut-ĂȘtre y a-t-il de quoi faire avec python. Dans ces cas-lĂ , il y a trois cas de figure pour installer un logiciel Ă©crit en python :
- Il ne nĂ©cessite aucune dĂ©pendance â il peut ĂȘtre directement exĂ©cutĂ©
- Il possĂšde un fichier requierements.txt
- Il possĂšde un fichier setup.py
Abordons le premier cas, celui du fichier requirements.txt. Ce fichier texte pourvu par le dĂ©veloppeur contient toutes les dĂ©pendances python, Ă installer, nĂ©cessaires Ă lâexĂ©cution du programme. Elles peuvent ĂȘtre installĂ©es avec pip.
Mais dans un premier temps, il faudra dâabord installer pip ;)
curl -sSL https://bootstrap.pypa.io/get-pip.py | python3
NOTE : Pour les versions de Python supĂ©rieures Ă la 3.10, pip est prĂ©installĂ© avec le langage de programmation. Pour les autres, vĂ©rifiez bien que la version de Python sur laquelle vous vous apprĂȘtez Ă installer pip est bien la bonne.
Installer un module avec pip (plus de détails sur ce point dans la partie Python) :
pip3 install [modules]
Installer les dépendances du fichier requierements.txt :
pip3 install -r requirements.txt
NOTE : Les modules installĂ©s ne sont pas appliquĂ©s pour tous les utilisateurs. Cela signifie que si vous lâavez installĂ© en root, votre utilisateur normal ne bĂ©nĂ©ficiera pas de ces modules, et inversement.
La deuxiĂšme mĂ©thode que nous devions Ă©tudier, celle du fichier setup.py, est encore plus simple. Il suffit dâexĂ©cuter :
python3 setup.py install && python3 setup.py build
NOTE : Le programme peut avoir besoin des permissions dâadministrateur. De plus, veuillez utiliser la bonne version de python pour procĂ©der. Un programme installĂ© avec python3 ne fonctionnera pas avec python2 et inversement.