en fait, le sudo ne charge pas tous les paramètres de l'environnement de root, et ne positionne pas le répertoire courant ("
cd ~" te deplaces à la racine du home de l'utilisateur courant) donc, tu as l'identité «root», et tu te trouves dans le répertoire racine de «user»
'
id' t'affiche ton identité actuelle, et ton groupe d'appartenance. Ce sont les données primordiales définissant les droits d'accès aux fichiers et dossiers.
Quand on tapes "
ls -l" on a des trucs du style:
- Code: Tout sélectionner
Nokia-N900-42-11:~# ls -lA
-rw-r--r-- 1 root root 1 Jan 7 23:19 .ash_history
-rw-r--r-- 1 root root 412 Sep 17 10:47 .bashrc
-rw-r--r-- 1 root root 129 Jan 27 09:09 .france24
drwx------ 2 root root 160 Dec 27 17:47 .gnome2
-rw-r--r-- 1 root root 202 Sep 17 10:47 .profile
drwx------ 2 root root 264 Mar 16 00:34 .pulse
-rw------- 1 root root 256 Jan 1 2009 .pulse-cookie
À gauche, ce sont les droits, découpés en
1 er caractère : type du fichier (rappel: sous Unix, tout est fichier, donc, le «d» est le détrompeur pour dire que le trucmuche représente un dossier. Il y a d'autres marqueurs, plus rares)
3 caractères : droits du propriétaire
3 caractères: droits du groupe du propriétaire
3 caractères: droits du reste du monde
Les caractères sont:
R - Read
W - Write
X - eXecute
T'en veux encore?
Tout ça se définit avec les commandes :
chown : change le propriétaire et le groupe propriétaire (il y a
chgrp pour ne changer que le groupe) Exemple:
- Code: Tout sélectionner
chown inextenza:local mon_fichier
chmod : change les droits par masque binaire
r vaut 100 donc 4 en décimal
w vaut 010 donc 2 en décimal
x vaut 001 donc 1 en décimal
(remplace les 1 par les lettres, et regarde ce que a affiché ls -l… ohhh, c'est magique

)
(edit spoiler puristes: oui, je sais, en principe, on parle en octal, et il y a un 4ème chiffre pour les «spéciaux» sticky et autres, mais je vulgarise, là, hein

)
Les droit sont donc une addition de ce qu'on veut, un chiffre de 0 à 7 pour le proprio, un autre pour le groupe, et un autre pour le reste du monde
Exemple: je veux garder les pleins pouvoirs sur mon fichier totoro.sh , laisser les droits en lecture et exécution à mon groupe, et ne donner que les droits d'exécution sans pouvoir lire le script, à tous les autres.
Quelle va être la commande?
alllllllez
- Code: Tout sélectionner
chmod 751 totoro.sh
(edit spoiler puriste: j'aime moins la méthode +x -r etc dans le cadre d'un apprentissage

)
Ce qui donnera donc
- Code: Tout sélectionner
-rwxr-x--x 1 user users 0 Mar 16 01:38 totoro.sh
Ayé, tu as assez mal à la bombe pour ce soir?
Non?

Alors, en tant que user (pas root; "
su - user" si tu es connecté en tant que root et que tu as la flemme de changer de session. '
exit' ou la combinaison CTRL+D pour revenir au shell précédent, celui de root) essaye de jouer avec les droits de lecture et d'exécution sur un dossier ("
mkdir dossier_test" pour t'en faire un, puis "
touch dossier_test/fichier_test" pour créer un fichier vide à l'intérieur) et analyse les résultats, sur l'accès au fichier «fichier_test» et au listing du contenu du dossier.

(Note: on peut changer les droits d'un fichier sur lequel on n'a aucun droit, mais qu'on est le propriétaire… ou qu'on est root. Pourquoi? Ça, c'est la prochaine leçon: l'inode

)
Note: tout ça peut (et doit) être fait sans être root: le compte root ne doit être utilisé que ET SEULEMENT QUE en cas de nécessité!