From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753990AbdEKAPt (ORCPT ); Wed, 10 May 2017 20:15:49 -0400 Received: from mail-eopbgr30132.outbound.protection.outlook.com ([40.107.3.132]:39811 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751096AbdEKAPr (ORCPT ); Wed, 10 May 2017 20:15:47 -0400 Authentication-Results: xmission.com; dkim=none (message not signed) header.d=none;xmission.com; dmarc=none action=none header.from=virtuozzo.com; Date: Wed, 10 May 2017 17:15:27 -0700 From: Andrei Vagin To: "Eric W. Biederman" CC: Andrei Vagin , Alexander Viro , , , , , Linux Containers Subject: Re: [PATCH] fs: add an ioctl to get an owning userns for a superblock Message-ID: <20170511001526.GA7992@outlook.office365.com> References: <20170509231938.6467-1-avagin@openvz.org> <87k25psg7b.fsf@xmission.com> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Disposition: inline In-Reply-To: <87k25psg7b.fsf@xmission.com> User-Agent: Mutt/1.8.0 (2017-02-23) X-Originating-IP: [4.16.175.162] X-ClientProxiedBy: CO2PR05CA0073.namprd05.prod.outlook.com (10.166.88.169) To HE1PR0801MB1978.eurprd08.prod.outlook.com (10.168.94.148) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 920c7bc0-4f1c-4b07-c5ae-08d49802dc28 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:HE1PR0801MB1978; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1978;3:NgtwApV5x/tEG0MSyOBx5BlldSDwKmGWJpMrkDOzajqzPYh0CEUte5rDr6rDKPdwsM3r5U8LiwgqsXe3uoAkpEhfdtSBiLqhhRiZBsDj6VkNldxjcDFmej+GDNB4kIpqlRIieiX0aCcis8LEPtUy4mrMPn0C2Samx+G+Jzgiad9uiuWqbpofFjoh3GX4oTU07WhaPuQBCnewXt3rSiSznSeOXXwuMYuCPGOZ2ngMTL0qd529wzNKrtTnNYMcV3T6fEiMAfGZDKqbP4n9R9vKnuviBb9rUjbqKUsrkENnT2H+rlFrp6OhuBd8etq9nrpmuJ6nYwqbkcw1pbz/xc66Jw==;25:b/UVE+qdz9K0Y3FVhmwxci8ZiEaTsg/AK13DUvSjB3/dtiIzkaS5nGQ8gPqUo1UjakLvXodx67M2CQXE/XwnyPeMSTw41vWrXiWYxkDwBg992n3rzEe1BPffYDa+3p9YcL5wSQ0Mtw5pGNTMhhh71/+hNtQuf/IaHiXyAyQR67Ct8vIY2Hr1D/BtmGUI/A1OgifQ09RDg6f/3g8LkxHGc06DkwHN8aEqX/5O0hw+UNZCfWBxOH2h8FicJmyDb15nuC+aQeVvlrOc/rF6m26lHTS0b301QtaV+bcPXu12cEQ3gamHMCH9wcejcC3j9JzJCMVUMtnEtmAFVO3+ZWtn7ysEc9QyxpnxAbPr/lSJKddwmV1FgzAHRG1RLtszbaMHwdS3ASxox5KL0j32PTqI2mKURhg38HXwGPMFAwfXVfm8CO/GoyS1ovvU9+UB5q1UCLxtQB4geGczcMvqdr78tDju51OCuFdY/s3K0qDBdqY= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1978;31:pZMddVEENEKZ1JGuGZeU2dTEuOQCTwEvZr9XveZ+1LtUE8y5bfKwKVAGoCIwbWFGK4bfDlSGEun7wOBkc9IchkFFaXLzp+BI+j8Xg0bis8PlITmr66KCKUdp3bdjKIKD+TwBIFK4nlrIIrVJTcPo2sey1xBnEde/ZAGkeym9OvLNpor96PUBoSJEXyiDV5CIe6iGgdgYm3B6/QwZOtz3hohMMml2Pp1f+GT3MZKGVtY=;20:4wJwr8+43QqnjXtL0NQqpa0/Q1eMlXDhndxpX/WC8tKIqGpMwzzPe3ogzAQ5jSbJw23gJ7z7tpZvysAmC8oo+qJ7FMrD7qrg9zDYH9H5EcW9ctmdV8nxI7TLgwWoOzn6QCxAZFDbGLsk8d669oboCUktILwTBtsEU68HE75sSm9tYZdbPcx/8r/+xSHfMfoaCoCZAiB640qhaOS9hFy/38vNYdcHwZZGRY/q95ylGDHo7DbkFOark5QrZgepk/UeM1rW1Gm0KWesoOAouB+E59RiU3DSNTvWBBtNNGRCvwO/GtTjg2CywiXByCI0Cz2f1mDUkG93N8aY41RNQChNj7Pvp0XKWJKYoPgNJAdIUqnI+ryBE/IOzCGvcykjRDiXhJBNBh0CXpguxhRJkpdcI0bL8b6ng0NK9FocQrspQos= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123562025)(6072148);SRVR:HE1PR0801MB1978;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1978; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1978;4:zgk7s3249MFNO/QKwCK+tcWCiI9xe1l/MwODmMQW5Bt09F63oWdyPl9klmT0RvUXzxt7GBq6RmvqBu5pfoOPatxQUyq7Vp8qzxlOMgmSqJsq7TpbAQH2Bfp7DgC0Hv6dDd6S12/JuD1utNsm2ibf71eXCXRcfcDQhI/hMQb0fyFB5haZuiGo7ZU8R92cZSnAibQKwqQN/qioI/WylTw4NHZSUTAIPWxt6C/OW6bmpZr2WZpIQD2seBAXIHh0OBxYxOvKlwHdl/Donkozu46AXaM+6f2zUDHO7mFHiFQN5DxGRrItPwJNFKgHxOjMEMUpOuyeDeZaBQFsJTN8QWUCJyeo8fNM0fKgGV6ySWdE2pGNLssN/fVApfZzuNUiaXE5UuGmIlT18YmQfM2R4otEDfEeGHBY4W3KZ+hSsil6g+2a/fqcbH5lieB7GrX86zSJNiF3IFTYqmTKQYSy309N4W0yvjnK6zakg3rqwlUZ7XphB+JCB+JiZ52cFgfn7d5Stzqlsz9coIcaWlAz8XQPDXti+wXZNUTa4QbamnQJQHIi9dlHWgiQ2AfzqpK+0UMsyofFQp7jieYXQWqQI33I13bHuxSX+7c0ferb17Qqz6kc2ejQE2b3wjcxwi+RK44qxOkhvrX5EJcmNR25eMOzveKzAkV1hRt0+LmH00+pEHQ1k5HCAz7ri8rjvWji7IKfWSiAV6EmER3m3kgj0rAF0/qnjiaojWK5TSl+hp+e5E7ctxn2qJewE3pi23wHVaDRYpJv0Ch+NXqE6Rm4lbVOJtpbjfyAKtPPs38Nck+nLKs= X-Forefront-PRVS: 0304E36CA3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39840400002)(39400400002)(39450400003)(39410400002)(24454002)(83506001)(189998001)(23686003)(6506006)(42186005)(8676002)(66066001)(4001350100001)(53416004)(305945005)(81166006)(86362001)(7736002)(110136004)(33656002)(478600001)(53936002)(25786009)(38730400002)(6666003)(1076002)(2950100002)(55016002)(6916009)(47776003)(6116002)(3846002)(50466002)(229853002)(76176999)(54356999)(50986999)(4326008)(2906002)(54906002)(6246003)(37156001)(9686003)(5660300001)(18370500001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1978;H:outlook.office365.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;HE1PR0801MB1978;23:CkrnNnYDLsYZX9AtDrR78dQr7xOPIIdUz9hXBJGa+?= =?koi8-r?Q?3oF3a+4bcOf/T/2Evo7CsOrEFp/GrEDsl9fPif6ZK96LaQlX/K6s8N9thfgL87?= =?koi8-r?Q?RXHR2U2bHL3XyMWizg5+g0I5DlElRh2iroVNS8ORAoag6v6E2jMzTw5PxFw5D1?= =?koi8-r?Q?r4rS14WnWv+yVaOlPGpASilpR2wGXaH400lTBUB7d+3+xpSAOQNrjACLCH2I5m?= =?koi8-r?Q?B6HFDQmJrIM8jcE8MT6FWP/bhBjqFIJ9JPL+WLAj50FrP8cWmAqSqMr25n4yGo?= =?koi8-r?Q?mhqAcJ56jVy15nax49SGfY4rE3JOt5mv5bm2JCMnKpPdGiPbY412HDG9T62plU?= =?koi8-r?Q?x3AMfpBXIaEuYM6IA2eMIu4lM7I7s2dtjIW/riTt8pAryWNT+/8S7uhDknhTDT?= =?koi8-r?Q?mRcdxQidQJIID2NpODnztfei8hkFGSAY22SvoKN7QcP8m8gw1Dl6+KwNp371Gw?= =?koi8-r?Q?eE2cvM/SRyoV//Kpo5ieWCdEXJmlsj2vQ8M6ZcWq5ze93oQwOM/6EQXahvU6h4?= =?koi8-r?Q?hFyIal6We3PzyM34OuLI7zisMrf2IWAiANwJdRS9PjKT8faV9szoQD6mZ3AruC?= =?koi8-r?Q?+FIlqusrMrwZtIdEqPWzylxzwPvmYZUrxfgWEf7/e6+VESQDwCWTfSLMJ3fA8a?= =?koi8-r?Q?5/lUMdZC2khd9mmvopMaPek6EjmwgxD+9gY51p8ECspZLJK2IL2Cx3x9ykWjH6?= =?koi8-r?Q?zsJcoAzCqxHH1gVq5b4JA3Hw0D7ULmQ6e3TkvkMrpvvR98PLV7re6/8TadW3LW?= =?koi8-r?Q?zFIEkiHbdQ1jD6gzTTRFkcB4VwJLIDdiVE9Q7bkpC3QxAI6e0B3NgeKqY5y4/B?= =?koi8-r?Q?teb8umMDlUGTSaQDK69626CIwLY3xr2fKreYobzsXiPnvjVXI0k/KoyWjEsg2P?= =?koi8-r?Q?naslHjmZEuu4sVLVaM9wAlwry0W4T+NTphg3O9FNIi5I9nr+3jFJUWS10+nY/D?= =?koi8-r?Q?MiH52muq6RKc/0srdHmL2/HR/MBrNweUgFmwBXzP7OdgKWtt/8iA/wVj8XyP3j?= =?koi8-r?Q?+LugLZcKy0AByny/ZgaT28zqYaIMYHvO54l/bxXYNjaHS3suKASk/XrdDE8skR?= =?koi8-r?Q?GNWpFS9mO5ROghN9UD3nXaCg1ocHKXLiDRRu2lr5o1M9FD+1GJTpebLjBxgAxK?= =?koi8-r?Q?xx9MQ7M08lwg6i/fL6AM+48/cG7mP1NbEwmKeI=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1978;6:7vouUbwerc3QEFJrnnD0ljOEFVZgKhoWSYQX8wze4kldRqq8XWN+QkMCzIK4FNR0GATX1D306aAxuARvOcs8a1h9AeFVNBlrSX2oUGyYG5aVkVAbVK9oNCe6p3Fh9bRZ9DcNdHgLvNnKdoqNMKMEndB3TEPaBK5trgk3GPK3/XjiuDUMEgZh3ODAY0MllbnhtNgUkG3n8Co7N77smEDJdvB5zI4btJ7LWuUyzkjwrpSpJOMYP4VcTFqJQLhw9eW0wkOFHZtnazjFtgtZFWmyBFe/DCmubwAyf8LmRjpmGTMPQ1H9EwKXmLp5aAD/D27QqRRIi4LfuQtuZSpj1a2E5aaZDM7urEgg5fva4qDk9ey/hln3E6OuIrWLINVoI2u8C+VnIshgybOr9IycGlR1tAeg/GikTI6U7ShZOpr0uV4NRbzQS3nlFLKDLFN69XbV9AQ2qiYw48HNVURqV0zjKhGYob5/HnnUONic+yK5NaVgZ2SPECrWarfB5y4v0rdtwS7IwB9a+LVAyRKsUWqrbw==;5:MHBzSeVJG+/f8D2fbweGIg4Wv88h3uH9jcXwFt7lbRuGTZqjqjjCawWb0ELzav5rY7gMvgcTthrAPNFcV9ifUqW9jepwigaNrZX8uKM58UFwc6jMTM+j74rErSLIhO8oQfWSVeDP5GzlZNRgQ2gMmg==;24:Hdv6W3YXoSokatP8fT/JvyHWYO/pSUvk1yWECIfiT6eJaK7N0u55raPDnDXbFfguRQLUm1BHW1YutMLQyM4iHcmmiQ8c+s49JyyJ9mnQdco= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1978;7:dJ1HWdknokZJRS0vVW21eF04tFFIE5xpfRx+XYvWY2Q40oC7WW4Qdv0LcIKPPllFvxIRKrlO5xViFty/zQ1/FZ9RAWiIhNUyGxP60NcKi3oq54ORkpV/Eu5mXrUyAR1SSQ+iWmUqHK8uJ8SyDBJAKo5z7vcnbga8X1BQAY1C/alpciz4caavPAb20ZJ5rbChRFNx70ziW2hpSjbaqYUHX2zPLM7tz4YcBOuALlcklfl1nSOsgVTYn3S5zws2CgsowHnwwOSd+/pM/a799/dHeTLoRTeHGjI0j3n4WvC3/o99dQuidhmFIGRskA1BfYbBGZVeYW14O8sQeCyIYUpIVg==;20:74dW/75wEXb3KrjAa1InsWoDK8vix9aa6Vxf3bz7aSNhxdeL0lGXhhGAYql3xi/okbF5p3U4m1ajEuKe2HUsNdtvDJsODnMp1QEe9D9lXa0SDVAnO7BeMErlPEHqLXoElgwwaxIpWE44yYPUwgCbtwc5byuESHna9AwVeBOMYLU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2017 00:15:39.8653 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1978 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 09, 2017 at 07:34:00PM -0500, Eric W. Biederman wrote: > Andrei Vagin writes: > > > The introduced ioctl returns a file descriptor that refers to a owning > > user namespace for a superblock which is associated with a target file > > descriptor. > > > > EPERM is returned if the current process doesn't have CAP_SYS_ADMIN in > > the returned user namespace. > > > > This information is required to dump and restore mount namespaces. We > > need to know to which user namespace a superblock is belonged to. > > > > We already have the SIOCGSKNS ioctl for sockets to get a network > > namespace, so it looks reasonable to use the same interface for > > superblocks too. > > > > This functionality can be useful for users in order to understand > > a running system. > > This will probably work. And the capability check eases any concerns > I might have that this would be a trivial information leak. > > That said can we hold off just a little bit. If open_fs work actually > turns into a real interface that would seem to be the perfect place > to stick this functionality. Sure, we can. Do you know any place where to read more information about open_fs? I think I have heared a few times about this idea, but it would be good to get more details. Thanks, Andrei > > Eric > > > > > Cc: Alexander Viro > > Cc: Eric W. Biederman > > Signed-off-by: Andrei Vagin > > --- > > fs/ioctl.c | 23 +++++++++++++++++++++++ > > include/uapi/linux/fs.h | 2 ++ > > 2 files changed, 25 insertions(+) > > > > diff --git a/fs/ioctl.c b/fs/ioctl.c > > index 569db68..22bbf37 100644 > > --- a/fs/ioctl.c > > +++ b/fs/ioctl.c > > @@ -16,6 +16,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > > > #include "internal.h" > > > > @@ -614,6 +616,25 @@ static int ioctl_file_dedupe_range(struct file *file, void __user *arg) > > return ret; > > } > > > > +static struct ns_common *get_sb_userns(struct ns_common *ns_common) > > +{ > > + struct user_namespace *ns; > > + > > + ns = container_of(ns_common, struct user_namespace, ns); > > + > > + return &get_user_ns(ns)->ns; > > +} > > + > > +static int ioctl_fs_sb_userns(struct file *filp) > > +{ > > + struct super_block *sb = file_inode(filp)->i_sb; > > + > > + if (!ns_capable(sb->s_user_ns, CAP_SYS_ADMIN)) > > + return -EPERM; > > + > > + return open_related_ns(&sb->s_user_ns->ns, get_sb_userns); > > +} > > + > > /* > > * When you add any new common ioctls to the switches above and below > > * please update compat_sys_ioctl() too. > > @@ -677,6 +698,8 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, > > > > case FIDEDUPERANGE: > > return ioctl_file_dedupe_range(filp, argp); > > + case FS_IOC_SB_USERNS: > > + return ioctl_fs_sb_userns(filp); > > > > default: > > if (S_ISREG(inode->i_mode)) > > diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h > > index 33423aa..26ef2d5 100644 > > --- a/include/uapi/linux/fs.h > > +++ b/include/uapi/linux/fs.h > > @@ -246,6 +246,8 @@ struct fsxattr { > > #define FICLONE _IOW(0x94, 9, int) > > #define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) > > #define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range) > > +/* Get a file descriptor to an owning userns for a superblock */ > > +#define FS_IOC_SB_USERNS _IOR('X', 55, int) > > > > #define FS_IOC_GETFLAGS _IOR('f', 1, long) > > #define FS_IOC_SETFLAGS _IOW('f', 2, long)