Suponga que mi umask es 0077.
Tengo un directorio fooque deseo que se le apliquen permisos especiales. Todos los archivos que creo foodeben ser legibles en todo el mundo, y todos los directorios deben ser legibles y ejecutables en todo el mundo.
Actualmente, si creo un archivo, será 0600 y un directorio será 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file
Quiero que el archivo sea 0644 y el directorio 0755, independientemente de mi umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file
¿Cómo puedo conseguir esto?
                    
                        linux
                                permissions
                                access-control-list
                                umask
                                
                    
                    
                        stickmangumby
fuente
                
                fuente

Respuestas:
Sí, acl's puede hacer esto.
Asegúrese de que su sistema de archivos esté montado con acl. Para verificar esto, escriba
mount. Debería ver 'acl' entre otros permisos, por ejemplo:Si no está montado con acl, abra / etc / fstab y agregue 'acl' a la lista de opciones:
Ahora, vuelva a montar el sistema de archivos en ejecución con las nuevas opciones:
Instale las utilidades de acl. En ubuntu / debian, esto es:
Tus nuevos amigos son
setfaclygetfacl. Usesetfaclpara cambiar la acl predeterminada para un directorio:-destablece el valor predeterminado,-mmodifica acl yo:rotorga a "otro" el derecho de leer. Establecer el valor predeterminado en un directorio es más o menos equivalente a establecer setgid en un directorio, pero en lugar de los archivos recién creados que heredan el grupo, heredan el acl. Juntos, setgid y acl pueden ser poderosos, ya que puede otorgar permisos predeterminados a un grupo y obtener archivos recién creados para que pertenezcan a ese grupo, para una umask por directorio efectiva basada en grupos.Verifique su trabajo:
ls -lahora debería mostrar un "+" adicional que indica la presencia de acl además de los permisos de archivo estándar.Puede obtener información detallada sobre el acl usando
getfacl.fuente
setfaclygetfaclestán devolviendo el resultado esperado, pero solo los directorios (no los archivos) dentro del directorio padre heredan el acl, e incluso entonces mi umask tiene prioridad sobre el valor predeterminado (si no son legibles en todo el mundo,default:other::r--no permite que otro usuario acceder a ellos). ¿Me he perdido algo obvio?También puede forzar una umask para el directorio estableciendo la propiedad ACL de máscara de esta manera:
fuente
Simplemente instale OnDir y configúrelo adecuadamente según sus necesidades. He respondido un problema similar ubicado aquí .
fuente