Vous utilisez -664
, utilisez simplement à la 664
place. Et n'utilisez jamaissudo
lorsque vous n'en avez pas besoin. Si c'est votre dossier, vous n'avez pas besoin sudo
:
chmod 644 my_file
Lorsque vous exécutez chmod
avec un -
avant le mode, vous supprimez ce mode. Voir man chmod
(c'est moi qui souligne):
L'opérateur + entraîne l'ajout des bits de mode de fichier sélectionnés aux bits de mode de fichier existants de chaque fichier; - provoque leur suppression ; et = entraîne leur ajout et entraîne la suppression des bits non mentionnés, sauf que les bits d'ID de groupe et d'utilisateur de groupe non mentionnés ne sont pas affectés.
Les chiffres sont les suivants:
- 1: exécuter
- 2: écrire
- 4: lire
Ainsi, un fichier avec des 777
autorisations signifie que tout le monde a le droit de faire les trois, puisque 1 + 2 + 4 = 7, et donc définir les autorisations sur 7 signifie autoriser la lecture, l'écriture et l'exécution.
Si vous commencez avec un fichier dont le mode est 777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
Et maintenant, exécutez chmod -644
, vous supprimerez les bits 644
et vous vous retrouverez avec un fichier dont le mode est 133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
En effet, vous avez supprimé 6 (lecture (4) + écriture (2)) des autorisations du propriétaire, ne laissant que 1 (exécution) défini, et 4 (lecture) du groupe et d'autres autorisations. Le résultat est un fichier avec seulement des autorisations d'exécution (1) pour le propriétaire, et des autorisations d'écriture et d'exécution (vous en désactivez 4, en laissant 1 et 3) pour le reste.
Parce que votre fichier avait vraisemblablement les autorisations par défaut pour les nouveaux fichiers, donc 644
, lorsque vous avez exécuté chmod -644 my_file
, vous avez supprimé tous les bits d'autorisation définis et obtenu un fichier sans autorisations pour personne.
$ ls -l my_file
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file
---------- 1 terdon terdon 0 May 28 13:45 my_file
-
devant 644? Essayezsudo chmod 644 my_file
.-644
supprimera les droits.