web-dev-qa-db-fra.com

Je suis propriétaire d'un dossier mais je ne peux pas y accéder

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?

4
msmith

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):

  • 4 pour lire.
  • 2 pour écrire.
  • 1 pour exécuter.

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.

5
Eliah Kagan