I've often given thought to running two processes in this context, and using inter process communications( shared memory seemed the most attractive to me ). How I envisioned this though, is that you have one process running as root, that is the main "supervisor" part of the application. Then a regular user application that makes requests via whatever shared memory mechanism that get used.
I think the main benefit of an application of this sort is that there is kind of a partition between privileged commands, and non privileged users. With the ability of having very fine grained control. Anyway, I only bring this up because the last post kind of reminds me of what I mention above, and actually could be made to work as a "userland" driver. On Wed, Feb 10, 2016 at 4:02 PM, <ybeag...@rehut.com> wrote: > You might want think more about this then the peep hole approach. > > Rather then running things in userland and relying on user id isolation; a > better way is to write a kernel driver that exposes a very specific and > limited interface. GPIOs are directly toggling hardware which means there > are > more then thing simple "privileges" - > - Can the pins be reconfigured to conflict (i.e. BBB is an Output and the > thing connected is an output) and is the hardware tolerant of that or will > things die? > > - Is there anything bad that will happen if the pin floats (i.e. a normally > output pin is switched to an input)? Will it pickup noise and let things go > crazy? > > Just merely changing permissions can leave a dangling problem. > > On Monday, February 08, 2016 10:33:03 j...@forelight.com wrote: > > 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 > > -- > Hunyue Yau > http://www.hy-research.com/ > > -- > 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. > -- 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.