Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp327718img; Mon, 18 Mar 2019 04:11:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzVaP6r7jt6IR1+Sv/8uE2EM7K2mAwz9Sr4UGH9TvYtydfYxBETRSpch+kKIeCt/whyo2l1 X-Received: by 2002:a17:902:1101:: with SMTP id d1mr18675748pla.19.1552907505817; Mon, 18 Mar 2019 04:11:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552907505; cv=none; d=google.com; s=arc-20160816; b=kRhKWxienoT51n6gQbvU0lw+dTIFslX/LWoT34px1TSB8mNe1Pr89Y55d7UFJAB6X1 HwrAtPv6OnK/OfBQDLo6OHFeCTbsHhRIjPKq3L+PTRT2TtWk3yvjq5Jw4+mqB1mpaFRw ukE6y1Y6zT0tXFVPLJN7qjaCpOcugJLQ8bVcpG3aG5LL9U3nholBFROfdBIEvrGB0n8W +IyGAc7bExg0kdRMqxXFSmV4aEh0JQkzygCEWAiajtM79A1D2vuisNGkkvdzf/54LpZd O+ak6J4O2L43rA3datbejPwGjQCTAv605Yu037xea+WTHGN/GemxB+SncMqMToU2qTmL sXIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=pLaDAkySlMSNZ7rM1kJJDz4isJpJfwEtsHE/mJz/WXA=; b=WAH6l3sIB9dgVZ9k051akYQebessvtktqG2MQsN+DrZMqF5/9EF9fiAhP5+FQz1v8K as3DmlQ1xa1QpsrUhqOvn5BV3W+WmRhnzIk6LCPRBojR7hBlik2VDZ2Y/dRlzh6zyoiR 4RWyT6wfL0cJZv76tD9ECbKjjrtxjH8VdAPE1z0jM+jhU2o+cvqUPQxlyEb3SBMWXJxQ nciS4XSnP4WQ621y15B6eXAx/A0zRQdfI/1/RZmbWkl6zG93Ey7t1qshISU67inMDd4Q p78V75RYl6RDaVX0DLxIGITFhpgDx4ze5U8XRFC6aVd3Jv18g1mEGuZGN9NhaAWa8aF/ M9WA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w8si8421036pgs.302.2019.03.18.04.11.30; Mon, 18 Mar 2019 04:11:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727043AbfCRLKw (ORCPT + 99 others); Mon, 18 Mar 2019 07:10:52 -0400 Received: from charlotte.tuxdriver.com ([70.61.120.58]:52658 "EHLO smtp.tuxdriver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725973AbfCRLKv (ORCPT ); Mon, 18 Mar 2019 07:10:51 -0400 Received: from cpe-2606-a000-111b-405a-9816-2c85-c514-8f7a.dyn6.twc.com ([2606:a000:111b:405a:9816:2c85:c514:8f7a] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1h5qA9-0004ZV-St; Mon, 18 Mar 2019 07:10:44 -0400 Date: Mon, 18 Mar 2019 07:10:03 -0400 From: Neil Horman To: Richard Guy Briggs Cc: containers@lists.linux-foundation.org, linux-api@vger.kernel.org, Linux-Audit Mailing List , linux-fsdevel@vger.kernel.org, LKML , netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Paul Moore , sgrubb@redhat.com, omosnace@redhat.com, dhowells@redhat.com, simo@redhat.com, eparis@parisplace.org, serge@hallyn.com, ebiederm@xmission.com Subject: Re: [PATCH ghak90 V5 03/10] audit: read container ID of a process Message-ID: <20190318111003.GA7364@hmswarspite.think-freely.org> References: <25543e3db4d8f3853119f92c09a60664555249a2.1552665316.git.rgb@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <25543e3db4d8f3853119f92c09a60664555249a2.1552665316.git.rgb@redhat.com> User-Agent: Mutt/1.11.3 (2019-02-01) X-Spam-Score: -2.9 (--) X-Spam-Status: No Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 15, 2019 at 02:29:51PM -0400, Richard Guy Briggs wrote: > Add support for reading the audit container identifier from the proc > filesystem. > > This is a read from the proc entry of the form > /proc/PID/audit_containerid where PID is the process ID of the task > whose audit container identifier is sought. > > The read expects up to a u64 value (unset: 18446744073709551615). > > This read requires CAP_AUDIT_CONTROL. > > Signed-off-by: Richard Guy Briggs > Acked-by: Serge Hallyn > --- > fs/proc/base.c | 23 +++++++++++++++++++++-- > 1 file changed, 21 insertions(+), 2 deletions(-) > > diff --git a/fs/proc/base.c b/fs/proc/base.c > index 2505c46c8701..0b833cbdf5b6 100644 > --- a/fs/proc/base.c > +++ b/fs/proc/base.c > @@ -1295,6 +1295,24 @@ static ssize_t proc_sessionid_read(struct file * file, char __user * buf, > .llseek = generic_file_llseek, > }; > > +static ssize_t proc_contid_read(struct file *file, char __user *buf, > + size_t count, loff_t *ppos) > +{ > + struct inode *inode = file_inode(file); > + struct task_struct *task = get_proc_task(inode); > + ssize_t length; > + char tmpbuf[TMPBUFLEN*2]; > + Sorry, didn't notice this previously, but.. Why *2 here? Its not wrong per-se, but would it be better to just change TMPBUFLEN to be 22 bytes unilaterally? Its only ever used on stack calls that arent that deep, and then you won't have to think about adjusting this call site if you ever change the value of TMPBUFLEN in the future. I'm fine with doing this in another patch later, but it seems like a worthwhile cleanup functionality looks good beyond that nit. > + if (!task) > + return -ESRCH; > + /* if we don't have caps, reject */ > + if (!capable(CAP_AUDIT_CONTROL)) > + return -EPERM; > + length = scnprintf(tmpbuf, TMPBUFLEN*2, "%llu", audit_get_contid(task)); > + put_task_struct(task); > + return simple_read_from_buffer(buf, count, ppos, tmpbuf, length); > +} > + > static ssize_t proc_contid_write(struct file *file, const char __user *buf, > size_t count, loff_t *ppos) > { > @@ -1325,6 +1343,7 @@ static ssize_t proc_contid_write(struct file *file, const char __user *buf, > } > > static const struct file_operations proc_contid_operations = { > + .read = proc_contid_read, > .write = proc_contid_write, > .llseek = generic_file_llseek, > }; > @@ -3039,7 +3058,7 @@ static int proc_stack_depth(struct seq_file *m, struct pid_namespace *ns, > #ifdef CONFIG_AUDIT > REG("loginuid", S_IWUSR|S_IRUGO, proc_loginuid_operations), > REG("sessionid", S_IRUGO, proc_sessionid_operations), > - REG("audit_containerid", S_IWUSR, proc_contid_operations), > + REG("audit_containerid", S_IWUSR|S_IRUSR, proc_contid_operations), > #endif > #ifdef CONFIG_FAULT_INJECTION > REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations), > @@ -3428,7 +3447,7 @@ static int proc_tid_comm_permission(struct inode *inode, int mask) > #ifdef CONFIG_AUDIT > REG("loginuid", S_IWUSR|S_IRUGO, proc_loginuid_operations), > REG("sessionid", S_IRUGO, proc_sessionid_operations), > - REG("audit_containerid", S_IWUSR, proc_contid_operations), > + REG("audit_containerid", S_IWUSR|S_IRUSR, proc_contid_operations), > #endif > #ifdef CONFIG_FAULT_INJECTION > REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations), > -- > 1.8.3.1 > > Acked-by: Neil Horman