Как изменить имя пользователя без использования root-доступа?

Это защита, добавленная к большинству реализаций 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/../независимо).

0
24.07.2017, 09:42
3 ответа

Вы не можете сделать это без разрешения rootили его эквивалента.

Поскольку у вас нет root-прав, лучше всего на данном этапе поговорить с лицом, ответственным за администрирование системы, и попросить его разобраться с этим.

1
28.01.2020, 02:25

Чтобы изменить владельца файла, необходимо root.

Это часть механизма безопасности в Unix, который предотвращает доступ обычного пользователя к файлам других пользователей.

Если вы попытаетесь сделать это без rootразрешения -, команда завершится ошибкой с сообщением об ошибке, например.:

chown yourusername /etc/passwd
chown: changing ownership of '/etc/passwd': Operation not permitted
1
28.01.2020, 02:25

Как dara, переместите каталог в сторону:

mv dir dir-old

Как lara, сделайте копию исходного каталога в нужном вам месте:

cp -Ra dir-old dir

Это требует, чтобы у вас были права на запись в родительский каталог, чтобы переместить его в сторону; предположительно, если вам удалось сделать это в первую очередь, то вы это сделаете.

Если вы этого не сделаете, вы можете приблизиться к этому, проделав то же самое с файлами и каталогами внутри каталога. В этом случае пользователь daraпо-прежнему сможет удалить файлы позже. Я не понимаю, как вы вообще могли оказаться в такой ситуации.

Это единственный способ сменить владельца без использования повышенных прав. Он не сможет корректно скопировать некоторые специальные файлы и сломает жесткие ссылки.

Если ничего из этого не работает, лучше tarфайлы на стороне daraи извлеките их как laraвместо того, как вы делали это в первый раз.

1
28.01.2020, 02:25

Теги

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