Re: Context transition error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2008-11-21 at 20:20 +0100, Vince Le Port wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Dear all,
> 
> I am working on a mean to change the nfs server context depending on the
> user who wants to access his files. I have planned to use MCS to do that.
> 
> Here is the approach for NFS:
> 
> Let us say, we have two users : client1 in s0:c1 and client2 in s0:c2
> If client1 wants to access his home directory mounted with NFS, then the
> NFS daemon will change his MCS category corresponding to the client MCS
> category
> That will limit the risk that client2 could access client1's files
> 
> Thus, for example my test program is launched in that context :
> sysadm_u:sysadm_r:sysadm_t:s0:c1.c2
> 
> Then that program makes a setcon in order to move into
> sysadm_u:sysadm_r:sysadm_t:s0:c1 and the following step is to move the
> program in that context sysadm_u:sysadm_r:sysadm_t:s0:c2
> 
> I have written the following semodule :
> 
> module localadmin 1.0;
> 
> require {
>         type sysadm_t;
>         class process setcurrent;
>         class process dyntransition;
> }
> 
> allow sysadm_t self:process { setcurrent dyntransition };
> 
> The problem is that this setcon does not work. Audit launches a
> dyntransition permission denied :
> 
> type=AVC msg=audit(1224660818.891:422): avc: denied { dyntransition }
> for pid=18334 comm="prog" scontext=sysadm_u:sysadm_r:sysadm_t:s0:c2
> tcontext=sysadm_u:sysadm_r:sysadm_t:s0:c1 tclass=process
> 
> It also seems impossible to return back to the original context s0:c1.c2
> , once s0:c1 is reached
> 
> Is it possible to allow this transition?
> 
> Thanks you for helping a SElinux newbie

The domain needs the mcssetcats attribute in order to pass the MCS
policy constraints.

You can use the mcs_process_set_categories() refpolicy interface if
building using the refpolicy infrastructure (i.e. yum install
selinux-policy-devel, make -f /usr/share/selinux/devel/Makefile
localadmin.pp).

I'm not sure what you are really planning to do though, as:
- obviously your program should not run in sysadm_t,
- The real processing for nfsd is handled by kernel threads, not a
userland process, and thus can change its credentials without going
through permission checks,
- you still need a mechanism of binding the client process security
context to the NFS request and conveying that to the server.

You may wish to have a look at the ongoing labeled NFS work:
http://selinuxproject.org/page/Labeled_NFS

-- 
Stephen Smalley
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux