Problema de Traversal do Symlink Linux

0

Estou tentando usar um PENDRIVE USB para aumentar meu caminho atual para a criação de uma grande biblioteca.

Portanto, tenho a ideia de criar um link simbólico no meu programa para uma pasta no pendrive. Para que use o espaço no Pen Drive em vez do meu armazenamento principal.

/home/me/opencv/ < - este é o produto que quero criar /home/me/opencv/build/ < - esta é a pasta de criação.

Neste ponto, não há memória suficiente para construí-lo lá, então criei este link simbólico em /home/me/opencv/

mkdir /media/me/pendrive/opencv/build/

ln -s /media/me/pendrive/opencv/build/  /home/me/opencv/ -s

isso criou um link "build" na pasta /home/me/opencv/ que aponta para o meu pen drive.

O problema aqui é que o diretório também aponta para o pen drive.

cd /home/me/opencv
ls

isto renderiza um número de pastas e arquivos dentro da pasta opencv

Mas se eu fizer isso ...

cd /home/me/opencv/build
ls ..

isto renderiza uma pasta opencv vazia com uma única pasta chamada build.

    
por diy_nunez 19.09.2017 / 16:00

2 respostas

0

Você pode tentar uma montagem bind , supondo que você pode usar sudo ou ter direitos de root. Por exemplo,

mkdir /home/me/opencv/build
mkdir -p /media/me/pendrive/opencv/build
sudo mount -o bind /home/me/opencv/build /media/me/pendrive/opencv/build

Então, quando estiver em /home/me/opencv/build , você verá em .. o conteúdo de /home/me/opencv/ . Use sudo umount /home/me/opencv/build para desfazer a montagem.

    
por 20.09.2017 / 20:24
1

Há uma diferença entre os caminhos de diretório lógico e físico com os quais você se deparou.

cd /home/me/opencv/build

Isso colocará você no diretório lógico /home/me/opencv/build , mas fisicamente você está em /media/me/pendrive/opencv/build , graças ao link simbólico.

ls .. mostrará o conteúdo do diretório pai físico /media/me/pendrive/opencv .

Um caminho de diretório físico é um caminho de diretório lógico com todos os seus links simbólicos resolvidos. Eles são os mesmos se o caminho do diretório lógico não contiver apenas links simbólicos.

Veja também a diferença entre pwd -L e pwd -P enquanto no diretório de criação (e leia o manual pwd ).

cd também tem -L e -P flags (e -L é o padrão).

    
por 19.09.2017 / 16:18