He estado tratando de limpiar los permisos en algunas cajas y he estado rastreando al hombre chmod, así como toda la documentación de Internet que manejo sin suerte, así que aquí vamos.
Básicamente, tengo un directorio con muchos subdirectorios y archivos, y me gustaría establecer los siguientes permisos:
Para directorios: 770 (u + rwx, g + rwx, o-rwx)
Para archivos: 660 (U + rw, g + rw, ax, o-rw)
Me gustaría intentar hacer esto con un solo chmod recursivo si es posible, para evitar recurrir a través de cada directorio y establecer permisos de archivo por archivo.
Me imagino que tiene que haber una manera de hacer esto sin escribir un script propio, pero no he podido encontrar nada.
¡Aprecio tu ayuda!
fuente
No hay necesidad de guiones.
// Directorios:
// Archivos:
fuente
En su caso, puede que no tenga que ser tan complicado como lo han hecho otros (aunque
find
es una buena herramienta para este tipo de cosas en general). La diferencia entre los modos es el bit de ejecución. Si es el caso de que ningún archivo ya tenga el bit de ejecución establecido, puede hacerlo en una sola invocaciónchmod
, tal como lo solicitó.La clave aquí es la capital
X
, que la página del manual explica comoPor lo tanto, si sus archivos aún no tienen el bit de ejecución establecido, solo se establecerá para los directorios.
fuente
Descubrí que al menos para mi caso de uso, usar
rsync
para copiar el directorio en sí mismo era mucho más rápido que usarchmod
directamente con una lista de archivosfind
.Si desea agregar un
chown
a la misma operación, tambiénrsync
puede hacerlo con la--chown=user:group
opción.fuente
Limpio y simple:
fuente
find ... -exec chmod ... {} \;