Hey everyone. So, I've been working on an RBAC module for Python to make Python priv- aware. I'm seeking any comments on it at the moment
It's mostly just marshalling and unmarshalling arguments from C to PyObject*'s but it exposes all the user|exec|auth_attr functions and privileges(5) functions. It works the same way that the regular RBAC functions do ( which is to say, they don't grant you privileges you don't already have but you can drop privileges that you do have ) I figure it's useful for things like adding a "Software Installation" profile that a SUID pkg(5) can check for on startup, maybe the ON gk can find some use for it, customers/community members can use it , etc. For instance if you wanted to drop proc_fork, you could do something like this: >>> import PyRBAC >>> import os >>> >>> privs = PyRBAC.Privileges() >>> privs.getppriv("PRIV_EFFECTIVE") 'file_link_any,proc_exec,proc_fork,proc_info,proc_session' >>> os.fork() 19880 0 >>> >>> privs.setppriv("PRIV_OFF", "PRIV_PERMITTED", "proc_fork") False >>> os.fork() Traceback (most recent call last): File "<stdin>", line 1, in ? OSError: [Errno 1] Not owner >>> Tada. (the error message is Python's fault) Or, if you wanted to see if the dladm user had access to solaris.smf.manage.wpa ? >>> authattr = PyRBAC.Authattr() >>> authattr.chkauthattr("solaris.smf.manage.wpa", "dladm") True code here: http://cr.opensolaris.org/~error404/pyrbac.tar.gz