Это защита, добавленная к большинству реализаций rm
для устранения неправильной функции некоторых оболочек (включая оболочки POSIX), где rm -rf .*
рекурсивно удаляет содержание .
и ..
, а также (это было исправлено оболочкой Forsyth и производными (например, pdksh), zsh
и fish
по крайней мере) .
Вы можете использовать rm
, встроенную в zsh
(оболочка, в которой нет этого недостатка).
zmodload zsh/files # to load and enable the builtin version of rm
# and a few other utilities
rm -rf ..
Альтернативно, с GNU find
или совместимым, вы можете сделать:
find .. -delete
Просто для ясности, они удаляют содержимое (рекурсивно) родительского каталога (включая текущий рабочий каталог).
Если вы хотите удалить запись ..
из текущего каталога, как правило, в современных системах, вы не можете этого сделать. .
и ..
всегда существуют, пока каталог, содержащий их, существует и не может быть удален. В некоторых файловых системах они даже виртуальные (не являются физическими записями в файле каталога).
Даже если вам удалось их удалить (например, с помощью debugfs
для редактирования содержимого каталогов вручную), они будут воссозданы при следующей проверке файловой системы (fsck
) выполняется, и некоторые приложения (например, cd
встроенный в оболочки POSIX) даже полностью игнорируют их (cd ..
сбривает один компонент пути с хвоста текущего рабочего каталога, как хранится в $PWD
независимо от того, есть ли ..
в текущем каталоге или нет), а POSIX требует ..
в аргументах пути, передаваемых системным вызовам, для обозначения родительского каталога независимо от того, существует ли фактическая запись каталога с таким именем в текущем ( или соответствующий для таких путей, как dir/../независимо
).
Вы не можете сделать это без разрешения root
или его эквивалента.
Поскольку у вас нет root-прав, лучше всего на данном этапе поговорить с лицом, ответственным за администрирование системы, и попросить его разобраться с этим.
Чтобы изменить владельца файла, необходимо root
.
Это часть механизма безопасности в Unix, который предотвращает доступ обычного пользователя к файлам других пользователей.
Если вы попытаетесь сделать это без root
разрешения -, команда завершится ошибкой с сообщением об ошибке, например.:
chown yourusername /etc/passwd
chown: changing ownership of '/etc/passwd': Operation not permitted
Как dara
, переместите каталог в сторону:
mv dir dir-old
Как lara
, сделайте копию исходного каталога в нужном вам месте:
cp -Ra dir-old dir
Это требует, чтобы у вас были права на запись в родительский каталог, чтобы переместить его в сторону; предположительно, если вам удалось сделать это в первую очередь, то вы это сделаете.
Если вы этого не сделаете, вы можете приблизиться к этому, проделав то же самое с файлами и каталогами внутри каталога. В этом случае пользователь dara
по-прежнему сможет удалить файлы позже. Я не понимаю, как вы вообще могли оказаться в такой ситуации.
Это единственный способ сменить владельца без использования повышенных прав. Он не сможет корректно скопировать некоторые специальные файлы и сломает жесткие ссылки.
Если ничего из этого не работает, лучше tar
файлы на стороне dara
и извлеките их как lara
вместо того, как вы делали это в первый раз.