
Tengo un programa que está haciendo algunas cosas. Se ejecuta bajo el usuario A.
Una parte muy pequeña es transferir un archivo a un directorio en la casa del usuario B. La transferencia se realiza mediante una llamada API del lenguaje en el que está escrito y no mediante una llamada al sistema de un comando de shell.
Ahora veo varias formas de realizar esa transferencia.
- Ejecute el programa como root.
- Coloque A y B en el mismo grupo y ajuste la propiedad del directorio
- sudo el programa
- haz el movimiento con una llamada al sistema y sudo que
- coloque el archivo localmente en A y realice la transferencia externamente (subcontrate el problema)
- ACL el directorio de B
- ...
Creo que el requisito es común ya que ejecutar un programa mediante root es de mal gusto. ¿Cuál sería la forma más común de manejarlo?
EDITAR
El programa de A genera el archivo. B debería poder leerlo y eliminarlo.
Respuesta1
Si es importante no ver los otros archivos de un usuario, cree un directorio común separado donde ambos usuarios tengan derechos de lectura y escritura y coloque los archivos allí.
O puede copiar/mover el archivo tan pronto como se cree con inotifywatch y cambiarlo a B, aquí hay un ejemplo, póngalo en cron
Copie los archivos automáticamente al destino tan pronto como se creen