Cambio de permisos de forma selectiva

En ocasiones queremos cambiar los permisos de un directorio completo, incluyendo todos sus subdirectorios y ficheros. Lo habitual es hacer un cambio de permisos recursivo como:

chmod -R 644 datos/

Con esto pondriamos los permisos: -rw-r–r– Es decir, lectura/escritura para el propietario y lectura para el grupo y los otros. Pero en el caso de que tengamos un subdirectorio dentro de “datos/”, a este también le habremos puesto esos permisos, lo que significa que no podremos entrar en el directorio ya que el permiso de ejecución en un directorio significa que se puede entrar en el.

Esto supone un problema, queremos cambiar los permisos de todos los archivos y subdirectorios de “datos/” pero si lo hacemos como hemos visto asignamos unos permisos a los subdirectorios que no son correctos. La solución:

find data/ -type f -exec chmod 644 '{}' \;
find data/ -type d -exec chmod 755 '{}' \;

Antes de ; va una barra contraria a /, no se pq motivo se pierde al visualizar el post.

Con estos dos comandos estaremos haciendo ‘chmod 644’ solo a los ficheros que esten dentro de “data/” y sus subdirectorios, y se hará ‘chmod 755’ a los subdirectorios de “data/”. Por supuesto se pueden poner los permisos que nos convengan o indicar el directorio que queramos.

Leave a Reply

Your email address will not be published. Required fields are marked *