Проблема с sudo во время вывода чего-то в корневой файл [дубликат]

Удаление текущего каталога не влияет на целостность файловой системы или ее логическую организацию. Профилактика . удаление выполняется в соответствии со стандартом POSIX, который гласит на странице руководства rmdir (2) :

Если аргумент пути ссылается на путь, последний компонент которого либо точка или точка-точка, rmdir () завершится ошибкой.

Одно из объяснений можно найти на странице руководства rm :

Утилите rm запрещено удалять точки и точка-точка в именах в , чтобы избежать последствий непреднамеренного выполнение чего-то вроде:

rm -r. *

С другой стороны, явное удаление текущего каталога (т.е. указание его полного или относительного пути) является разрешенной операцией в Unix, по крайней мере, с SVR3, поскольку это было запрещено с Unix версии 7 до SVR2. Это очень похоже на то, что происходит, когда вы удаляете файл, который активно читается или записывается. Процессы, обращающиеся к файлу удаления, продолжают свои операции чтения и записи, как если бы ничего не произошло. После того, как вы удалили текущий каталог процесса, этот каталог становится недоступным, несмотря на его путь, но его индексный дескриптор остается в файловой системе до тех пор, пока процесс не завершится или не изменит свой собственный каталог.

Обратите внимание, что процесс не сможет использовать путь относительно своего текущего каталога для изменения своего cwd (например, cd .. ), потому что больше нет .. запись в текущем каталоге.

Когда кто-то набирает rmdir., они, вероятно, ожидают, что текущая запись каталога будет удалена, но когда каталог удаляется (используя его путь), фактически удаляются три записи каталога, . , .. и сам каталог.

Удаление только . , а не запись в этом каталоге, создаст несовместимый каталог, но, как уже говорилось, это запрещено стандартом.

Как правильно заметил @Emmanuel, есть вторая причина удаления . не допускается. Существует по крайней мере одна POSIX-совместимая ОС (Mac OS X с HFS +), которая с жесткими ограничениями поддерживает создание жестких ссылок на существующие каталоги. В таком случае нет четкого способа изнутри каталога узнать, какую жесткую ссылку предполагается удалить.

-1
16.02.2015, 11:35
0 ответов

Теги

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