revisar y modificar permisos de archivos y directorios

Andres Ovalle Gahona aovalle en debianchile.cl
Lun Mar 28 13:37:04 CLST 2011


El 28 de marzo de 2011 12:37, Victor Hugo dos Santos
<listas.vhs en gmail.com>escribió:

> Hola,
>
> tengo el siguiente problema...
> necesito revisar los permisos de ciertos directorios y archivos y en
> caso de estar erróneos, modificarlos.
> la estructura de directorios que tengo es parecida a esta:
>
> =========================
> /home/*/archivos/directorio1
> /home/*/archivos/directorio2/archivo1
> /home/*/archivos/directorio2/archivo2
> /home/*/archivos/directorio2/archivo3
> /home/*/archivos/directorio2/archivo4
> /home/*/archivos/directorio3/archivo1
>
> /home/*/archivos/publico/archivo1
> /home/*/archivos/publico/pdf/archivo1
> /home/*/archivos/publico/pdf/archivo2
> /home/*/archivos/publico/image/archivo1
> /home/*/archivos/publico/image/archivo2
>
> /home/*/archivos/directorio3/pdf/archivo1
> /home/*/archivos/directorio3/pdf/archivo2
> =========================
>
> - todos los directorios deben de tener permisos 750
> - todos los archivos deben de tener permisos 640
> - excepto los directorios y subdirectorios que están en
> /home/*/archivos/publico/ que deben de tener permisos 770 y los
> archivos dentro de estés directorios con permisos 660
>
> a principio estaba utilizando find para revisar y modificar los
> permisos, por ejemplo
>
> find /home -type d -not -name publico -perm 750  -exec chmod 750 {} \;
> find /home -type d -name publico -not -perm 775  -exec chmod 775 {} \;
>
> pero luego, me di cuenta de que esto no funcionaba bien, por el tema
> de los subdirectorios (pdf/image) dentro de publico..
> podría modificar la linea de arriba para algo semejante a esto:
>
> find /home -type d -not -name publico -not -name pdf -not -name image
> -perm 750  -exec chmod 750 {} \;
> find /home -type d -name publico -name pdf -name image -not -perm 775
> -exec chmod 775 {} \;
>
> pero luego, me enredo aun mas, al ver que existen directorios con
> nombres "pdf" y "image" dentro de otros subdirectorios (que no es
> publico) que deben de tener permisos 750 !!! :-(
>
> imagino que podría hacer un bucle que entrara en cada uno de los
> directorios principales y buscara la ruta de upload/image/pdf usando
> -maxdepth o -mindepth !!!
> pero antes de complicar mas la cosa, pregunto si alguno de ustedes
> tiene alguna idea/solución mas simples para esto ?
>
> salu2 y atetno
>
> --
> --
> Victor Hugo dos Santos
> Linux Counter #224399
>

- todos los directorios deben de tener permisos 750
- todos los archivos deben de tener permisos 640
- excepto los directorios y subdirectorios que están en
/home/*/archivos/publico/ que deben de tener permisos 770 y los
archivos dentro de estés directorios con permisos 660


Segun esto, entiendo que si es del tipo /home/*/archivos/directorio1 cumple
con directorio 750 y archivo 640. Pero si es del
tipo /home/*/archivos/publico/ el directorio es 770 y archivo 660.

Me imagino que algo asi seria la solucion:

find . -type d -iname "*directorio[0-9]*" |xargs -n1 chmod 750
find . -type f -iname "*directorio[0-9]*" |xargs -n1 chmod 640

find -type d ! -iname "*directorio[0-9]*" |xargs -n1 chmod 770
find . -type f ! -iname "*directorio[0-9]*" |xargs -n1 chmod 660


Lo otro que se me ocurre pero es menos optimo, es sacar una lista de los
archivos a modificar y luego realizar un bucle tipo:

cat lista.txt |while read line: do chmod permiso; done

;)

Slds!

-- 
Andrés Esteban. Ovalle Gahona (kill-9)
Ingeniero (E) Computación e Informática
Administrador de Sistemas
Acepta.com S.A. <www.acepta.com>
Staff DebianChile.cl <www.debianchile.cl>
Movil: 09-5795880
Usuario Linux #456290 (counter.li.org)


Más información sobre la lista de distribución Linux