[Isenção de responsabilidade: não há intenção maliciosa nesta pergunta, estou tentando entender o comando ln -s para um projeto escolar]
Digamos que eu tenha um sistema de arquivos com minha pasta pessoal, /home/anna
. /home/bob
é uma pasta que não consigo acessar, com um arquivo que não consigo acessar,foo.txt
Posso executar com sucesso ln -s /home/bob/foo.txt
na minha pasta pessoal? É correto presumir que, se eu puder, produzirá um link que não consigo acessar (com as mesmas permissões que foo.txt
)?
E se eu tivesse privilégios de leitura foo.txt
, mas não tivesse acesso /home/bob
?
E o caso inverso, onde eu poderia acessar, /home/bob
mas não ler foo.txt
?
Responder1
Sim,você pode criar um link simbólico paraqualquerlocalização.
Posso executar com sucesso
ln -s /home/bob/foo.txt
na minha pasta pessoal? É correto presumir que, se eu puder, produzirá um link que não consigo acessar (com as mesmas permissões quefoo.txt
)?
Correto. As restrições de acesso do arquivo de destino se aplicam. Se você criar um link simbólico para um recurso restrito, você simplesmente não conseguirá acessá-lo. Nem é necessário que o arquivo de destino realmente exista.
Uma demonstração:
$ 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
E se eu tivesse privilégios de leitura
foo.txt
, mas não tivesse acesso/home/bob
?
Se você não tiver permissões no diretório pai,você não pode acessar o arquivo contido. Portanto, com um link simbólico você ainda não conseguiria acessá-lo. A criação de um link simbólico não afeta as permissões.
E o caso inverso, onde eu poderia acessar,
/home/bob
mas não lerfoo.txt
?
Novamente, você pode criar um link simbólico para ele, mas não acessar o arquivo.