permissions – Un archivo quiere pertenecer a dos usuarios. ¿Cómo? El enlace duro falla

Pregunta:

Dos programas setuid, /usr/bin/bar y /usr/bin/baz , comparten un único archivo de configuración foo . El modo del archivo de configuración es 0640 , ya que contiene información confidencial. El único programa se ejecuta como bar:bar (es decir, como barra de usuario , barra de grupo); el otro como baz:baz . Cambiar de usuario no es una opción, e incluso cambiar de grupo no sería preferible.

Deseo vincular el archivo de configuración único como /etc/bar/foo y /etc/baz/foo . Sin embargo, esto falla porque el archivo debe, que yo sepa, pertenecer a root:bar o root:baz .

Posible solución: crear un nuevo grupo barbaz cuyos miembros sean bar y baz . Deja que foo pertenezca a la root:barbaz .

Me parece una solución bastante torpe. ¿No existe una forma más ordenada y sencilla de compartir el archivo de configuración foo entre los dos programas?

Por ahora, mantengo dos copias idénticas del archivo. Esto funciona, pero obviamente está mal. ¿Qué estaría bien?

Para obtener información: tengo poca experiencia con grupos Unix y ninguna con setgid (2).

Respuesta:

Puede utilizar ACL para que las personas de ambos grupos puedan leer el archivo.

chgrp bar file
chmod 640 file
setfacl -m g:baz:r-- file

Ahora los grupos bar y baz pueden leer el archivo.

Por ejemplo, aquí hay un archivo propiedad de bin: bin con modo 640.

$ ls -l foo
-rw-r-----+ 1 bin bin 5 Aug 17 12:19 foo

El + significa que hay un conjunto de ACL, así que echémosle un vistazo.

$ getfacl foo
# file: foo
# owner: bin
# group: bin
user::rw-
group::r--
group:sweh:r--
mask::r--
other::---

Podemos ver el group:sweh:r-- líneas group:sweh:r-- : eso significa que las personas del grupo sweh pueden leerlo.

¡Oye, ese soy yo!

$ id
uid=500(sweh) gid=500(sweh) groups=500(sweh)

Y sí, puedo leer el archivo.

$ cat foo
data

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım