usuario una todos subdirectorios permisos los directorios crear comandos carpeta cambiar archivos archivo linux permissions acl umask

una - crear directorios y subdirectorios en linux



¿Establecer permisos predeterminados para los nuevos archivos y subdirectorios bajo un directorio en Linux? (4)

Tengo un montón de scripts y aplicaciones de larga duración que almacenan los resultados en un directorio compartido entre unos pocos usuarios. Me gustaría una forma de asegurarme de que cada archivo y directorio creado bajo este directorio compartido automáticamente tuviera u=rwxg=rwxo=r permisos.

Sé que podría usar umask 006 en la parte superior de mis varios scripts, pero no me gusta ese enfoque ya que muchos usuarios escriben sus propios scripts y pueden olvidarse de configurar el umask ellos mismos.

Realmente solo quiero que el sistema de archivos establezca nuevos archivos y directorios con cierto permiso si está en una carpeta determinada. ¿Es esto posible?

Actualización : creo que se puede hacer con ACL de POSIX , usando la funcionalidad de ACL predeterminada, pero todo está un poco sobre mi cabeza en este momento. Si alguien puede explicar cómo usar las ACL predeterminadas, probablemente responderá esta pregunta muy bien.


Así es cómo hacerlo usando ACL predeterminadas, al menos en Linux.

En primer lugar, es posible que deba habilitar el soporte de ACL en su sistema de archivos. Si está utilizando ext4, ya está habilitado. Otros sistemas de archivos (p. Ej., Ext3) deben montarse con la opción acl . En ese caso, agregue la opción a su /etc/fstab . Por ejemplo, si el directorio está ubicado en su sistema de archivos raíz:

/dev/mapper/qz-root / ext3 errors=remount-ro,acl 0 1

Luego vuelva a montarlo:

mount -oremount /

Ahora, use el siguiente comando para configurar la ACL predeterminada:

setfacl -dm u::rwx,g::rwx,o::r /shared/directory

Todos los archivos nuevos en /shared/directory ahora deberían obtener los permisos deseados. Por supuesto, también depende de la aplicación que crea el archivo. Por ejemplo, la mayoría de los archivos no serán ejecutables por nadie desde el principio (dependiendo del argumento del modo para la llamada abierta (2) o creat (2)), al igual que cuando se usa umask. Algunas utilidades como cp , tar y rsync intentarán preservar los permisos de los archivos de origen que enmascararán su ACL predeterminada si el archivo de origen no se pudo escribir en grupo.

¡Espero que esto ayude!


Es feo, pero puedes usar el comando setfacl para lograr exactamente lo que quieres.

En una máquina Solaris, tengo un archivo que contiene las aclas para usuarios y grupos. Lamentablemente, debe enumerar todos los usuarios (al menos no pude encontrar una manera de hacer que esto funcione de otro modo):

user::rwx user:user_a:rwx user:user_b:rwx ... group::rwx mask:rwx other:r-x default:user:user_a:rwx default:user:user_b:rwx .... default:group::rwx default:user::rwx default:mask:rwx default:other:r-x

Asigne un nombre al archivo acl.lst y complete sus nombres de usuario reales en lugar de usuario_X.

Ahora puede establecer esas aclas en su directorio emitiendo el siguiente comando:

setfacl -f acl.lst /your/dir/here


Para obtener la propiedad correcta, puede establecer el bit de setuid del grupo en el directorio con

chmod g+rwxs dirname

Esto asegurará que los archivos creados en el directorio sean propiedad del grupo. Debería asegurarse de que todos se ejecuten con umask 002 o 007 o algo por el estilo. Por eso, Debian y muchos otros sistemas Linux están configurados por grupos de usuarios por defecto.

No sé de qué manera forzar los permisos que desea si la umask del usuario es demasiado fuerte.


en su script de shell (o .bashrc ) puede usar algo como:

umask 022

umask es un comando que determina la configuración de una máscara que controla cómo se establecen los permisos de archivo para los archivos recién creados.