[linux-cifs-client] [PATCH 00/11] cifs: implement multisession mounts (try #2)

Stef Bon stefbon at gmail.com
Thu Apr 22 08:56:55 MDT 2010


2010/4/21 Jeff Layton <jlayton at redhat.com>:
> On Wed, 21 Apr 2010 16:16:26 +0200
> Stef Bon <stefbon at gmail.com> wrote:
>
>> I'm sorry but what is a multisession mount?
>>
>> Stef
>>
>
> Sorry, I guess I should have been more clear.

Well you dio not have to apologise!
There is nothing wrong with asking.

>I'll try to flesh out the
> description a bit more on the next respin of this set:
>
> Currently, CIFS will only uses a single set of credentials on a
> mountpoint, and those credentials are decided at mount time. This is
> fine if you only ever have a single user using that mountpoint. In many
> cases though, multiple users on a client may access the mount. When
> this happens, those users share the mount's credentials. This means
> that you can't enforce permissions on a per-user basis on a CIFS mount.
>
> Now, CIFS tries to do several kludgey things to get around this
> limitation. It tries to enforce permissions locally, particularly if
> you have unix extensions enabled (which allows the client to fetch
> ownership and mode info from the server), but this is an inherently
> broken and racy proposition -- you have to be able to map local uid's
> to the server's, for instance and you also are faced with the
> possibility that permissions can change after you check them.
>
> There are also problems with inode creation. If you create a file, the
> ownership on the server is generally set to whatever the mount creds
> map to, and that has no relation to the user actually accessing the
> mount. This leads to a very confusing problem that users sometimes hit
> where they "touch" a new file on a mount, and get an error back. The
> file is created, but the ownership and mode are set in such a way that
> utimes() on it fails when the client tries to enforce permissions.
>
> The idea with this set is to address the root cause and allow the
> client to use multiple sets of credentials based on the fsuid of the
> task accessing the mount. This is a little more involved than with a
> filesystem like NFS -- you have to establish a "session" with the
> server for each set of credentials.
>
> Clear as mud?

Yes very clear, what you want, but to me the whole problem is strange!

Using more than one set of credentials (if using those) looks to me a not logic.
NOt only because my construction (mount.md5key) is using seperate
mountpoints per user, pure
for securiity reasons. Another user is not allowed to access my mounts
(not only to smb shares but every mount)

But apart from that, I think all the data (files,permissions,..)
depend on the credentials provided. The server "decides"
what the client can see. Now you want to make the mounpoint present
all the different "views" in one?

I do not know this is possible. The client should maintain different
views (or sessions as you call it) and present the view to the user.
But what if a user which is not linked to any credentials on the
client accesses the mountpiont?

Stef


More information about the linux-cifs-client mailing list