Jack,

Ok perhaps I am missing something, and I by no means mean to be adversarial
here. I am just curious, so If i  am missing something please feel free to
enlighten me.

What is the difference between using setuid(0) and having a web socks app
running the app ? Here is my thinking. If you write the app/service
correctly, all anyone is going to be able to do is switch on / off an LED.
Yes, perhaps you do not want *EVERYONE* doing this, but how will this
solution solve that specific problem ? Unless I am missing something . . .
nothing can, short of having a user login screen for the web interface.

So I am not looking for an argument so much as enlightenment . . . as I
have personally given this situation some thought over the last 6 or so
months( being new to embedded Linux, and thus web appliances ).


On Mon, Feb 10, 2014 at 9:03 AM, Jack Mitchell <m...@communistcode.co.uk>wrote:

> On 07/02/14 21:28, jdswen...@gmail.com wrote:
> > OS Image: Ubuntu Precise 12.04.3 LTS
> >
> > I'm attempting to control LEDs from a webpage (and eventually other
> > hardware from the device tree overlay).  I've written a C program to
> > toggle the onboard LED based on the arguments passed to it. This only
> > works if you run it as root however.  I've also installed lighttpd and
> > have a php page running with a link to toggle the LED based on button
> > press.  To work around running as root, I added a setuid(0) to the C
> > program and changed the ownership of the gcc output binary to root, then
> > made the binary readable and executable by any user.  The result is that
> > the php page can control the LED, but I'm uncertain of how safe this set
> > up is.
> >
> > Is there a better (safer) way for me to be controlling hardware from a
> > webpage with C?  If not, what are my other options?
> >
> > Let me know if I can provide you with any additional details.
> >
> > Thanks,
> > Jake
> >
>
> Yes. You could implement a message passing bus (websockets for example)
> which the C program responds to. Therefore you run your C program in the
> background waiting for a message on the bus, then you get your web
> application to send a message to the program telling it turn on/off an
> LED. The C program runs as root and as such has control of the hardware
> and your webapge never calls the C program, but only sends data on the
> message bus, so as such it's a bit harder for anyone to do anything
> untoward.
>
> --
>   Jack Mitchell (j...@embed.me.uk)
>   Embedded Systems Engineer
>   Cambridgeshire, UK
>   http://www.embed.me.uk
> --
>
> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to beagleboard+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to