Como contornar a permissão de criação de link físico para diretórios no mesmo sistema de arquivos

0

Estou bem ciente da diferença entre os links simbólicos e hard . Também estou ciente dos perigos de criar hard links para diretórios a>.

No entanto, estou insistindo em criar um link físico para um diretório e todos os seus subdiretórios (na mesma partição).

No entanto, o seguinte não funciona:

root@fab-ux:/home/fab-user/Public
# ln --directory ../Documents/CV/ CV
ln: failed to create hard link ‘CV’ => ‘../Documents/CV/’: Operation not permitted

Existe um parâmetro kernel / File System (Running on EXT4) que me permitirá realizar essa loucura?

Sim, eu posso montar bind, pode linkar arquivos individuais através de um cron job, ... Mas o ponto é que eu quero tanto a conveniência de fisicamente apenas um diretório e todos seus arquivos e a conveniência de fazer upload apenas de diretórios com hard-link no meu diretório público para a nuvem e o software de nuvem detecta links simbólicos e não os suporta e o mais importante de tudo: estou em execução Ubuntu! Não OSX nem Windows: Eu quero que o sistema faça o que eu quiser!

    
por Fabby 04.04.2016 / 22:56

2 respostas

5

Contanto que você permaneça em um kernel atual (é um recurso do kernel em vez de um dos sistemas de arquivos), não há praticamente nenhuma maneira de contornar essas limitações.

% bl0ck_qu0te%

As especificações da base de grupo aberto, edição 7 (excerto)

... Vincular a um diretório é restrito ao superusuário na maioria das implementações históricas porque esse recurso pode produzir loops na hierarquia de arquivos ou corromper o sistema de arquivos. Este volume de POSIX.1-2008 continua essa filosofia ao proibir que link () e unlink () façam isso . Outras funções poderiam fazê-lo se o implementador projetasse tal extensão ...

Como não há mais uma chamada de sistema como link() , que não verifica se o oldpath é um arquivo regular, a única saída pode ser criar uma função semelhante a linkat () fazendo do seu jeito desejado.

    
por cmks 05.04.2016 / 00:40
1

Você não pode criar links físicos para diretórios no linux. Ouvi dizer que o OSX permite isso para a máquina do tempo usar, mas não o Linux. O mais próximo que você pode fazer é cp -l , que criará uma nova árvore de diretórios espelhando o original, mas ligará todos os arquivos regulares.

    
por psusi 03.05.2016 / 00:34