Suponga que mi umask es 0077.
Tengo un directorio foo
que deseo que se le apliquen permisos especiales. Todos los archivos que creo foo
deben 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
setfacl
ygetfacl
. Usesetfacl
para cambiar la acl predeterminada para un directorio:-d
establece el valor predeterminado,-m
modifica acl yo:r
otorga 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 -l
ahora 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
setfacl
ygetfacl
está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