This is John, the guy with the question Drew to above on the Adafruit board. (Thanks Drew for starting this conversation here.)
The problem is, this is part of a commercial application. My code will be reading and writing to the GPIOs and doing various things, communicating data to remote systems... I anticipate adding a fair bit of complexity. I'd hate to make a bug that blew something important away or something like that. I am generally leery of unnecessary privilege escalation. So I could - sudo my entire application, which would be the same as running as root; - partition my application and have it invoke the code that interfaces directly to the GPIOs as sudo in some way (via shell?); - go by way of the PRUs; - change permissions; - some other way. I did have partial success changing the permissions on relevant files, ala https://github.com/cnobile2012/RobotControl/tree/master/contrib which uses udev to set up permissions (not that I understand udev either.) I call my success partial because I can get a test LED to turn on, but I can't get it to flash using PWM. Any ideas why that would be? On Sunday, February 7, 2016 at 10:00:01 AM UTC-6, Mike Bell wrote: > > On 02/06/2016 12:51 AM, Brian Anderson wrote: > > > My comments are really to do with what I perceive as best practices on how > one would approach building systems that are "security conscious". Of > course, "convenience" may direct us in different directions during > development. I am not sure what you are trying to imply by "safe" as in > protecting the GPIOs from misuse. I don't actually see any way to > accomplish that. What I do think one can do is to be aware of security > considerations and not unnecessarily present an attack surface that can > compromise the entire system. > > > *Using sudo seems much less secure as it exposes the application to being >>> exploited for security flaws. And since the application is running as root, >>> it has access to everything.* >>> >> >> So, we have a device on a system that can potentially cause physical >> damage to external hardware when something like a wrong GPIO state is >> toggled, or such. How would sudo be less secure in this context? >> > > It wouldn't. And that is not my point. I am not talking about how to > protect the GPIOs from "bad behaved" programs that are "trusted" as implied > by the fact that they are running as a normal user in the group that has > access to those GPIOs. If an application is trusted (is a member of the > appropriate group or for that matter can sudo), it is a hopeless task to > protect the GPIOs from misuse. What I am trying to point out is that > running an app as "root" (sudo, set uid, whatever) exposes a security > attack vector...a vector that has access to _all_ system resources. I > would claim that it is an unnecessary exposure...from a security point of > view. YMMV when it comes to "convenience". > > >> In fact under certain conditions it would be less safe using groups. >> > > How would an application running at a non-root level using groups to > access protected resources be less "safe" than an application running as > root using sudo? > > >> >> Also, "root has access to everything" is wrong. Reread what I've written >> above about running specific commands through sudo. >> > > Errr, an application running as root, by definition, has access to _all_ > system resources. The fact that you are limiting just a single > application/user to run sudo doesn't limit the attack surface for that > application. If your root application is compromised in some way, then the > entire system can be compromised. Running as a normal user does not > present the same attack surface...its much smaller and sandboxed by the > kernel. Running as root affords no protection enforcement by the kernel. > > ba > > >> >> On Fri, Feb 5, 2016 at 6:05 PM, Brian Anderson <b...@nwlink.com> wrote: >> >>> Err, why? >>> >>> Groups are frequently used to restrict access to resources. Android >>> exploits groups for permissions and to sandbox applications. And the >>> kernel enforces access. >>> >>> Using sudo seems much less secure as it exposes the application to being >>> exploited for security flaws. And since the application is running as root, >>> it has access to everything. >>> >>> But maybe I'm missing something? >>> >>> ba >>> >>> Brian, > > This is a great summation of the issue! > > Mike > -- 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/d/optout.