J'ai un dossier avec mes notes sur le système à l'intérieur.
Je suis connecté en tant qu'utilisateur1
cd masternotes
produit:
bash: cd: mastersnotes: permission denied
whoami
produit: user1
ls -l
produit:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
à l'intérieur du répertoire produit:
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
J'ai exécuté chmod -R 666 masternotes
sur le dossier.
J'ai exécuté chown
à la racine et chgrp
à la racine et à l'utilisateur1.
root peut descendre et entrer dans le dossier et ouvrir le fichier.
utilisateur1 ne peut pas.
Des indices sur ce qui se passe ici?
Ceci est un problème permissions , pas un problème de propriété.
Exécutez les autorisations (en abrégé x
et apparaissant à l'emplacement où le _-
_ est dans _rw-
_) sont visiblement absents des autorisations que vous nous avez indiquées.
Les autorisations d'exécution fonctionnent très différemment pour les répertoires par rapport aux fichiers normaux. Pour les répertoires, les autorisations d'exécution donnent la possibilité d'entrer dans le répertoire (c'est-à-dire d'y cd
ou de l'ouvrir dans un gestionnaire de fichiers). Ils donnent également la possibilité d’essayer d’accéder aux fichiers du répertoire (bien que cela dépende ou non d’autres autorisations, y compris parfois des autorisations des fichiers utilisés).
root
peut entrer dans le répertoire car il n'est pas vraiment lié par des autorisations de la manière habituelle. À bien des égards, les commandes et les applications exécutées en tant que root
essaieront de respecter les autorisations afin de respecter les souhaits de l'utilisateur. Mais root
a le pouvoir d'effectuer toute opération (que le système d'exploitation est capable d'exécuter) sur n'importe quel fichier ou répertoire. Dans un shell root
, cd
entrer dans un répertoire qui ne dispose d'aucune autorisation d'exécution réussira.
La solution au problème consiste à exécuter:
_chmod u+x masternotes
_
Cela donne à (_+
_) le propriétaire de masternotes
(u
) autorisations exécutables (x
) sur le répertoire.
Ensuite, vous pourrez entrer dans le répertoire et tenter d'y accéder en tant qu'utilisateur normal.
Si vous voulez que les membres de son propriétaire de groupe puissent également le faire, vous pouvez également exécuter ceci:
_chmod ug+x masternotes
_
Mais vous êtes probablement le seul membre de votre groupe spécifique à l'utilisateur (à qui appartient le dossier).
La commande chmod
ici pas ne doit être exécutée que root
-- il est délibéré que j'ai pas inclus Sudo
dans l'une ou l'autre commande. Vous possédez le dossier, vous pouvez donc modifier vous-même ses autorisations - vous n'avez pas besoin de root
pour le faire à votre place.
Si le réglage vous intéresse, exécutez-le numériquement , rappelez-vous que pour chaque chiffre ajouté (à partir de zéro):
Par exemple , si vous voulez que tout le monde puisse lire et exécuter some-file
, mais que seul le propriétaire puisse le faire. pour écrire, vous utiliseriez:
_chmod 755 some-file
_
Je recommande FilePermissions dans la documentation de la communauté , pour en savoir plus sur les autorisations de fichiers dans Ubuntu, y compris le bit exécutable et sa signification particulière pour les dossiers.