chown
is geweldig als je een superuser bent. Ik had een probleem waar iemand anders make
in mijn directory had gedraaid, en nu bezat ik een aantal bestanden die ik niet kon wijzigen. Hier is mijn workaround die bestanden en mappen behandelt, hoewel het de mappen laat rondslingeren met het achtervoegsel .mkmeowner
als het ze niet kan verwijderen.
- Het volgende script verandert het eigendom van bestanden en mappen die aan het worden doorgegeven om eigendom te zijn van de huidige gebruiker, en probeert om problemen met permissies te omzeilen door een nieuwe kopie te maken van elke map of bestand dat niet het eigendom is van de huidige gebruiker, het originele bestand te verwijderen (of te proberen te verwijderen), en de juiste naam te geven.
- De bedoeling is dat het een afkorting is voor “make me owner”. Ik gebruik geen underscores omdat ze een pijn om te typen zijn.
Voorbeelden:
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Het vereist het volgende script
mkmeownerone
om op je pad te komen.
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