[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ejecutar aplicacion como usuarios



El jue, 14-12-2006 a las 03:21 +0100, Javier Terceiro escribió:
> Hola lista.
> 
> Tengo una duda que no soy capaz de resolver de manera eficiente y es
> la siguiente. Tengo un programa que ejecuto como root y todo va
> perfecto. Dicho programa también lo puedo ejecutar como usuario normal
> sin problema, pero de ambas maneras lo hago desde una consola, es
> decir ./mi_programa &, para simplificar. 
> 
> Lo que necesito conseguir es que dicho programa cuando el sistema se
> inicia, se ejecute como unos determinados usuarios y con sus
> configuraciones predeterminadas, es decir, tengo el programa
> "mi_programa" que lo ejecuta el usuario "a" y al mismo tiempo otra
> copia de dicho programa debe de estarse a ejecutar por el usuario "b",
> "c" y "d", por ejemplo. Y todo esto desde que el sistema se inicia. 
> 
> La manera que encontré rápida es la siguiente, una copia del programa
> está en /home/a, /home/b, /home/c y /home/d, y desde un script lo
> inicializo como algo así:
> 
> #!/bin/bash
> case $1 in
> start)
>      /home/a/mi_programa [parametros] 
>      /home/b/mi_programa [parametros]
>      /home/c/mi_programa [parametros]
>      /home/d/mi_programa [parametros]
> *) echo "fail"
> 
> El fallo es que así lo estoy a ejecutar como root y no como usuario
> normal. Hay que decir que no se puede ejecutar la aplicación cuando un
> usuario accede al sistema, pues es un servicio de red y el usuario no
> se conecta, simplemente el servidor arranca y lo inicializa. 
> 
> ¿Alguna idea de como lanzar la aplicación como usuario normal?

También puedes utilizar su:

for i in `cat /etc/passwd | grep bash | \
	gawk -F: '{ print $1 }' | \
	grep -v root`
 do
 [ -x /home/"$i"/fichero.sh ] && su -c "/home/"$i"/fichero.sh &" $i
done

Esto lo lanza para todos los usuarios, menos root, y lanzado desde sus
home (si existe y es ejecutable), dejando el proceso en segundo plano y
como dicho usuario.

Saludos






Reply to: