From: ebiederm@xmission.com (Eric W. Biederman)
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: linux-fsdevel@vger.kernel.org,
Linux Containers <containers@lists.linux-foundation.org>,
linux-kernel@vger.kernel.org,
"Serge E. Hallyn" <serge@hallyn.com>,
Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: Re: [PATCH review 48/85] sunrpc: Update gss uid to security context mapping.
Date: Wed, 13 Feb 2013 13:17:37 -0800 [thread overview]
Message-ID: <87fw0zrk0e.fsf@xmission.com> (raw)
In-Reply-To: <20130213203528.GN14195@fieldses.org> (J. Bruce Fields's message of "Wed, 13 Feb 2013 15:35:28 -0500")
"J. Bruce Fields" <bfields@fieldses.org> writes:
> On Wed, Feb 13, 2013 at 09:51:37AM -0800, Eric W. Biederman wrote:
>> From: "Eric W. Biederman" <ebiederm@xmission.com>
>>
>> - Use from_kuid when generating the on the wire uid values.
>> - Use make_kuid when reading on the wire values.
>>
>> In gss_encode_v0_msg, since the uid in gss_upcall_msg is now a kuid_t
>> generate the necessary uid_t value on the stack copy it into
>> gss_msg->databuf where it can safely live until the message is no
>> longer needed.
>
> Apologies, I haven't been following the user namespace work.
>
> If I understand correctly, you're expecting the id's seen in nfs
> protocol messages to be the same as the id's seen in the initial user
> namespace.
>
> Why is that right, and not, say, the user namespace in which the mount
> was originally performed? (Just asking, I honestly haven't thought
> about it before.)
Actually my expectation is the user namespace was originally performed
in. Currently nfs doesn't support being mounted in anything other
than the initial user namespace.
> Also:
>
>> diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
>> index afbbcfb..a360067 100644
>> --- a/net/sunrpc/auth_gss/auth_gss.c
>> +++ b/net/sunrpc/auth_gss/auth_gss.c
>> @@ -395,8 +395,11 @@ gss_upcall_callback(struct rpc_task *task)
>>
>> static void gss_encode_v0_msg(struct gss_upcall_msg *gss_msg)
>> {
>> - gss_msg->msg.data = &gss_msg->uid;
>> - gss_msg->msg.len = sizeof(gss_msg->uid);
>> + uid_t uid = from_kuid(&init_user_ns, gss_msg->uid);
>> + memcpy(gss_msg->databuf, &uid, sizeof(uid));
>> + gss_msg->msg.data = gss_msg->databuf;
>> + gss_msg->msg.len = sizeof(uid);
>> + BUG_ON(sizeof(uid) > UPCALL_BUF_LEN);
>
> This message is going to gssd, not to the server. Should it be encoded
> for whatever namespace gssd lives in?
Good basic question. The immediate answer is that right now I only
support these things living in user namespace the filesystem was
mounted in, aka the initial user namespace.
There are a handful of things ioctls, and a quota call or two that I
will translate into the callers user namespace. For network filesystems
and their specialized helpers it would be lossy and unnecessarily
complex to support arbitrary pieces living in different user namespaces.
Historically unix has had syncrhonized password databases to ensure even
multiple machines effectively had the same user namespace.
The really important step for me is to have the kernel using kuid_t and
kgid_t throughout and only converting when talking outside of the kernel
(disk, filesystem on disk data structures, network).
With that step I can enable user namespaces and the various filesystems.
And even if the filesystem itself is restricted to just one user
namespace, the users who read and write files on that filesystem won't
be.
A next step for the filesystems where this is interesting is to support
a user who is not the global root mounting the filesystem and having the
filesystem speak in ids in the user namespace that the filesystem was
mounted in. That takes a little bit of connecting the dots of which
user namespace goes where, and it takes a little bit of confidence that
the kernel won't fall over if an evil server sends us deliberately bad
protocol messages. I suspect at some point someone will want to figure
all of that out for nfs, certainly there has been work to figure that
out for network namespaces.
For now though I am happy to have kuid_t and kgid_t pushed down
everywhere they should be.
Eric
next prev parent reply other threads:[~2013-02-13 21:17 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87621w14vs.fsf@xmission.com>
2013-02-13 17:50 ` [PATCH review 01/85] ceph: Only allow mounts in the initial network namespace Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 02/85] ceph: Translate between uid and gids in cap messages and kuids and kgids Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 03/85] ceph: Translate inode uid and gid attributes to/from " Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 04/85] ceph: Convert struct ceph_mds_request to use kuid_t and kgid_t Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 05/85] ceph: Convert kuids and kgids before printing them Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 06/85] ceph: Enable building when user namespaces are enabled Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 07/85] 9p: Add 'u' and 'g' format specifies for kuids and kgids Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 08/85] 9p: Transmit kuid and kgid values Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 09/85] 9p: Modify the stat structures to use kuid_t and kgid_t Eric W. Biederman
2013-02-13 17:50 ` [PATCH review 10/85] 9p: Modify struct 9p_fid to use a kuid_t not a uid_t Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 11/85] 9p: Modify struct v9fs_session_info to use a kuids and kgids Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 12/85] 9p: Modify v9fs_get_fsgid_for_create to return a kgid Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 13/85] 9p: Allow building 9p with user namespaces enabled Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 14/85] afs: Remove unused structure afs_store_status Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 15/85] afs: Only allow mounting afs in the intial network namespace Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 16/85] afs: Support interacting with multiple user namespaces Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 17/85] coda: Restrict coda messages to the initial pid namespace Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 18/85] coda: Restrict coda messages to the initial user namespace Eric W. Biederman
2013-02-13 18:14 ` Jan Harkes
2013-02-13 18:44 ` Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 19/85] coda: Cache permisions in struct coda_inode_info in a kuid_t Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 20/85] coda: Allow coda to be built when user namespace support is enabled Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 21/85] ocfs2: Handle kuids and kgids in acl/xattr conversions Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 22/85] ocfs2: convert between kuids and kgids and DLM locks Eric W. Biederman
2013-02-14 8:34 ` Joel Becker
2013-02-13 17:51 ` [PATCH review 23/85] ocfs2: Convert uid and gids between in core and on disk inodes Eric W. Biederman
2013-02-14 8:35 ` Joel Becker
2013-02-14 9:10 ` Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 24/85] ocfs2: For tracing report the uid and gid values in the initial user namespace Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 25/85] ocfs2: Compare kuids and kgids using uid_eq and gid_eq Eric W. Biederman
2013-02-14 8:37 ` Joel Becker
2013-02-13 17:51 ` [PATCH review 26/85] ocfs2: Enable building with user namespaces enabled Eric W. Biederman
2013-02-14 8:38 ` Joel Becker
2013-02-13 17:51 ` [PATCH review 27/85] gfs2: Remove improper checks in gfs2_set_dqblk Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 28/85] gfs2: Split NO_QUOTA_CHANGE inot NO_UID_QUTOA_CHANGE and NO_GID_QUTOA_CHANGE Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 29/85] gfs2: Report quotas in the caller's user namespace Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 30/85] gfs2: Introduce qd2index Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 31/85] gfs2: Modify struct gfs2_quota_change_host to use struct kqid Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 32/85] gfs2: Modify qdsb_get to take a " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 33/85] gfs2: Convert gfs2_quota_refresh to take a kqid Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 34/85] gfs2: Store qd_id in struct gfs2_quota_data as a struct kqid Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 35/85] gfs2: Remove the QUOTA_USER and QUOTA_GROUP defines Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 36/85] gfs2: Use kuid_t and kgid_t types where appropriate Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 37/85] gfs2: Use uid_eq and gid_eq " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 38/85] gfs2: Convert uids and gids between dinodes and vfs inodes Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 39/85] gfs2: Enable building with user namespaces enabled Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 40/85] ncpfs: Support interacting with multiple user namespaces Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 41/85] nfs_common: Update the translation between nfsv3 acls linux posix acls Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 42/85] sunrpc: Use userns friendly constants Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 43/85] sunrpc: Use kuid_t and kgid_t where appropriate Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 44/85] sunrpc: Use uid_eq and gid_eq " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 45/85] sunrpc: Simplify auth_unix now that everything is a kgid_t Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 46/85] sunrpc: Convert kuids and kgids to uids and gids for printing Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 47/85] sunrpc: Use gid_valid to test for gid != INVALID_GID Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 48/85] sunrpc: Update gss uid to security context mapping Eric W. Biederman
2013-02-13 20:35 ` J. Bruce Fields
2013-02-13 21:17 ` Eric W. Biederman [this message]
2013-02-13 21:24 ` J. Bruce Fields
2013-02-13 17:51 ` [PATCH review 49/85] sunrpc: Update svcgss xdr handle to rpsec_contect cache Eric W. Biederman
2013-03-04 14:12 ` J. Bruce Fields
2013-03-04 17:11 ` Eric W. Biederman
2013-03-05 23:10 ` J. Bruce Fields
2013-03-05 23:43 ` Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 50/85] sunrpc: Hash uids by first computing their value in the initial userns Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 51/85] sunrpc: Properly encode kuids and kgids in RPC_AUTH_UNIX credentials Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 52/85] sunrpc: Properly encode kuids and kgids in auth.unix.gid rpc pipe upcalls Eric W. Biederman
2013-02-13 21:05 ` J. Bruce Fields
2013-02-13 21:29 ` Eric W. Biederman
2013-02-13 21:50 ` J. Bruce Fields
2013-02-13 22:32 ` Eric W. Biederman
2013-02-13 22:58 ` J. Bruce Fields
2013-02-13 23:22 ` Eric W. Biederman
2013-02-14 7:12 ` Stanislav Kinsbursky
2013-02-14 8:42 ` Eric W. Biederman
2013-02-15 17:00 ` J. Bruce Fields
2013-02-15 18:47 ` Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 53/85] sunrpc: Properly decode kuids and kgids in RPC_AUTH_UNIX credentials Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 54/85] nfs: Pass GLOBAL_ROOT_UID and GLOBAL_ROOT_GID to keyring alloc Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 55/85] nfs: Convert struct nfs_fattr to Use kuid_t and kgid_t Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 56/85] nfs: Convert idmap to use kuids and kgids Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 57/85] nfs: Convert nfs2xdr " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 58/85] nfs: Convert nfs3xdr " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 59/85] nfs: Convert nfs4xdr " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 60/85] nfs: kuid and kgid conversions for nfs/inode.c Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 61/85] nfs: Enable building with user namespaces enabled Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 62/85] nfsd: Remove declaration of nonexistent nfs4_acl_permisison Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 63/85] nfsd: idmap use u32 not uid_t as the intermediate type Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 64/85] nfsd: Convert idmap to use kuids and kgids Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 65/85] nfsd: Remove nfsd_luid, nfsd_lgid, nfsd_ruid and nfsd_rgid Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 66/85] nfsd: Convert nfs3xdr to use kuids and kgids Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 67/85] nfsd: Convert nfsxdr " Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 68/85] nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 69/85] nfsd: Modify nfsd4_cb_sec to use kuids and kgids Eric W. Biederman
2013-02-13 17:51 ` [PATCH review 70/85] nfsd: Store ex_anon_uid and ex_anon_gid as " Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 71/85] nfsd: Properly compare and initialize " Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 72/85] nfsd: Enable building with user namespaces enabled Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 73/85] cifs: Override unmappable incoming uids and gids Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 74/85] cifs: Use BUILD_BUG_ON to validate uids and gids are the same size Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 75/85] cifs: Pass GLOBAL_ROOT_UID and GLOBAL_ROOT_GID to keyring_alloc Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 76/85] cifs: Use kuids and kgids SID to uid/gid mapping Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 77/85] cifs: Convert from a kuid before printing current_fsuid Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 78/85] cifs: Modify struct cifs_unix_set_info_args to hold a kuid_t and a kgid_t Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 79/85] cifs: Convert struct tcon_link to use a kuid Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 80/85] cifs: Convert struct cifs_fattr to use kuid and kgids Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 81/85] cifs: Convert struct cifsFileInfo to use a kuid Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 82/85] cifs: Modify struct smb_vol to use kuids and kgids Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 83/85] cifs: Convert struct cifs_sb_info " Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 84/85] cifs: Convert struct cifs_ses to use a kuid_t and a kgid_t Eric W. Biederman
2013-02-13 17:52 ` [PATCH review 85/85] cifs: Enable building with user namespaces enabled Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fw0zrk0e.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bfields@fieldses.org \
--cc=containers@lists.linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=serge@hallyn.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox