Si j'ai un dossier racine avec une autorisation restrictive, disons 600, et si les dossiers / fichiers enfants ont une autorisation 777, tout le monde pourra-t-il lire / écrire / exécuter le fichier enfant même si le dossier racine en a 600?
permissions
directory
Ken Li
la source
la source
Réponses:
La règle précise est la suivante: vous pouvez parcourir un répertoire si et seulement si vous disposez d'une autorisation d'exécution.
Ainsi, par exemple, pour pouvoir accéder
dir/subdir/file
, vous devez disposer des autorisations d’exécution surdir
etdir/subdir
, ainsi que des autorisationsfile
pour le type d’accès souhaité. Pour entrer dans les cas critiques, je ne sais pas s'il est universel que vous ayez besoin d'une autorisation d'exécution sur le répertoire actuel pour accéder à un fichier via un chemin relatif (vous le faites sous Linux).La façon dont vous accédez à un fichier est importante. Par exemple, si vous avez des autorisations d'exécution sur
/foo/bar
mais pas sur/foo
, mais que votre répertoire actuel l'est/foo/bar
, vous pouvez accéder aux fichiers/foo/bar
via un chemin relatif, mais pas via un chemin absolu. Vous ne pouvez pas changer en/foo/bar
dans ce scénario; un processus plus privilégié a vraisemblablement été mis en placecd /foo/bar
avant d’aller sans privilège. Si un fichier contient plusieurs liens physiques, le chemin que vous utilisez pour y accéder détermine vos contraintes d'accès.Les liens symboliques ne changent rien. Le noyau utilise les droits d'accès du processus appelant pour les parcourir. Par exemple, s'il
sym
s'agit d'un lien symbolique vers le répertoiredir
, vous devez disposer de l'autorisation d'exécutiondir
pour y accédersym/foo
. Les autorisations sur le lien symbolique lui-même peuvent ou non avoir de l'importance en fonction du système d'exploitation et du système de fichiers (certains les respectent, d'autres les ignorent).La suppression de l'autorisation d'exécution du répertoire racine restreint de fait un utilisateur à une partie de l'arborescence de répertoires (processus qu'un processus plus privilégié doit transformer). Cela nécessite que les listes de contrôle d'accès soient utiles. Par exemple, si
/
et ne/home
sont pas autorisés dans le répertoire personnel dejoe
(setfacl -m user:joe:0 / /home
) et/home/joe
isjoe
, alors,joe
ils ne pourront pas accéder au reste du système (y compris l'exécution de scripts de shell avec/bin/sh
des binaires ou des binaires liés dynamiquement qui doivent y accéder)/lib
. d besoin d'aller plus loin pour une utilisation pratique, par exemplesetfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib
).L'autorisation de lecture sur un répertoire donne le droit d'énumérer les entrées. Donner une autorisation d'exécution sans donner une permission de lecture est parfois utile: les noms des entrées servent de mots de passe pour y accéder. Je ne vois aucune utilité à donner une autorisation de lecture ou d'écriture à un répertoire sans une autorisation d'exécution.
la source
Non. L'autorisation du dossier racine limite l'autorisation des fichiers enfants. Tu peux l'essayer.
J'ai compris:
la source
Vous pouvez rendre le répertoire enfant accessible en écriture, même si le répertoire parent ne l’est pas. Je fais ça pour les groupes.
Par exemple: le répertoire parent appartient au codeur du groupe
répertoire enfant
Vous (tout membre du groupe de codeurs) pouvez toujours écrire dans le répertoire enfant mais pas dans le répertoire parent.
la source
Vous pouvez créer le lien physique pour accéder au fichier même si vous ne disposez pas d'un privilège d'exécution sur le répertoire parent. Mais le problème est que vous devez créer le lien dur avant de perdre votre privilège d'exécution sur le répertoire parent.
la source