chown
est génial si vous êtes un super utilisateur. J'ai eu un problème où quelqu'un d'autre avait exécuté make
dans mon répertoire, et possédait maintenant des fichiers que je ne pouvais pas modifier. Voici ma solution de contournement qui gère les fichiers et les répertoires, bien qu'elle laisse les répertoires traîner avec le suffixe .mkmeowner
s'il ne peut pas les supprimer.
- Le script suivant change la propriété des fichiers et répertoires qui lui sont passés 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 qui n'appartient pas à l'utilisateur actuel, en supprimant (ou en essayant de supprimer) le fichier original, et en le renommant de manière appropriée.
- L'intention est que ce soit une abréviation de "make me owner". Je n'utilise pas d'underscores parce que c'est pénible à taper.
Exemples :
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Il nécessite le script suivant
mkmeownerone
d'être sur 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