Puis-je créer un lien symbolique vers un fichier auquel je ne peux pas accéder?

8

[ Avertissement : il n'y a aucune intention malveillante à cette question, j'essaie de comprendre la commande ln -s pour un projet d'école]

Dire que j'ai un système de fichiers avec mon dossier, /home/anna. /home/bobest un dossier auquel je ne peux pas accéder, avec un fichier auquel je ne peux pas accéder,foo.txt

Puis-je exécuter avec succès ln -s /home/bob/foo.txtdans mon dossier d'accueil? Est-il correct de supposer que si je le peux, cela produira un lien auquel je ne pourrai pas accéder (avec les mêmes autorisations que foo.txt)?

Et si j'avais des privilèges de lecture foo.txt, mais pas accès /home/bob?

Qu'en est-il du cas inverse, où je pouvais accéder /home/bobmais pas lire foo.txt?

MyStackRunnethOver
la source
4
Vous pouvez créer un lien symbolique vers pratiquement n'importe quoi, y compris des choses qui n'existent pas.
muru
1
Techniquement, le lien symbolique n'a pas d'autorisations qui lui sont propres, et lsle montrera généralement comme lrwxrwxrwx, il est donc un peu mal de parler des autorisations d'un llink.
Henrik soutient la communauté le

Réponses:

9

Oui, vous pouvez créer un lien symbolique vers n'importe quel emplacement.

Puis-je exécuter avec succès ln -s /home/bob/foo.txtdans mon dossier d'accueil? Est-il correct de supposer que si je le peux, cela produira un lien auquel je ne pourrai pas accéder (avec les mêmes autorisations que foo.txt)?

Correct. Les restrictions d'accès du fichier cible s'appliquent. Si vous créez un lien symbolique vers une ressource restreinte, vous ne pourrez tout simplement pas y accéder. Il n'est même pas nécessaire que le fichier cible existe réellement.

Une démo:

$ ln -s /etc/shadow foo
$ file foo
foo: symbolic link to /etc/shadow
$ cat foo
cat: foo: Permission denied

$ ln -s /etc/nonexistent bar
$ file bar
bar: broken symbolic link to /etc/nonexistent

Et si j'avais des privilèges de lecture foo.txt, mais pas accès /home/bob?

Si vous ne disposez pas des autorisations sur le répertoire parent, vous ne pouvez pas accéder au fichier contenu . Ainsi, avec un lien symbolique, vous ne pourrez toujours pas y accéder. La création d'un lien symbolique n'affecte pas les autorisations.

Qu'en est-il du cas inverse, où je pouvais accéder /home/bobmais pas lire foo.txt?

Encore une fois, vous pouvez créer un lien symbolique vers celui-ci, mais pas accéder au fichier.

Arminius
la source
2
@ 4o2 Puisque c'est correct, je commente ici pour développer. Votre question a plus à voir avec les autorisations que vous avez correctement marquées et bienvenue sur Exchange. Lorsqu'un utilisateur est créé, il reçoit un répertoire sous /homeet est placé dans un groupe du même nom que son nom d'utilisateur, c'est-à-dire que l'utilisateur bob est dans le groupe bob, jusqu'à ce qu'il soit ajouté à d'autres pour empêcher les utilisateurs de lire les fichiers les uns des autres. Autrefois, tous les utilisateurs appartenaient à des utilisateurs de groupe, ce qui permettait l'intention malveillante à laquelle vous avez fait allusion. Pour qu'Anna puisse voir les fichiers de bob, bob doit l'ajouter au groupe bob.
eyoung100