Répertoire avec permission + x, parents sans. Quand cela serait-il utile?


11

Disons que j'ai un dossier appelé folderdans le chemin suivant:

my_path = /a/b/c/d/e/folder

et un fichier appelé filedans ce dossier.

Ensuite, disons que j'exécute cette commande pour supprimer les autorisations de groupe sous / a /

> chmod g-rwx -R /a/

Maintenant, disons que je donne des +rxautorisations à folder:

> chmod g+rx /a/b/c/d/e/folder

Ensuite, si un deuxième utilisateur de mon groupe s'exécute:

> ls /a/b/c/d/e/folder

ou

> cat /a/b/c/d/e/folder/file 

elle obtient des erreurs de permission, et autant que je sache, c'est parce que je dois donner g+xaccès à tous les parents de folder. Ma question est alors: quand ou pourquoi serait-il utile de donner la +xpermission à un répertoire dont le parent ne l'a pas ?

Merci


1
Êtes-vous sûr de courir chmod +grx -R /a/b/c/d/e/folder? C'est faux, la bonne façon de l'exécuter est:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
Ne répond pas directement à cette question, mais recommande une lecture de fond: explication des permissions du répertoire
Gilles 'SO- arrête d'être méchant'

Réponses:


6

La plupart du temps, si vous souhaitez bloquer l'accès et l'utilisation d'un répertoire entier (y compris son sous-répertoire), vous pouvez le faire en le supprimant (de manière non récursive) -x. Par conséquent, vous pouvez avoir quitté les sous-répertoires +xsans faire de mal.

Garder les autorisations sur les sous-répertoires peut être utile pour un certain nombre de raisons (en particulier lorsque -xcela ne s'applique pas à tout le monde mais qu'au moins un utilisateur peut toujours faire quelque chose).

Par exemple, vous pouvez bloquer temporairement l'utilisation du répertoire de conteneur, tout en apportant d'autres modifications aux autorisations dans cette structure de répertoire, puis réactiver l'accès à l'arborescence entière en une seule opération (en donnant +xau répertoire de niveau supérieur).

Vous pourriez également avoir une situation où un script (pas nécessairement exécuté par le propriétaire) sauvegarde l'arborescence de répertoires dans un emplacement temporaire (qui ne devrait pas être lisible par d'autres) et place tout dans un fichier tar, en préservant les paramètres d'autorisation du contenu du répertoire.


7

Vous avez besoin des autorisations + x sur tous les répertoires parents pour accéder au CD ou accéder à un fichier dans un répertoire.

Vous avez besoin des autorisations + r dans les répertoires pour répertorier les fichiers. Voici donc un exemple:

vous pouvez émettre ces commandes pour obtenir quelques réglages:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Sans droits:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Avec exécution uniquement

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Maintenant, lisez:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Cette partie peut être un peu déroutante, mais avec seulement lecture et sans exécution, vous pouvez réellement lister les fichiers dans le répertoire, mais pas lire les métadonnées inodes, donc vous obtiendrez une autorisation refusée mais pourrez toujours voir la liste des fichiers dans un répertoire comme ci-dessous ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Merci @skrewler. Vous avez dit: "Vous avez besoin de + x autorisations sur tous les répertoires parents pour créer un CD ou accéder à un fichier dans un répertoire", ce que je pensais. Ma question est alors: pourquoi voudriez-vous jamais donner l'autorisation + x à un répertoire dont les parents n'ont pas l' autorisation + x?
Amelio Vazquez-Reina

La seule chose à laquelle je peux penser, c'est si vous voulez faire un montage de liaison directement là, en contournant les répertoires parents sans les autorisations d'exécution. Si cela n'a pas de sens, je vais vous montrer un exemple.
skrewler

Ce qui précède aurait dû être plus clair. Un utilisateur root disposant des autorisations sur tous les répertoires parents pourrait effectuer ce montage de liaison pour permettre à d'autres utilisateurs d'accéder au répertoire. Puisqu'ils pouvaient atteindre / a / b / c / d / e là où seuls d ou e avaient une exécution globale, vous pourriez faire un montage de liaison à partir de / mnt / d -> / a / b / c / d / e et un utilisateur pourrait atteindre en allant au point de montage. C'est la même idée que de créer un lien dur vers un endroit profond d'une arborescence de répertoires qui, autrement, serait inaccessible. Les liens symboliques ne fonctionnent pas comme ça cependant, un montage de liaison est nécessaire.
skrewler

2

Vous souhaitez utiliser des +xautorisations non récursives dans la situation que vous avez donnée:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Cela suppose que l'utilisateur est membre du groupe de chaque répertoire. Sinon, vous devrez le faire chmod o+xpour ces répertoires.)

Pour qu'un utilisateur ls /a/b/c/d/e/folderréussisse, il doit disposer d'une autorisation d'exécution sur chaque répertoire du chemin d'accès et d'une autorisation de lecture sur folder.

Si tu l'as fait

chmod g+x -R /a

cela fonctionnerait, mais vous accorderiez au groupe une autorisation d'exécution pour chaque fichier et répertoire sous / a. C'est inutile, et dans le cas des fichiers, probablement faux.


1

Dans la situation particulière à laquelle vous êtes confronté, le problème est que même s'il folderdispose des autorisations appropriées pour être accédé par un utilisateur de votre propre groupe, si l'un des dossiers parents de foldern'est pas accessible à cet utilisateur, il ne pourra pas accéder à l'intérieur (celui qui est appelé folderdans votre exemple).

Si vous exécutez:

chmod g-rwx -R /a/

alors aet tous ses enfants auront cette permission.

Lorsque vous exécutez:

chmod g+rx -R /a/b/c/d/e/folder

alors folderet tous ses enfants auront également cette autorisation. Mais, avec cette commande plus tard, les dossiers a/, a/bet ainsi de suite jusqu'à ce que a/b/c/d/ene changera pas leurs autorisations.


0

Le cas commun pour supprimer le bit x sur les répertoires est de verrouiller les utilisateurs dans leurs répertoires personnels. Les shells restreints ont la possibilité de ne pas permettre cdde référencer des chemins absolus et de ne pas autoriser l'exécution de programmes utilisant des chemins absolus. Ils ne peuvent pas non cd ..plus accéder au répertoire parent de leur répertoire personnel et sont donc effectivement verrouillés et incapables d'exécuter des programmes qui ne sont pas dans $ PATH.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.