Quero ter certeza de que meu entendimento disso está correto:
- Fazendo um Hard link é criado outro dentry que aponta para o mesmo inode
- Criar um link simbólico é criar um objeto/inode de arquivo completamente novo que aponta para a entrada do outro inode. O sistema de arquivos trata este arquivo de uma maneira especial (redirecionando certas operações para a entrada do outro inode)
Responder1
Correto para um link físico, mas não para um link simbólico. O conteúdo de um link simbólico é apenas uma string. Isso permite que um link simbólico aponte para um sistema de arquivos que não está montado no momento, por exemplo. Um link simbólico é apenas texto; quando o kernel encontra um, ele essencialmente insere o link simbólico no caminho que estava procurando, dividindo-o em pedaços delimitados por barras e procurando para cima .
e ..
conforme apropriado. Links simbólicos não dão permissão extra: as travessias causadas pelos elementos do caminho que vêm do link simbólico obedecem às mesmas restrições de permissão como se o aplicativo tivesse especificado esses elementos do caminho. Um link simbólico tem seu próprio inode (ou pelo menos parece assim - nos bastidores, alguns sistemas de arquivos não permitem que links simbólicos tenham vários links físicos e armazenam os links simbólicos diretamente no diretório que os contém, mas ainda relata um inode número para a lstat
função).
No nível do sistema, a forma como os links simbólicos são tratados depende do tipo de operação. As operações que atuam nas entradas do diretório (por exemplo, renomear, excluir) tratam links simbólicos como qualquer outro arquivo. As operações que atuam no conteúdo do arquivo (por exemplo open
, , chdir
) seguem o link simbólico e atuam no alvo (e relatam um erro se a cadeia de links simbólicos terminar com um link quebrado). Para operações que atuam nos metadados do arquivo (ou seja, no inode), depende: para algumas operações, há um par de funções (por exemplo, stat
/ lstat
), para outras o link simbólico é seguido (por exemplo chmod
, utimes
não há variante de link simbólico no Linux).