Re: fuse and selinux don't seem to work well together

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

 



On Mon, Jul 26, 2010 at 8:44 AM, Xavier Toth <txtoth@xxxxxxxxx> wrote:
> On Sun, Jul 25, 2010 at 10:37 PM, merlin <merlin@xxxxxxxxxxxxxxxxxxx> wrote:
>>  On 7/25/2010 6:24 PM, Eric Paris wrote:
>>>
>>> On Sun, Jul 25, 2010 at 11:14 AM, Xavier Toth<txtoth@xxxxxxxxx>  wrote:
>>>>
>>>> On Fri, Jul 23, 2010 at 3:34 PM, Stephen Smalley<sds@xxxxxxxxxxxxx>
>>>>  wrote:
>>>>>
>>>>> On Fri, 2010-07-23 at 13:57 -0500, Xavier Toth wrote:
>>>>>>
>>>>>> On Fri, Jul 23, 2010 at 1:32 PM, David P.
>>>>>> Quigley<dpquigl@xxxxxxxxxxxxx>  wrote:
>>>>>>>
>>>>>>> On Fri, 2010-07-23 at 12:14 -0500, Xavier Toth wrote:
>>>>>>>>
>>>>>>>> I'm looking at building a fuse filesystem for polyinstantiated
>>>>>>>> directories which could be used as a alternative to pam_namespace.
>>>>>>>> I've noticed that my filesystem is never queried for the xattr
>>>>>>>> security.selinux and that the file contexts are defaulting to a fuse
>>>>>>>> file type. I've seen some list posting from 2004 related to this
>>>>>>>> subject but not much else. Is this a bug or a feature?
>>>>>>>>
>>>>>>>> Ted
>>>>>>>>
>>>>>>>> --
>>>>>>>> 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.
>>>>>>>
>>>>>>> After a brief conversation with Steve more information has come up
>>>>>>> with
>>>>>>> respect to this. A while back Eric Paris had developed a patch to
>>>>>>> dynamically probe the file system's getxattr handler to determine if
>>>>>>> we
>>>>>>> can use xattr support on the file system for SELinux labels. The major
>>>>>>> stumbling block that Eric ran into was that he was experiencing
>>>>>>> deadlocks when using the code. Apparently there were and still might
>>>>>>> be
>>>>>>> locking issues between the fuse and SELinux code. I'm sure you could
>>>>>>> dig
>>>>>>> up Eric's old patch and try to forward port it to see if those locking
>>>>>>> issues still exist.
>>>>>>>
>>>>>>> Dave
>>>>>>>
>>>>>>>
>>>>>> Thanks I'll try and run down the patch and contact Eric. I'll report
>>>>>> back if I can get this to work.
>>>>>
>>>>> Patch was posted here:
>>>>> http://marc.info/?l=selinux&m=121379719014155&w=2
>>>>>
>>>>> This bug is relevant:
>>>>> https://bugzilla.redhat.com/show_bug.cgi?id=493565
>>>>>
>>>>> --
>>>>> Stephen Smalley
>>>>> National Security Agency
>>>>>
>>>>>
>>>> I'm testing on FC13 which has equal to or greater than versions of the
>>>> packages referenced in the bug report.
>>>>
>>>>
>>>> For test purposes I patched my policy with:
>>>>
>>>> fs_use_xattr fuse.bbfs gen_context(system_u:object_r:fs_t,s0);
>>>>
>>>> Mount shows:
>>>> /home/tedx/Downloads/fuse-tutorial/src/bbfs on /home/tedx/test type
>>>> fuse.bbfs (rw,nosuid,nodev,user=tedx)
>>>>
>>>> I'm runnning kernel-debug but I don't see a "SELinux: initialized (dev
>>>> " message for the fuse.bbfs type. Shouldn't the fusermount cause one
>>>> of these messages to be generated?
>>>>
>>>> I do see fuse attempting to access the system.posix_acl_access and
>>>> system.posix_acl_default:
>>>> getxattr /Music system.posix_acl_access 0
>>>>   unique: 174, error: -61 (No data available), outsize: 16
>>>> unique: 175, opcode: GETXATTR (22), nodeid: 36, insize: 73
>>>> getxattr /Music system.posix_acl_default 0
>>>>   unique: 175, error: -61 (No data available), outsize: 16
>>>>
>>>> So fuse seems to be able to deal with xattrs.
>>>>
>>>> I'm pretty new to all of the pieces and could use a little help with
>>>> figuring out where to focus my investigation. Is the fuse mounts
>>>> superblock initializing its security structure properly?
>>>
>>> Fuse can deal with xattrs but only AFTER the fuse userspace program
>>> believes the filesystem is mounted (and if the filesystem can handle
>>> it).  My original patches didn't work, because I was calling getxattr
>>> during the mount(2) syscall.  It gets even worse.  We had a 'bug' in
>>> which the mount(8) program would call stat (or something like that) on
>>> the root inode before it told the fuse userspace program the mount was
>>> finished.  The audit system checked for file capabilities on the stat
>>> call, which resulted in an xattr upcall, which resulted in a deadlock
>>> because the fuse userspace wouldn't answer until the mount finished.
>>> The 'fix' was to stop mount(8) from calling stat on fuse mounts.
>>>
>>> The 'right' solution (I think) is going to be 2 parts.  First we need
>>> to get more information in the superblock mounting.  I seem to recall
>>> that the only information we had was that it was 'fuse.'

After looking at this for awhile it seems to me that fuse_get_sb needs
to call security_sb_set_mnt_opts get its superblock security structure
initialized especially for the case when I used the fs_use_xattrs in
policy.


>>> Not that is
>>> was fuse mounting ntfs.  After that we need to fix the other bug you
>>> pointed out (and other bug I half worked on and you might be able to
>>> find the patch in the archives somewhere)
>>
>> I agree with you on this part. I was talking with Steve about this on Friday
>> and I said it would be a good idea to have fsues statements based on the
>> specific fuse file system type. To do this if you detected a fuse file
>> system type you'd take the device string and chop off everything up until
>> the first # and that would be the specific fuse file system type. Steve said
>
> Can you give me an idea of where this happens?
>
>
>> there were some other issues with locking between the fuse code and the
>> security code so I left it at that and didn't actually look into it further.
>>
>>> You cannot put fsuse in modules for a number of reasons today, but the
>>> last problem i never solved was that of holding the genfs context in a
>>> module.  We don't (as I recall) have a method to represent the MLS
>>> portion of a label in a module.  Once that is done (and I think to do
>>> it you actually have to store it as a string and then fix it up at
>>> link time) you can better handle fuse.  I keep telling myself I'm
>>> going to look at this stuff again, but people stopped harassing me in
>>> bugzilla so I never did.....
>
> Which bugzilla should I harass you on ;)?
>
>>>
>>> -Eric
>>>
>>>
>>> --
>>> 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.
>>>
>>
>>
>
> Ted
>


--
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