Как обойти разрешение на создание жесткой ссылки на каталоги в одной файловой системе

Я хорошо знаю разницу между символическими и жесткими ссылками. Мне также известно об опасности создания жестких ссылок на каталоги .

Тем не менее, я настаиваю на создании жесткой ссылки на каталог и все его подкаталоги (в том же разделе).

Однако следующее не работает:

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

Есть ли параметр ядра / файловой системы (работающий на EXT4), который позволит мне выполнить эту глупость?

Да, я могу смонтировать bind, могу жестко связать отдельные файлы с помощью задания cron, ... Но дело в том, что я хочу и физически, и только один каталог и все его файлы и удобство загрузки только определенных жестко связанных каталогов из моего публичного каталога в облако, а облачное программное обеспечение обнаруживает символические ссылки и не поддерживает их , и самое важное: Я работаю в Ubuntu ! Ни OSX, ни Windows: я хочу, чтобы система делала то, что я хочу!

1
задан 13 April 2017 в 15:24

2 ответа

Пока Вы остаетесь на текущем ядре (это - функция ядром скорее затем одна из файловой системы) нет почти никакого пути вокруг этого ограничений.

Ограничения жестких ссылок

Предотвратить циклы в файловой системе и сохранить интерпретацию .. последовательный (родительский каталог), много современных операционных систем не позволяют жесткие ссылки на каталоги. System V UNIX позволила им, но только у суперпользователя было разрешение сделать такие ссылки.

Открыть Group Base Specifications Issue 7 (выборка)

... Соединение с каталогом ограничивается суперпользователем в большинстве исторических реализаций, потому что эта возможность может произвести циклы в файловой иерархии или в других отношениях поврежденный файловая система. Этот объем POSIX.1-2008 продолжает ту философию путем запрещения ссылки (), и удалите связь () с выполнением этого. Другие функции могли сделать это, если бы конструктор разработал такое расширение...


Поскольку больше нет системного вызова как link() то, которые не делают, проверяет oldpath быть регулярным файлом, единственный выход может создавать подобную функцию к linkat () выполнение его Ваш желаемый путь.

4
ответ дан 14 April 2017 в 01:24
  • 1
    Сообщите нам, какой драйвер был установлен, если проблемы больше не происходит путем выполнения команды nvidia-smi. – Ayoub E. 19 August 2017 в 23:56

Вы не можете создать жесткие ссылки на каталоги в Linux. Я услышал, что OSX позволяет это, чтобы машина времени использовала, но не Linux. Самое близкое, которое можно сделать, cp -l, который создаст новое дерево каталогов, зеркально отражающих исходную, но жесткую ссылку все регулярные файлы.

1
ответ дан 14 April 2017 в 01:24
  • 1
    I' m использование 375,66 драйверов и вещей являются гладкими для 5 + дни теперь. Больше замораживания - спящий режим и пробуждение прекрасны (с некоторыми визуальными артефактами после пробуждения, но они уходят, когда я перемещаю рассматриваемую область). Это с GeForce 840M. – Nikola Ivanov Nikolov 21 August 2017 в 10:20

Другие вопросы по тегам:

Похожие вопросы: