User Tools

Site Tools


tuto:4

Les droits sur les fichiers

Par quoi commencer ?

Euh…

Allez on va parler des

Valeurs possibles

  • lecture (on peut lire le contenu du fichier ou dossier)
  • l'ecriture (on peut ecrire dans le fichier ou dossier)
  • exécution (on peut lancer le programme si c'est un exécutable)

On commence avec la prise de tete avec le fait qu'un fichier peut etre executable mais pas un dossier donc pour un dossier le bit correspondant donne le droit de lister le contenu car on peut tres bien voir un dossier mais ne pas pouvoir voir ce qu'il y a dedans.

les valeurs

  • lecture = 4 (r comme read)
  • ecriture = 2 (w comme write)
  • exécution = 1 (x comme execute)

on donne des valeurs à un fichier et on les additionne.

les ayant droit

il y en a 3 (universale, sony et warner) mais ça c'est dans la musique

sous linux c'est

  • le propriétaire (u) du fichier (celui qui a créé le fichier ou à qui on a donné le fichier)
  • le groupe (g) (les utilisateurs peuvent etre mis dans des groupes d'utilisateurs)
  • tous les autres (o) (ne fait pas partie du groupe et n'est pas le owner)

quand on donne des droits à un fichier, on commence par le owner suivi par le groupe puis par les autres.

Concretement

Quand on fait un ls -al on voit que les droits sont marqués avec des rwx

Par exemple, si je vais dans mon home, je vois cela

drwxr-xr-x  3 ssm2017 ssm2017 4.0K Feb 13 02:37 .
drwxr-xr-x 11 root    root    4.0K Feb 13 22:24 ..
-rw-------  1 ssm2017 ssm2017   76 Feb 13 02:05 .bash_history
-rw-r--r--  1 ssm2017 ssm2017  220 Feb 13 01:17 .bash_logout
-rw-r--r--  1 ssm2017 ssm2017 3.4K Feb 16 23:07 .bashrc
-rw-r--r--  1 ssm2017 ssm2017  675 Feb 13 01:17 .profile
-rw-r--r--  1 ssm2017 ssm2017  675 Feb 13 01:17 tutu
en partant de gauche à droite, on a proprietaire, groupe et user

donc pour le fichier .bash_history on voit que le owner a le droit de l'ecrire et lire. Si on additionne les valeurs, on a r = 4 et w = 2 et rien pour le reste donc le fichier a les droits 600.

par contre le fichier tutu on voit que le groupe et n'importe qui a le droit de le lire. Si on additionne les valeurs, on a 6 pour le proprietaire, 4 pour le groupe et 4 pour les autres donc 644

Comment changer les droits ?

la commande pour changer les droits est

chmod
admettons qu'on ne veut plus que tout le monde puisse voir le contenu de tutu on utilise
chmod 640 tutu
ce qui donnera

-rw-r-----  1 ssm2017 ssm2017 3.4K Feb 16 23:07 tutu

on peut utiliser le parametre -R dans le cas ou on veuille assigner les valeurs pour des sous dossiers (R = récursif).

On a vu comment changer les valeurs avec des chiffres (je prefere) mais on peut utiliser des lettres (pour les artistes)

chmod u=rw,g=r tutu
on peut aussi utiliser des increments ou decrements

chmod ug+r,u+w tutu

Comment changer le owner ?

Quand on a les permissions necessaires, on peut changer le owner (propriétaire) d'un fichier ou dossier. Seul l'utilisateur root peut utiliser la commande chown.

La commande est

chown

le premier parametre est le nom du user puis deux points puis le nom du groupe. (on peut aussi utiliser -R si on veut que ce soit récursif dans les sous dossiers)

chown toto:titi tutu
donne le fichier tutu à l'utilisateur toto et au groupe titi

-rw-r-----  1 toto titi 3.4K Feb 16 23:07 tutu

donc avec ces droits, seul l'utilisateur toto peut lire et ecrire dedans, les utilisateurs etant dans le groupe titi peuvent lire le contenu et les autres ne peuvent ni le voir ni y ecrire dedans. (donc si ssm2017 ne fait pas partie du groupe titi, il est mal)

Les groupes

Comme on vient de voir, le premier en partant de la gauche est le user et le second est le groupe.

Par defaut, quand on crée un utilisateur sous Debian, un groupe du meme nom est créé.

On peut tres bien ajouter un utilisateur à un groupe.

Par exemple, je peux creer le groupe “opensimeros” sur le serveur et ajouter des users dedans avec

addgroup ssm2017 opensimeros
donc si je change le propriétaire du fichier tutu avec
chown toto:opensimeros tutu
ce qui donnera
-rw-r-----  1 toto opensimeros 3.4K Feb 16 23:07 tutu
ssm aura maintenant le droit de lire le contenu car il fait partie du groupe opensimeros.

Les utilisateurs n'ayant pas les droits root peuvent changer le groupe d'un fichier ou dossier avec la commande chgrp

chgrp opensimeros tutu

Le droit d'exécution

Un fichier peut etre un executable (.exe ou .com) sous windows et ce que l'on veut sous linux ou osx.

On peut suprimer ou ajouter le droit d'exécution sur un fichier.

Par exemple, je cree un script bash qui se nomme pouet et qui contient un script qui dit “coucou”.

Pour cela, je lance

nano pouet
et dedans je mets
#!/bin/bash
echo "coucou"
puis je sauvegarde et je quitte.

par defaut, le fichier pouet sera en 644 donc on a

-rw-r--r-- 1 ssm2017 ssm2017    0 Feb 17 01:51 pouet
si on veut le lancer, ça nous dit

ssm2017@atelier-fg:~$ ./pouet
-bash: ./pouet: Permission denied
car il n'a pas le bit d'exécution

pour le rendre exécutable, on lance

chmod 744 pouet
ce qui rend le fichier exécutable seulement pour le owner (si on veut le rendre exécutable aussi pour le groupe, on fera un chmod 774)

donc on relance et ca donne

ssm2017@atelier-fg:~$ ./pouet
coucou
Le bit d'exécution pour les dossiers permet d'autoriser le listing du contenu.

Si on crée un dossier temp dans son home avec la commande

mkdir
on utilise

mkdir temp
ce qui va créer un dossier ayant pour droits par défaut 755

ce qui veut dire que

  • le owner peut lire, ecrire et voir le contenu,
  • le groupe peut lire et voir le contenu
  • et les autres peuvent lire et voir le contenu

ensuite on decide qu'il appartient a ssm2017 et au groupe opensimeros

chown ssm2017:opensimeros temp
puis on lui donne les droits

chmod 750 temp
donc

  • le owner pourra lire, ecrire, et lister le contenu
  • le groupe pourra lire et lister le contenu
  • et les autres ne pourront rien faire

Permissions spéciales

On va parler de bit (ça devrait vous plaire… ou pas)

Il y en a 3 :

  • user id bit
  • group id bit
  • sticky bit

User ID bit

On s'en fout (matez google si vous voulez)

Group ID bit

Celui ci est utile dans le cas d'un serveur web par exemple ou OpenSimulator selon les cas.

Il ne fonctionne que sur les dossiers et on l'assigne comme cela

chmod 2775 temp
ceci voudra dire que peu importe le fichier qui sera créé dans le dossier temp, le groupe sera le meme que le dossier.

Par exemple, si le dossier appartient au groupe opensimeros, tous les fichiers crées dedans auront aussi le groupe opensimeros meme si c'est un autre user qui le crée.

Sticky bit

Le sticky bit permet de donner le droit de suppression seulement au user qui a créé le fichier.

Par exemple, si dans le dossier temp qui appartient au groupe opensimeros, toto cree un fichier, l'utilisateur ssm2017 pourra le supprimer si il a le meme groupe et bien sur si le groupe a le droit en ecriture sur le fichier.

Pour eviter cela, on met le sticky bit au dossier et seul l'utilisateur ayant créé le fichier aura le droit de le supprimer meme si les autres ont le droit en ecriture sur le fichier (par exemple le dossier /tmp de linux a le chmod 1777).

il ne fonctionne que sur les dossiers et on l'assigne comme cela

chmod 1775 temp

tuto/4.txt · Last modified: by 127.0.0.1