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) ouo
(le reste) +
ajouter ou-
enlever- les droits
r
,w
,x
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"
Enlevons-lui le droit en lecture et écriture
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
.
versus
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
(oupico
).
Si vous êtes plus à l'aise,
- passez sur
vim
(ouvi
)
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épertoiresdu -s -k
donne juste l'occupation du répertoire courantdu -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.
Naviguer dans ses fichiers
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 !