Estaba intentando agregar permisos de ejecución a archivos sh en una carpeta. Para eso utilicé por error:
find . -print0 -iname '*.sh' | xargs -0 chmod -v 744
y el resultado fue:
mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)
Ahora sé que el uso correcto para la parte de búsqueda fue
find . -iname '*.sh' -print0
Entonces creé otro hallazgo así:
find . \! -iname '*.sh' -print0 | xargs -0 chmod 600
para poder restablecer los permisos para archivos que no sean sh (sí, veo que algunos archivos tienen 644 permisos, no 600, pero ahora no importa). La salida de este comando es:
chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied
Yo sudo
también lo usé pero aún nada...
Veo que no entiendo los permisos correctamente... Si entiendo correctamente, también necesito x
permisos para el directorio direc
para poder ejecutar comandos en dicho directorio.
Respuesta1
Su find
cmd también encuentra el directorio actual " .
". Los derechos de este directorio se establecerán 600
y, por lo tanto, perderá los derechos para tocar los archivos dentro de este directorio.
Entonces cd ..
, chmod 700
dicho directorio y luego ejecute la reversión find
, que ahora excluye el directorio actual, de esta manera:
find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600