Supongamos que tengo dos usuarios Alice y Bob y un grupo GROUPNAME y una carpeta foo
, ambos usuarios son miembros de GROUPNAME (que usan Linux y ext3).
Si ahorro como usuario Alice un fichero foo
, los permisos son: -rw-r--r-- Alice Alice
. Sin embargo, ¿es posible lograr que cada archivo guardado en algún subdirectorio foo
tenga permisos -rwxrwx--- Alice GROUPNAME
(es decir, la propietaria Alice, grupo GROUPNAME)?
permissions
group
acl
umask
estudiante
fuente
fuente
Respuestas:
Puede controlar los bits de permiso asignados con
umask
y el grupo haciendo que el directorio se establezca enGROUPNAME
.Tenga en cuenta que debe hacer
chgrp
/chmod
para cada subdirectorio; no se propaga automáticamente (es decir, ni los directorios existentes ni los creados posteriormente bajo un directorio setgid serán setgid , aunque este último estará en el grupoGROUPNAME
).También tenga en cuenta que
umask
es un atributo de proceso y se aplica a todos los archivos creados por ese proceso y sus hijos (que heredan elumask
efecto en su padre en esefork()
momento). Es posible que los usuarios necesiten configurar esto~/.profile
y que tengan que estar atentos a cosas no relacionadas con su directorio que necesitan permisos diferentes. Los módulos pueden ser útiles si necesita configuraciones diferentes al hacer cosas diferentes.Puede controlar las cosas un poco mejor si puede usar ACL POSIX; debería ser posible especificar una máscara de permisos y un grupo, y hacer que se propaguen de manera sensata. Sin embargo, el soporte para las ACL POSIX es algo variable.
fuente
-rwxrwx--- A G
)?Si es posible, use listas de control de acceso (ACL) .
En Linux, asegúrese de que el sistema de archivos que está utilizando sea compatible con ACL (la mayoría de los sistemas de archivos Unix lo hacen). Es posible que deba cambiar las opciones de montaje para habilitar las ACL: con ext2 / ext3 / ext4, debe especificar la
acl
opción de montaje explícitamente, por lo que la entrada/etc/fstab
debería ser similar/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Ejecutarmount -o remount,acl /
para activar las ACL sin reiniciar. También instale las herramientas de línea de comandos de ACLgetfacl
ysetfacl
, generalmente, se proporciona en un paquete llamadoacl
.Ahora que ha finalizado la configuración única, cambie la ACL del directorio para otorgar al grupo permisos de escritura y hacer que estos permisos sean heredados por los archivos recién creados. Bajo Linux:
Si ACL no son una opción, hacer que el directorio propiedad del grupo
GROUPNAME
, y establecer sus permisos a 2775 o 2770:chmod g+rwxs /path/to/directory
. Els
aquí significa el bit setgid; para un directorio, significa que los archivos creados en este directorio pertenecerán al grupo propietario del directorio.También deberá configurar la máscara de Alice y Bob para que todos sus archivos se puedan escribir en grupo de forma predeterminada. La umask predeterminada en la mayoría de los sistemas es 022, lo que significa que los archivos pueden tener todos los permisos excepto escribir por grupo y otros. Cambie eso a 002, lo que significa prohibir solo el permiso de escritura por otro. Por lo general, pondría esa configuración en su
~/.profile
:fuente
mount
comando con laremount
opción, por lo que no se usafstab
. Teneracl
dos veces significa que el sistema de archivos ya estaba montado con laacl
opción, y es inofensivo.acl
es el valor predeterminado para ext4 en los núcleos recientes, por cierto (el parche todavía era nuevo cuando escribí esta respuesta). P2: Puede ejecutar los comandos en cualquier orden.GROUPNAME
lugar de hacerloG
, para que quede más claroEsta pregunta es una buena opción para Linux
acl
. Como no declaras tu sistema operativo, asumiré Linux en lo que sigue. Aquí hay una sesión de ejemplo.No conozco un
acl
tutorial realmente bueno , pero podrías hacerlo peor que http://www.vanemery.com/Linux/ACL/linux-acl.htmlTenga en cuenta que el valor predeterminado se
acl
comporta como una máscara de usuario local. Dado que, al menos en Linux, las máscaras de u se aplican a nivel mundial, esta es la única forma que sé para obtener el efecto de una máscara de usuario local. Por alguna razón, esta es una característica poco conocida. La red está llena de personas que preguntan sobre una anulación de umask local, pero casi nadie parece pensar en usarlaacl
.También tenga en cuenta que necesita montar la partición en la que está trabajando con
acl
soporte, por ejemplo.La sesión sigue:
Establezca el grupo de
foo
to bestaff
y establezca la acl de group y user offoo
torwx
.Establezca también las acls predeterminadas de usuario y grupo
rwx
. Esto define los permisos de los que los archivos y directorios heredanfoo
. Por lo tanto, todos los archivos y directorios creados bajo foo tendrán permisos de gruporw
.Ahora cree algunos archivos
foo
como usuariosfaheem
yjohn
.Lista de archivos. Tenga en cuenta que tanto los archivos de propiedad
faheem
como los archivos de propiedadjohn
se crean con permisos de gruporw
.fuente