Dos programas setuid /usr/bin/bar
y /usr/bin/baz
comparten un solo 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 usuarios no es una opción, e incluso cambiar grupos no sería preferible.
Deseo vincular el archivo de configuración individual como /etc/bar/foo
y /etc/baz/foo
. Sin embargo, esto falla porque el archivo debe, hasta donde yo sé, pertenecer ao root:bar
a root:baz
.
Posible solución: crear un nuevo grupo barbaz
cuyos miembros sean bar
y baz
. Dejar foo
pertenecer a root:barbaz
.
Eso parece una solución bastante dura para mí. ¿No hay 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é sería lo correcto?
Para información: tengo poca experiencia con grupos Unix y ninguno con setgid (2).
ssl-cert
grupo, que es más o menos tubarbaz
grupo. El estándar es configurar todas las claves privadas para que sean propiedad delssl-cert
grupo y colocar los UID asociados con los programas que necesitan acceder a ellos en ese grupo.ssl-cert
cuya secuencia de comandos postinst, en la instalación, crea el grupo del que habla. No me había dado cuentassl-cert
. Apache2 (instalado en mi host) recomiendassl-cert
. Los diversos paquetes Exim y Dovecot no lo hacen, pero Postfix (no instalado en mi host) depende dessl-cert
. Debido a Apache, mi host tiene un grupo ssl-cert , pero este grupo aún no tiene miembros. Gracias por el consejo.Respuestas:
Puede usar ACL para que las personas de ambos grupos puedan leer el archivo.
Ahora ambos
bar
ybaz
grupos pueden leer el archivo.Por ejemplo, aquí hay un archivo propiedad de bin: bin con modo 640.
Los
+
medios que hay un conjunto de ACL, así que vamos a echar un vistazo a él.Podemos ver la línea
group:sweh:r--
: eso significa que las personas del gruposweh
pueden leerla.¡Hola, soy yo!
Y sí, puedo leer el archivo.
fuente
Es posible que desee reconsiderar estas declaraciones:
¿Por qué es difícil crear un nuevo grupo? Hacerlo tiene las siguientes ventajas sobre las ACL:
/usr/bin/bar
y/usr/bin/baz
es relevante que estos dos programas puedan compartir un archivo de configuración. Esto sugiere que los programas están naturalmente relacionados. La creación de un nuevo grupo para ellos parecería describir una relación que realmente existe y debería desencadenar un comportamiento (como permisos para leer el archivo de configuración común).Personalmente, veo las ACL como la solución de mano dura aquí, y los grupos como la forma más simple y tradicional de Unix.
fuente
Creo que este sería un uso típico para las listas de control de acceso (ACL). Agregue ambos usuarios (o grupos) a la ACL del archivo de configuración:
Es posible que primero deba instalar el paquete acl.
fuente
Establezca el modo del archivo
0660
(o incluso0440
si no se requiere escritura) y la propiedadbar:baz
. Entonces, un proceso puede acceder al archivo gracias a los permisos del usuario, el otro gracias a los permisos de grupo. Esto funciona incluso en sistemas de archivos donde las ACL no lo hacen.fuente
La forma "nueva" "en la nube" es tener toda la configuración manejada por un sistema de gestión de configuración (como chef , puppet o ansible ). Entonces no importa que tenga dos archivos distintos pero idénticos en el servidor, ya que ambos son una copia del archivo único del sistema de gestión de la configuración.
Las principales ventajas de hacerlo así es que su configuración está versionada (junto con el resto de sus configuraciones), y que la implementación de un nuevo servidor idéntico o casi idéntico se vuelve tan fácil que puede automatizarse.
(Para el registro, ya que no está utilizando la gestión de configuración, iría con el sistema de grupo como en la respuesta de @ drg).
fuente