chown
отлично, если вы суперпользователь. У меня была проблема, когда кто-то еще работал make
в моем каталоге, и теперь у меня были некоторые файлы, которые я не мог изменить. Вот мой обходной путь, который обрабатывает файлы и каталоги, хотя он оставляет каталоги без суффикса, .mkmeowner
если не может их удалить.
- Следующий скрипт меняет владельца файлов и каталогов, переданных ему в собственность текущего пользователя, пытаясь обойти проблемы с разрешениями, создавая новую копию каждого каталога или файла, не принадлежащего текущему пользователю, удаляя (или пытаясь удалить) исходный файл и переименование соответственно.
- Цель состоит в том, чтобы это было сокращение от "сделай меня владельцем". Я не использую подчеркивания, потому что они - боль для печати.
Примеры:
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Это требует, чтобы следующий скрипт
mkmeownerone
был на вашем пути.
mkmeowner:
#!/bin/bash
[ "x$1" == "x-h" ] || [ "x$1" == "x--help" ] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
change ownership of directories or files to current user.
Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done
mkmeownerone:
#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
exit 0
fi
exit 1
man chown
иman chmod
легко ответить на ваш вопрос.