Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752152AbbFBH64 (ORCPT ); Tue, 2 Jun 2015 03:58:56 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:14091 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754897AbbFBH6t (ORCPT ); Tue, 2 Jun 2015 03:58:49 -0400 Message-ID: <556D61D4.9090304@virtuozzo.com> Date: Tue, 02 Jun 2015 10:57:08 +0300 From: Vasily Averin Organization: Odin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Andrew Morton CC: linux-kernel@vger.kernel.org, Kees Cook , Josh Boyer , Eric Paris Subject: Re: [PATCH v2] security_syslog() should be called once only References: <20150514150154.dbfb8ab275aa30d0fe93172b@linux-foundation.org> <5561F9E0.6050504@virtuozzo.com> <20150527164312.a22ad8bb748acaddbea3bf70@linux-foundation.org> <5569C066.1010300@virtuozzo.com> <20150601142347.06b1b4ba00d7210ea4b6e3f6@linux-foundation.org> In-Reply-To: <20150601142347.06b1b4ba00d7210ea4b6e3f6@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2377 Lines: 65 On 02.06.2015 00:23, Andrew Morton wrote: > On Sat, 30 May 2015 16:51:34 +0300 Vasily Averin wrote: > >> On 28.05.2015 02:43, Andrew Morton wrote: >>> So we run security_syslog() for actions other than open() (of kmsg). >>> Why? >> Could you please clarify this question? >> >> Linux kernel have reasonable default security policy and it's great. >> And at the same time kernel allows to override default behaviour >> and set custom security policy. >> For example, to prohibit work on Saturday. >> QA can use it for random failures generation. >> Why not? > > This change: > > : --- a/kernel/printk/printk.c~security_syslog-should-be-called-once-only > : +++ a/kernel/printk/printk.c > : @@ -496,11 +496,11 @@ int check_syslog_permissions(int type, b > : * already done the capabilities checks at open time. > : */ > : if (from_file && type != SYSLOG_ACTION_OPEN) > : - return 0; > : + goto ok; > : > : ... > : > : } > : return -EPERM; > : } > : +ok: > : return security_syslog(type); > : } > > > Means that we will now call security_syslog() for SYSLOG_ACTION_CLOSE, > SYSLOG_ACTION_READ, SYSLOG_ACTION_READ_ALL, etc. > > That's new behaviour and it may be wrong. Why should > check_syslog_permissions() call security_syslog() for anything other > than SYSLOG_ACTION_OPEN? But it isn't new behaviour. Previously security_syslog() was called from do_syslog(), now it will be called from check_syslog_permissions() from_file = true == SYSLOG_FROM_PROC is set in kmsg_open/release/read/pool() only. These functions use do_syslog() that had called security_syslog() right after return from check_syslog_permissions(). sys_syslog() calls this security hook for any action and does it long time ago. The only place where behaviour is changed, where hook was _NOT_called is check_syslog_permissions(SYSLOG_ACTION_READ_ALL) calls from devkmsg_open() and pstore_check_syslog_permissions(). But they does it only if dmesg_restrict is set, that looks wrong for me, because dmesg_restict should add restrictions but do not remove existing ones. So I do not see any new problems here. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/