Re: rsbac in a network environment (LDAP and NFS)?

Javier Juan Martínez Cabezón <[email protected]> Fri, 27 Sep 2013 00:54:00 +0200
Newsgroups gmane.linux.rsbac
Message-ID <[email protected]>
On 27/09/13 00:11, Javier Juan Martínez Cabezón wrote:
> Each real filesystem would have one rsbac.dat directory with ACI data.
> 
> If you have one filesystem, you get one rsbac.dat
> 
> Lets suppose that your fs0 directory tree is something like this
> 
> /
> /nfs/root1
> /nfs/root2
> /nfs/home (that is shared by both "vms")
> 
> in fs0 / you would have rsbac.dat, only one, any change or decision made
> would be against this. I think any access to any file inside nfs/root1
> and 2 from vm0 and vm1 are made against rsbac as it would be locally,
> that is, if you deny some access to /nfs/home/mydir from fs0 it would be
> shared by both since them are under the control of rsbac as it would be
> local.
> 
> Despite about what vm1 and vm0 knows, take note about what fs0 allows.
> If you forbid something in fs0 neither vm0 neither vm1 could access to
> it from the moment you deny it. Because any syscall done against fs0
> would be intercepted by rsbac, checked and resolved as it would be local.
> 
> Until my known, consider that all mounted filesystems gets a rsbac.dat
> directory. If vm0 and vm1 runs a rsbac kernel, then /nfs/root1 and
> /nfs/root2 and /home would get their own rsbac.dat that would contain
> data concerning vm0 and vm1 roles/types defined but they unknown the
> decisions/data made by fs0. The real decision is done in the fs0 using
> /rsbac.dat.
> 
> I think more tricky would be /home in the case you have rsbac kernels in
> vm0 and vm1. I think you will have syncronization troubles there BUT
> they will not affect decisions made in fs0.
> 
> So in resume, if you have rsbac in vm0 and in fs0, to get a request
> granted you need first allow it in fs0, and at last in vm0, would be
> stacked. Since vm0 and vm1 /home are not individual filesystems UNDER
> fs0 the main kernel will not write rsbac.dat and as consequence will not
> write rsbac.dat there neither read.
> 
> 
> Maybe someone with more knowledge about nfs would give you better
> information, this is what I suppose. I expect would be useful for you.
>


In aci_data_structures.c



 322 rsbac_boolean_t rsbac_writable(struct super_block * sb_p)
 323 {
 324 #ifdef CONFIG_RSBAC_NO_WRITE
 325         return FALSE;
 326 #else
 327         if (!sb_p || !sb_p->s_dev)
 328                 return FALSE;
 329         if (rsbac_debug_no_write || (sb_p->s_flags & MS_RDONLY)
 330             || in_interrupt())
 331                 return FALSE;
 332         if (!MAJOR(sb_p->s_dev)
 333 #ifndef CONFIG_RSBAC_MSDOS_WRITE
 334             || (sb_p->s_magic == MSDOS_SUPER_MAGIC)
 335 #endif
 336             || (sb_p->s_magic == SOCKFS_MAGIC)
 337             || (sb_p->s_magic == PIPEFS_MAGIC)
 338             || (sb_p->s_magic == SYSFS_MAGIC)
 339             || (sb_p->s_magic == NFS_SUPER_MAGIC)
 340             || (sb_p->s_magic == CODA_SUPER_MAGIC)
 341             || (sb_p->s_magic == NCP_SUPER_MAGIC)
 342             || (sb_p->s_magic == SMB_SUPER_MAGIC)
 343             || (sb_p->s_magic == ISOFS_SUPER_MAGIC)
 344             || (sb_p->s_magic == OCFS2_SUPER_MAGIC)
 345             || (sb_p->s_magic == FUSE_SUPER_MAGIC)
 346             || (sb_p->s_magic == CEPH_SUPER_MAGIC))
 347                 return FALSE;
 348         else
 349                 return TRUE;
 350 #endif
 351 }
 352


Folks, this means that not attribute neither rsbac.dat is written in a
mounted nfs directory under rsbac isn't?

If I'm correct you will not have rsbac.dat in vm0 and vm1 at any
imported volumes.