Archivos /etc en una partición diferente

Archivos /etc en una partición diferente

Mi configuración requiere que algunos de mis /etcarchivos residan en una partición separada. Para ello he creado un enlace suave:

ls -li /etc/group
956 lrwxrwxrwx 1 root root 21 May  7 15:48 /etc/group -> /var/common/etc/group

ls -li /var/common/etc/group
3145744 -rw-r--r-- 1 root root 668 May 11 11:02 /var/common/etc/group

Mi problema es cuando intento ejecutar comandos usando estos archivos:

groupadd foo
groupadd: failure while writing changes to /etc/group

straceinformes:

rename("/etc/group+", "/var/common/etc/group") = -1 EXDEV (Invalid cross-device link)
write(2, "groupadd: failure while writing "..., 54groupadd: failure while writing changes to /etc/group
) = 54

¿Alguna idea de cómo puedo ponerme groupadda trabajar?

Respuesta1

Dividir archivos /etcentre particiones es una mala idea por este motivo.

Lo que sucede es que la groupaddutilidad crea un archivo temporal y luego reemplaza el /etc/groupsarchivo real (o más bien, lo que apunta el enlace simbólico) con el temporal mediante una renameoperación simple.
El problema es que rename()solo funciona en el mismo sistema de archivos; de lo contrario, arroja un error.

Otro problema potencial con el que te puedes encontrar aquí es que cuando algo va a hacer el archivo rename, bloquea el enlace simbólico y ahora es un archivo normal.

Otro problema potencial es que /etcse requieren muchos archivos para un inicio adecuado, antes de que el sistema tenga la oportunidad de montar otros volúmenes. Por lo tanto, esos archivos en realidad faltarán.

 

En resumen, no, esto no se puede arreglar. Y no debería hacerse de todos modos.

Respuesta2

/etcestá destinado a estar en el sistema de archivos raíz. Lo más sensato es mantenerlo así.

Si realmente necesita dividir /etc, es posible que obtenga mejores resultados con un soporte de unión. Sin embargo, no sé si Linux admite montajes de unión donde uno de los componentes coincide con el punto de montaje, y sería difícil no hacer que lo real /etcen el sistema de archivos raíz forme parte del montaje de unión.

Si desea colocar todo /etcen una partición diferente, puede crear un mínimo /etcque contenga justo lo que se necesita ( /etc/fstab, lo que necesita init ( /etc/inittabo /etc/inity /etc/rc*o lo que sea que use su sistema de inicio), mínimo /etc/passwdy /etc/group, etc.). Temprano durante el arranque (¡mucho antes que /etc/rc.local!), realice el montaje vinculante /var/common/etcen /etc. Pero eso requerirá mucho trabajo para hacerlo bien y el resultado será /var/common/etcel conjunto /etc, que probablemente no sea lo que desea. Esta configuración tiene sentido principalmente para algunos sistemas integrados que no utilizan ninguno de los sistemas de inicio habituales y tienen una restricción estricta en el tamaño del sistema de archivos raíz.

Si tiene un /var/commonservidor compartido entre muchos servidores, debe abordar el problema de manera diferente. Utilice un sistema de gestión de configuración adecuado para implementar archivos compartidos en /etc.

Un archivo como /etc/passwdy /etc/groupno debe compartirse entre máquinas. Utilice estos archivos sólo para usuarios y grupos locales. Para entradas que se comparten entre máquinas, utilice NIS o LDAP.

información relacionada