linux / setfacl: establece todos los archivos / directorios actuales / futuros en el directorio principal en 775 con el propietario / grupo especificado

42

Tengo un directorio llamado "miembros" y debajo hay carpetas / archivos. ¿Cómo puedo configurar recursivamente todas las carpetas / archivos actuales y los futuros creados allí para que tengan permisos 775 y pertenezcan al propietario / grupo nobody / admin respectivamente? Habilité ACL, montado, pero parece que no puedo obtener el comando setfacl para hacer esto correctamente. ¿Alguna idea de cómo lograr esto?

Disidente
fuente

Respuestas:

62

En realidad, encontré algo que hasta ahora hace lo que pedí, compartir aquí para que cualquiera que se encuentre con este problema pueda probar esta solución:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R es recursivo, lo que significa que todo lo que se encuentre en ese directorio tendrá aplicada la regla.
d es el valor predeterminado, lo que significa que para todos los elementos futuros creados en ese directorio, estas reglas se aplican de forma predeterminada. m es necesario para agregar / modificar reglas.

El primer comando, es para elementos nuevos (de ahí la d), el segundo comando, es para elementos antiguos / existentes en la carpeta. Espero que esto ayude a alguien, ya que estas cosas son un poco complicadas y no muy intuitivas.

Disidente
fuente
2
Esto es exactamente lo que necesitaba para que el propietario de un directorio de abuelos pudiera modificar adecuadamente el contenido de los nuevos directorios de nietos.
Joost
Si usted es el único usuario de su Rpi, puede reemplazar g: groupname con pi: pi o simplemente pi
SDsolar
Puede especificar usuarios, grupos y otros en una línea, por ejemplo -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
usuario2340939
18

Para ir con su respuesta aceptada ...

Puede combinar esos comandos juntos como:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/
Joshua
fuente
Eso es genial. ¿Cómo es que te pones d:en el primer elemento en lugar de -Rmd? Puedo decir que el segundo parámetro no debería tener default, es extraño cómo Linux me lo acepta.
JREAM
1
@JREAM: Linux (en realidad getopt_long) envía todo el argumento de la opción-m que se analiza a mano por setfacl, separando por comas los argumentos pasados. Se agregan a una lista vinculada que se enlaza al final cuando realmente se cambia la ACL.
Benoit Duffez
2

setfacl en linux tiene las opciones -dy -kpara manipular los permisos predeterminados que probablemente sean lo que está buscando (consulte man para obtener más información).

Peterph
fuente
1

Es fácil establecer de forma recursiva permisos UNIX simples a petición de un usuario debidamente autorizado, los permisos de directorios y archivos. No es posible imponer esto automáticamente.

Podría decirles a los usuarios que usen el conjunto umask de 0002, y eso ayuda a crear nuevos archivos en 0775 (dependiendo de la aplicación). Pero no es exigible.

Entiendo que las ACL no se heredan en los sistemas UNIX / Linux. Se establecen bajo demanda.

En cuanto a la propiedad del archivo / directorio, aquí no tienes suerte.

En cuanto a la propiedad del grupo de archivos / directorios, al establecer el bit set-gid de directorio (es decir, g + s en DIRECTORIES), esto hace que se herede la propiedad del grupo.

Lo que he hecho en tales situaciones es ejecutar un script cron cronológico raíz que restablece los permisos / propiedades no conformes al estándar en dichos directorios.

Otro proceso (NO RECOMENDADO) es que se use la misma identificación de usuario cuando se trabaja en estos archivos. Esto podría lograrse si el usuario inicia sesión en el sistema con su propio UID y luego usa sudo o su para ejecutarlo como id. Esto todavía no es 100% especialmente en relación con ACL y bits de permiso.

mdpc
fuente