El 28 de marzo de 2011 12:37, Victor Hugo dos Santos <listas....@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)