2009-03-09 10 views

Respuesta

12

La primera línea cambia los permisos del archivo y la segunda cambia los permisos del directorio en el directorio activo y sus subdirectorios.

find . -type f -print0 | xargs -0 chmod 644 
find . -type d -print0 | xargs -0 chmod 755 
+0

simple y directo. Bien hecho. –

+0

O al menos era antes del negocio '-print0' y' -0'. La gente siempre lo recomienda y sé por qué, pero me molesta. –

+0

Increíble, funcionó como un regalo. ¡Me has ahorrado tiempo y aburrimiento más allá de las palabras! : P – Abs

15

Hay una opción X para eso.

chmod a+X * -R 

Esto le dará bit de ejecución solo a los directorios, no a los archivos. Para establecer 644, 755, respectivamente, con un comando, utilice:

chmod a=rX,u+w <files/dirs> -R 
+1

Aprende algo nuevo todos los días. ¡Útil! –

3

El uso de nombres de modo simbólico en lugar de primas permisos numéricos:

chmod -R u=rwX,go=rX somedir 

La bandera X permiso sólo establece directorios o archivos ya ejecutables como ejecutables , el indicador -R significa "recursivo" y aplica los permisos a todos los contenidos del somedir.

2

No, no hay ningún comando para cambiar los permisos recursivamente. Si existiera tal comando, violaría el mantra de Unix: hacer una cosa y hacerlo bien.

Sin embargo, no son dos comandos: uno para recursividad (find), y uno para los permisos cambiantes (chmod).

Así, la línea de comandos es la magia:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' + 
+0

Incorrecto. ¿Y qué hay de leer otras respuestas primero? – ypnos

+1

¿Qué pasa? ¿Incluso * intentaste * ese comando? Funciona en todas las máquinas en las que trabajé, cumple con POSIX y cumple con la especificación Single Unix. A diferencia de todas las otras respuestas que se basan en extensiones propietarias no estándar que no están disponibles en muchas plataformas ... –

+1

... o no resuelven el problema que indica el OP. –

Cuestiones relacionadas