Skip to content

Gérer ses Fichiers

Droits d'accès

Dans la plupart des systèmes de fichier, il est possible de limiter les autorisations d'accès à un fichier ou à un répertoire.

Les droits associés sont:

  • Lecture: possibilité de consulter les données du fichier
  • Écriture: possibilité de modifier les données du fichier
  • Exécution: possibilité de faire tourner le programme contenu dans le fichier

On classe les ayant-droits en général en trois catégories:

  • l'utilisateur: personne en train d'effectuer l'accès au fichier
  • le groupe: ensemble nommé d'autorisations, chaque groupe comprenant un ou plusieurs utilisateurs
  • le reste du monde

Par exemple, un fichier peut être en mode lecture/écriture/exécution pour un utilisateur foo, en mode lecture pour les membres du groupe bar et non accessible pour le reste du monde.

En tapant ls -l vous pouvez voir les permissions des fichiers.

ls -l
total 56
-rw-r--r--@  1 moi  staff  20138 10 jul 16:29 LICENSE
-rw-rw-rw-@  1 moi  staff   2260 16 jul 21:43 README.md
drwxr-xr-x  24 moi  staff    768 16 jul 21:41 docs
-rw-r--r--@  1 moi  staff   3842 16 jul 21:43 mkdocs.yml
drwxr-xr-x   6 moi  staff    192 16 jul 21:42 template
drwxr-xr-x   7 moi  staff    224 12 jul 16:18 theme
drwxr-xr-x   6 moi  staff    192 16 jul 18:37 venv

Pour changer les permissions: chmod <permission> <fichier>. Par exemple, changer un fichier de clé SSH en lecture seule .r--------, faire chmod 400 id_rsa

Les permissions sont:

  • r: lecture
  • w: écriture
  • x: exécutable

Les premiers rwx sont pour l'utilisateur, puis le groupe, puis tout le monde.

Exemples:

  • chmod 700: rwx pour l'utilisateur, rien pour les autres
  • chmod 777: rwx pour tout le monde
  • chmod 640: rw utilisateur, r groupe, rien pour les autres.

Dans ces exemples, le premier chiffre concerne l'utilisateur, le deuxième le groupe et le troisième le reste du monde. Chaque chiffre est la valeur en octal correspondant au droit d'accès, le premier bit (poids fort) indiquant la lecture, le deuxième l'écriture et le troisième l’exécution.

Si l'on prend 640, on a donc:

- `6` pour l'utilisateur, qui s'écrit en binaire `110` de qui revient donc à `rw-`
- `4` pour le groupe, qui s'écrit en binaire `100` de qui revient donc à `r--`
- `0` pour le reste du monde soit `---`

Soit un mode résultant de -rw-r-----.

Astuce

Utilisez la calculatrice de votre ordinateur en mode Programmeur pour voir les valeurs binaires.

Le premier caractère des permissions est un d (pour un répertoire) ou un . (pour un fichier)

Vous pouvez aussi changer les droits de manière plus 'lisible' en spécifiant:

  • à qui le changement s'applique: u (utilisateur), g(groupe) ou o (le reste)
  • + ajouter ou - enlever
  • les droits r, w, x
chmod og-rwx

Changer un fichier texte pour qu'il devienne exécutable: chmod +x script.sh. Faites man chmod pour connaître les détails.

Créons un fichier "test.txt"

echo "hello world" > test.txt
ls -l test.txt
-rw-r--r--  1 user  staff  12 17 jul 15:35 test.txt

Enlevons-lui le droit en lecture et écriture

chmod u-rw test.txt
less test.txt
test.txt: Permission denied

Note

Le propriétaire d'un fichier (user dans cet exemple) a toujours le droit de modifier les droits de ce fichier même s'il n'a pas le droit de lecture de ce fichier.

Fichiers cachés

La plupart des systèmes de fichiers ont la possibilité de cacher des fichiers ou des répertoires, en particulier lorsque ceux-ci servent à configurer des programmes: vous n’avez en général pas besoin de voir ces fichiers, sauf lorsque vous voulez changer des paramètres.

La convention dans la majeure partie des systèmes de fichiers est de considérer un nom commençant par un point . comme désignant un fichier caché.

Dans le terminal, pensez à utiliser l'option -a du programme ls pour les voir: ls -a.

ls   
LICENSE     README.md   docs        mkdocs.yml  template    theme       venv

versus

ls -a
.       ..      .git        .gitignore  .vscode     LICENSE     README.md   docs        mkdocs.yml  template    theme       venv

Espaces dans les noms de fichier

Les noms de fichier peuvent contenir des espaces. Dans ce cas, le shell prend le nom du fichier comme 2 (ou plus) noms séparés. Pour que le shell comprenne un nom de fichier avec espaces, il faut entourer le nom du fichier par des guillemets ou des apostrophes (" ou '), ou bien mettre un \ devant chaque espace:

ls mon fichier.txt 
ls: fichier.txt: No such file or directory
ls: mon: No such file or directory

ls 'mon fichier.txt' 
mon fichier.txt

ls mon\ fichier.txt 
mon fichier.txt

S'il manque un " ou ' dans une ligne, alors le shell attend le " ou ' manquant indéfiniment : faites ctrl+c pour en sortir.

Éditer un fichier

Si vous êtes déjà dans un terminal et que vous avez des modifications simples à effectuer sur un fichier, il est souvent inutile de perdre du temps à ouvrir un éditeur de code supplémentaire. Les éditeurs en lignes de commandes sont très nombreux, efficaces et pour tous les goûts.

Pour les débutants,

  • préférez nano (ou pico).

Si vous êtes plus à l'aise,

  • passez sur vim (ou vi)

Espace de stockage

Pour savoir ce qui prend de la place sur votre compte, la commande du affiche la taille des fichiers et répertoires. Par défaut, l'unité est le bloc de 512 octets, donc ajoutez toujours l'option -k pour avoir des Ko (ou -h pour s'adapter à la taille des fichiers).

  • du -k donne l'occupation du répertoire courant et de tous les sous-répertoires
  • du -s -k donne juste l'occupation du répertoire courant
  • du -s -k * donne l'occupation de tous les sous-répertoires visibles(un par un)

La commande ncdu est une application interactive en ligne de commande plus agréable que du mais qui n'est pas toujours installée.

Pour les plus téméraires, ou ceux qui en ont assez de basculer sans cesse du terminal à l'explorateur de fichier de votre système d'exploitation, il existe de nombreux programmes pour gérer les fichiers depuis votre shell. Une petite liste est disponible ici !