Yo lo que haría sería invertir el asunto.
Es decir, tú lo planteas de la siguiente forma:
Un usuario regular inicia un script y luego quiere ejecutar automáticamente una parte del código como root.
Y yo lo propongo al contrario:
Es root quien inicia el script asumiendo la identidad del usuario para volver a ser root en la parte del código que necesita privilegios de superadministrador. Supongamos una tarea cron que necesita ser root para guardar en /var/log/listado_archivos, pero que necesita ser el usuario 'hhuser' para ver _su_ $HOME:
Ejemplo1:
Código:
hora=$(date +%H:%M:%S)
sudo bash -c "echo -e $USER, a las $hora, \
tiene los siguientes archivos en \
su directorio personal:\n" >> /var/log/listado_archivos
for archivo in $(ls ~)
do
sudo bash -c "echo $archivo" >> /var/log/listado_archivos
done
Ejemplo2 (ejecutado como root):
Código:
hora=$(date +%H:%M:%S)
usuario=hhuser
echo -e "$usuario, a las $hora, \
tiene los siguientes archivos en \
su directorio personal:\n" >> /var/log/listado_archivos
for archivo in $(su $usuario -c ls ~)
do
echo "$archivo" >> /var/log/listado_archivos
done
Si vemos el contenido de /var/log/listado_archivos, podemos comprobar que el segundo ejemplo funciona perfectamente.
Espero te sirva de ayuda.
Salu2
Keep on Rollin'
Marcadores