chown
est génial si vous êtes un super-utilisateur. J'ai eu un problème où quelqu'un d'autre avait lancé make
dans mon répertoire, et possédait maintenant des fichiers que je ne pouvais pas modifier. Voici mon contournement qui gère les fichiers et les répertoires, bien qu'il laisse traîner les répertoires avec le suffixe .mkmeowner
s'il ne peut pas les supprimer.
- Le script suivant change la propriété des fichiers et des répertoires qui lui ont été transmis pour qu'ils appartiennent à l'utilisateur actuel, en essayant de contourner les problèmes de permission en faisant une nouvelle copie de chaque répertoire ou fichier n'appartenant pas à l'utilisateur actuel, en supprimant (ou en essayant de supprimer) le fichier original, et en le renommant de manière appropriée.
- Le but est que ce soit une abréviation pour “make me owner”. Je n'utilise pas de traits de soulignement car ils sont difficiles à taper.
Exemples :
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Il faut que le script suivant
mkmeownerone
soit dans votre chemin.
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