Avez-vous vérifié qu'il a les droits d'exécution sur les répertoires parents ? Sinon, cela ne fonctionnera pas.
Plus précisément, le long du chemin qu'un utilisateur emprunte pour référencer un objet du système de fichiers, tous les répertoires intermédiaires doivent avoir la permission d'exécuter définie pour lui. En pratique, il sera souvent préférable de donner aussi la permission de lecture, car donner seulement la permission d'exécution ne fonctionnerait que si l'utilisateur accédant progresse jusqu'au répertoire désiré sans pouvoir regarder dans ces répertoires intermédiaires, ce qui ne se passe pas comme ça quand on utilise un gestionnaire de fichiers ou Shell la complétion (tab), par exemple.
Si cela ne vous dérange pas que tout le monde ait un accès en lecture+exécution aux répertoires parents, vous pouvez vous contenter d'un fichier chmod o+rx
sur ces répertoires, ou vous devrez chgrp
ces répertoires également et chmod g+rx
.
Ou... OU... vous pouvez utiliser... ACL POSIX !
Vous pouvez utiliser le setfacl
y getfacl
ou utiliser Eiciel ( apt install eiciel
), l'éditeur d'ACL de fichiers de gnome, pour définir ces ACL. Entre autres choses, les ACL POSIX permettent d'accorder/révoquer des droits à des utilisateurs et groupes spécifiques, sans avoir à s'en tenir au modèle de permission traditionnel UNIX "ugo". Plus à la manière de NTFS, si vous ne trouvez pas la comparaison trop obscène.
man acl
peut vous aider, mais man setfacl
semble plus intéressant, car il couvre des parties spécifiques à Linux telles que les ACL par défaut, qui sont héritées par les objets du système de fichiers créés dans un répertoire.
Donc par exemple, si vous voulez donner à l'utilisateur bob les permissions "rwx" sur le répertoire "work", avec les permissions par défaut (héritées) "r", tapez :
setfacl -m u:bob:rwx,d:u:bob:r work
Vous devez toujours donner à Bob les droits de lecture et d'exécution sur tous les répertoires qu'il devra traverser pour atteindre le "travail" (s'il n'a pas déjà ces droits) :
setfacl -m u:bob:rx intermediate_directory
À titre d'information, les ACL POSIX ne sont pas nouvelles. Je me souviens les avoir utilisées sur un système Digital Unix il y a plus de vingt ans. Cependant, le système oubliait de réinitialiser ces ACL sur l'allocation/désallocation de TTY, seulement les droits traditionnels, ce qui permettait quelques exploits à l'époque où les fichiers de périphériques étaient créés statiquement...
EDIT : Au lieu de devoir donner les droits +rx sur les répertoires intermédiaires, vous pouvez remonter le répertoire cible ailleurs sur le système de fichiers. Supposons que vous avez un répertoire "work", dont le chemin absolu est /x/y/z/work, et que vous ne voulez pas modifier les droits sur x, y ou z. Vous pouvez créer un répertoire /shared/work, et y remonter /x/y/z/work, en utilisant :
mkdir -p /shared/work
mount --bind /x/y/z/work /shared/work
Cela ne survivra pas aux redémarrages, donc si vous voulez qu'il persiste, ajoutez la ligne suivante au fichier /etc/fstab :
/x/y/z/work /shared/work none bind
Cela rendra le contenu du répertoire de travail accessible par /x/y/z/work et /shared/work également.
Mais bien sûr, si cela ne vous dérange pas de déplacer /x/y/z/le travail à un autre endroit :
mkdir /shared
mv /x/y/z/work /shared
est le moyen le plus simple et le meilleur.