facile · Durée estimée : 25 min
Comprendre comment Linux protège les fichiers via les
permissions. Savoir lire ls -l, modifier les
droits avec chmod, changer le propriétaire
avec chown.
C'est la base de la sécurité Unix : un fichier mal protégé peut être lu ou modifié par n'importe qui.
ls -l
La commande ls -l affiche les permissions
sous forme de 10 caractères.
ls -l
Exemple de sortie :
-rw-r--r-- 1 user user 512 Nov 20 10:30 notes.txt
drwxr-xr-x 2 user user 4096 Nov 20 10:30 mon_dossier
-rwxr-xr-x 1 user user 128 Nov 20 10:30 script.sh
- r w x r w x r w x
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └─┴─┴── Autres (others)
│ │ │ │ └─┴─┴───────── Groupe (group)
│ └─┴─┴──────────────── Propriétaire (user)
└────────────────────── Type : - (fichier) ou d (dossier)
r = read (lire) → valeur 4w = write (écrire) → valeur 2x = execute (exécuter) → valeur 1- = aucun droit-rw-r--r-- = le propriétaire peut lire et écrire,
les autres peuvent seulement lire.
ls -l dans ton dossier personnel et
identifie au moins 3 fichiers avec des permissions différentes.
-rw-r--r-- ou drwxr-xr-x
devant chaque ligne.
whoami et idPour connaître ton utilisateur actuel et tes groupes :
whoami
id
whoami → userid → uid=1000(user) gid=1000(user) groups=1000(user),27(sudo)
user. Sur un vrai système, tu verras
root ou ton nom.
whoami et note ton UID.
id doit afficher ton UID et tes groupes.
chmodchmod u+x script.sh # ajoute exécution au propriétaire
chmod g-w notes.txt # retire écriture au groupe
chmod o-r secret.txt # retire lecture aux autres
chmod a+r public.txt # ajoute lecture à tout le monde
Les symboles :
u = user (propriétaire)g = group (groupe)o = others (autres)a = all (tout le monde)+ ajoute, - retire, = définitchmod 755 script.sh # rwxr-xr-x
chmod 644 notes.txt # rw-r--r--
chmod 600 secret.txt # rw-------
chmod 777 partage.txt # rwxrwxrwx (⚠️ très permissif)
Calcul rapide des valeurs :
r = 4 w = 2 x = 1
7 = 4+2+1 = rwx
6 = 4+2 = rw-
5 = 4+1 = r-x
4 = 4 = r--
0 = 0 = ---
test.sh avec touch test.sh,
puis rends-le exécutable avec chmod +x test.sh.
Vérifie avec ls -l.
ls -l test.sh doit afficher
-rwxr-xr-x ou similaire (avec un x).
chown
chown (change owner) change le
propriétaire et/ou le groupe d'un fichier.
chown user2 fichier.txt # change le propriétaire
chown user2:group2 fichier.txt # change propriétaire ET groupe
chown -R user2 dossier/ # récursif sur tout le dossier
chown nécessite généralement les droits root
(sudo). Dans la console jslinux, tu es déjà
user, tu ne pourras pas changer le propriétaire
vers un autre utilisateur sans sudo. La
commande est présentée ici pour que tu la connaisses.
sudo chown root:root fichier.txt pour rendre
un fichier système au propriétaire root.
ls -l.
C'est la 3ᵉ colonne de la sortie.
ls -l, la 3ᵉ colonne affiche user
(ton nom d'utilisateur actuel).
Tu as écrit un script hello.sh. Tu essaies
de l'exécuter :
./hello.sh
Erreur classique :
bash: ./hello.sh: Permission denied
Cause : le fichier n'a pas le bit x (exécution).
Vérifie :
ls -l hello.sh
Sortie probable :
-rw-r--r-- 1 user user 32 Nov 20 10:30 hello.sh
Solution :
chmod +x hello.sh
./hello.sh
hello.sh, écris-y
echo "Bonjour", rends-le exécutable et lance-le.
echo 'echo "Bonjour"' > hello.sh
chmod +x hello.sh
./hello.sh
Bonjour.
Quand tu crées un fichier, Linux lui donne automatiquement
des permissions par défaut, calculées à partir de la
umask.
umask
0022
Une umask de 022 signifie :
les nouveaux fichiers auront 644
(666 - 022), les nouveaux dossiers 755 (777 - 022).
umask pour être plus
strict : umask 077 donnera des fichiers
en 600 et dossiers en 700
(privés).
umask et note la valeur. Crée un fichier
et un dossier, et vérifie leurs permissions par défaut
avec ls -l.
644 probablement.
Dossier créé → 755 probablement.
ls -l → voir les permissions
whoami → mon utilisateur
id → mon UID et mes groupes
chmod +x f.sh → rendre exécutable
chmod 644 f.txt → rw-r--r--
chmod 755 script → rwxr-xr-x
chmod 600 secret → rw-------
chown user f.txt → changer propriétaire
umask → permissions par défaut
Valeur Permissions Usage typique
------ ----------- --------------
644 rw-r--r-- fichier texte standard
600 rw------- fichier privé (clés SSH)
755 rwxr-xr-x script, dossier public
700 rwx------ dossier privé
777 rwxrwxrwx ⚠️ à éviter
coffresecret.txt à l'intérieur600ls -l coffre/ que personne d'autre ne peut le lirepublic.txt, mettre 644run.sh, mettre 755ls -l coffre/ doit afficher :
secret.txt en -rw-------,
public.txt en -rw-r--r--,
run.sh en -rwxr-xr-x.