chown
es genial si eres un superusuario. Tuve un problema en el que alguien más se había ejecutado make
en mi directorio y ahora poseía algunos archivos que no podía modificar. Aquí está mi solución alternativa que maneja archivos y directorios, aunque deja los directorios con sufijo .mkmeowner
si no puede eliminarlos.
- El siguiente script cambia la propiedad de los archivos y directorios que le han pasado para ser propiedad del usuario actual, intentando solucionar problemas de permisos haciendo una nueva copia de cada directorio o archivo que no sea propiedad del usuario actual, borrando (o tratando de borrar) el archivo original y renombrarlo adecuadamente.
- La intención es que sea una abreviatura de "hacerme dueño". No uso guiones bajos porque son difíciles de escribir.
Ejemplos:
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Requiere que el siguiente script
mkmeownerone
esté en su camino.
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
yman chmod
responde fácilmente tu pregunta.