LINUX.ORG.RU

[debian,ln]создание жёсткой ссылки - операция не позволяется


0

1

делаю жёсткую ссылку на директорию из под рута в пределах одной файловой системы (ext3), вывод именно такой: операция не позволяется.

deb-uhba:~# ln -d /storage/uhba/smbshare/mults/Rango/Rango.2011.Blu-ray.1080p.Extended.Cut.x264-EbP.Rus.Ukr.Eng /storage/uhba/rtorrent/Rango.2011.Blu-ray.1080p.Extended.Cut.x264-EbP.Rus.Ukr.Eng
ln: создание жесткой ссылки «/storage/uhba/rtorrent/Rango.2011.Blu-ray.1080p.Extended.Cut.x264-EbP.Rus.Ukr.Eng» => «/storage/uhba/smbshare/mults/Rango/Rango.2011.Blu-ray.1080p.Extended.Cut.x264-EbP.Rus.Ukr.Eng»: Операция не позволяется
Где я лыжи не смазал?

★★

офигенно.

ln --help 

 -d, -F, --directory      позволить суперпользователю создавать жесткие ссылки
                           на каталоги (замечание: вероятно, это не получится
                           из-за системных ограничений, даже для
                           суперпользователя)
а в мане ни слова об этом :(

spunky ★★
() автор топика
Ответ на: комментарий от unC0Rr

Может создаться зацикливание, когда при следовании по жёсткой ссылке происходит переход в папку, содержащую эту же ссылку, но уровнем выше.

ln a a/b, например.

schizoid ★★★
()
Ответ на: комментарий от schizoid

может. Ну вот а я может хочу себе в пятку выстрелить, почему нет? Может мне ещё и однострочник системными ограничениями запретят запускать? Как-то это не по linux-овому.

spunky ★★
() автор топика
Ответ на: комментарий от spunky

Рискну предположить, что при этом становится нереально удалить эту папку. Хотя можно же предусмотреть этот особый случай. Не, не понимаю этого ограничения.

unC0Rr ★★★★★
()
Ответ на: комментарий от schizoid

я хотел и рыбку съесть, и сковородку не помыть :(

spunky ★★
() автор топика
Ответ на: комментарий от unC0Rr

>Хотя можно же предусмотреть этот особый случай.

Конечно, можно.

Можно отслеживать при создании жёсткой ссылки:

* Чтобы исходная директория не была вложена в назначение.

* Чтобы директория назначения не была вложена в исходную.

* Чтобы исходная директория не была корневой.

* Чтобы директория назначения не была корневой.

При удалении рекурсивной (через rm -r, например) можно хранить все иноды директорий пути, и останавливаться при зацикливании (кстати, так симлинки и работают).

Но при этом как-то теряется тот самый «linux-овый» (и юниксовый) приницип KISS.

***

Ну, хорошо, допустим, создана такая циклическая ссылка parent -> parent/child.

Теперь разлинковывается parent, а child теряется - к нему не ведёт ни одного пути из корня.

***

Смотри, сколько проблем вылезло из-за чьего-то желания стрелять себе в ногу.

А ведь симлинки как раз и были созданы, чтобы снять ограничения хардлинков.

schizoid ★★★
()
Ответ на: комментарий от spunky

Уже.

$ sudo rm -rf /
Пароль: 
rm: опасно рекурсивно обрабатывать «/»
rm: используйте --no-preserve-root, чтобы отменить предупреждение об опасности

Schizophrenia
()
Ответ на: комментарий от spunky

А что в этом случае, по твоему, должна выдавать команда pwd? Она не сможет определить текущий путь, поскольку их бесконечно много.

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

если программа не определяет попадание в бесконечный цикл - это повод для сообщения в багтрак, а не для ограничения функциональности, ИМХО. Но аргумент здравый, спасибо.

spunky ★★
() автор топика
Ответ на: комментарий от cvs-255

При удалении рекурсивной (через rm -r, например) можно хранить все иноды директорий пути, и останавливаться при зацикливании (кстати, так симлинки и работают).

с симлинками ведь как-то разобрались?

spunky ★★
() автор топика
Ответ на: комментарий от spunky

> с симлинками ведь как-то разобрались?

Потому что симлинк - это симлинк. А хардлинк это не линк, а _равноправное_ второе имя.

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

как показывает практика - не такое уж и равноправное. У него как минимум нет права на существование в моей системе (по мнению моей же системы)

spunky ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.