Normalmente tengo un directorio donde quiero que todos los usuarios puedan navegar, pero los archivos no se pueden leer ni ejecutar.
Veo algunas preguntas relacionadas que no coinciden exactamente con lo que quiero:
Esta preguntaesta usando
umask
. No aplica porque estos archivos ya están creados.Esta preguntaestá utilizando ACL. Sin embargo, aquí quiero usar permisos de UNIX.
Normalmente uso un find
comando pero soy consciente de que tiene algunas debilidades. Lo publicaré como una posible respuesta en un momento junto con por qué creo que puede haber una mejor manera.
Respuesta1
Normalmente uso lo siguiente:
find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555
Sin embargo, eso no tiene en cuenta los ejecutables. Estaba pensando en hacer algo como esto para los archivos:
find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx
Pero siguen siendo dos comandos y no estoy seguro de si esta es la mejor manera. Quizás alguien tenga una propuesta mejor.
Respuesta2
Bueno, simplemente no establezcas los mismos permisos en el directorio y los archivos que contiene:
$ chmod g+rx directory/
$ chmod g= directory/*
Aquí, los miembros del grupo pueden ingresar y explorar el directorio, pero no podrán leer los archivos que contiene.
Editar: con respecto a su nuevo título, sugeriría:
$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *
Respuesta3
Para directorios y archivos ya creados:
buscar /directorio_inicio -tipo d -exec chmod 755 {} \;
buscar /directorio_inicio -tipo f -exec chmod 660 {} \;
Si sus usuarios deberían poder crear nuevos archivos y/o subdirectorios, brinde más detalles porque la solución depende de los requisitos exactos.