mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 22:50:41 +00:00
Make pstore permissions more versatile by removing CAP_SYSLOG requirement
and defining more restrictive root directory DAC permissions default (0750, which can be adjust after boot unlike the CAP_SYSLOG check). Suggested by Nick Kralevich. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Kees Cook <kees@outflux.net> iQIcBAABCgAGBQJZrv+iAAoJEIly9N/cbcAmZXcP/jZ7dW3zQiZ2q6YQDokaABT4 AZxGdDrogLQ6wWmV+ApHIYEOTcVvbswvBLwKIE7l9XpG41tIKUe4h9iCVvpBSARP SpyeawztJ8KNw00EFZWP/hOxCXHeausilea/1zh/+Rt5VhU2YIw/fhew821bjLmh 3exBjoLcWSHHCUY/e9ByMB0mB0SYUmnqhFub77Z6zZMhaRw9/gvPibS1DdmjGPPI Rq0zejFAqXy50rmbKVTT2QQPq/gQnUyb/Q216ytbSUntaAwfISDrwN74slupjG3S Vrca+BxThJYZ+rnbqjMDoROgKAYNqyIlvFVCO3H6DUqnPnGROIAeGELAcGyncUo+ 6Mdpumhy25K0+YbJkNYxm1cyH0w47EWpIqBqPTh1IhuedDB5cpdamR88dShmMzNA XhvMhe9eNxI5ZzOg8X8qCEc/hRZoZj5F4m2R+Wh55YRH3rDtuaIzONPvGyJfYYVS tY8ut/r8+qMID9I4qLtIAmVX2rzR/6BG7H3ofApY0OGFRmCt0nicUdN56JJ+GNRf 7XfpEXDL+sG3fkUk8oQSfSEhLuOseTazLuxrQAWJIZ3FZ4JnRW/a/izlbsI2+nvy FcC1+tG43ISwir5jZzNznYNrGM01TdFwQ5izKE3E1U+xsBRbR7OT8Y0005Z+GUwW 6feSKts8UKq4tFNt1WY9 =+gsj -----END PGP SIGNATURE----- Merge tag 'pstore-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux Pull pstore update from Kees Cook: "Make pstore permissions more versatile by removing CAP_SYSLOG requirement and defining more restrictive root directory DAC permissions default (0750, which can be adjust after boot unlike the CAP_SYSLOG check). Suggested by Nick Kralevich" * tag 'pstore-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: Revert "pstore: Honor dmesg_restrict sysctl on dmesg dumps" pstore: Make default pstorefs root dir perms 0750
This commit is contained in:
commit
21d236bf2b
@ -36,7 +36,6 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/syslog.h>
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
@ -132,18 +131,6 @@ static const struct seq_operations pstore_ftrace_seq_ops = {
|
||||
.show = pstore_ftrace_seq_show,
|
||||
};
|
||||
|
||||
static int pstore_check_syslog_permissions(struct pstore_private *ps)
|
||||
{
|
||||
switch (ps->record->type) {
|
||||
case PSTORE_TYPE_DMESG:
|
||||
case PSTORE_TYPE_CONSOLE:
|
||||
return check_syslog_permissions(SYSLOG_ACTION_READ_ALL,
|
||||
SYSLOG_FROM_READER);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static ssize_t pstore_file_read(struct file *file, char __user *userbuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
@ -163,10 +150,6 @@ static int pstore_file_open(struct inode *inode, struct file *file)
|
||||
int err;
|
||||
const struct seq_operations *sops = NULL;
|
||||
|
||||
err = pstore_check_syslog_permissions(ps);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (ps->record->type == PSTORE_TYPE_FTRACE)
|
||||
sops = &pstore_ftrace_seq_ops;
|
||||
|
||||
@ -204,11 +187,6 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
struct pstore_private *p = d_inode(dentry)->i_private;
|
||||
struct pstore_record *record = p->record;
|
||||
int err;
|
||||
|
||||
err = pstore_check_syslog_permissions(p);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (!record->psi->erase)
|
||||
return -EPERM;
|
||||
@ -471,7 +449,7 @@ static int pstore_fill_super(struct super_block *sb, void *data, int silent)
|
||||
|
||||
inode = pstore_get_inode(sb);
|
||||
if (inode) {
|
||||
inode->i_mode = S_IFDIR | 0755;
|
||||
inode->i_mode = S_IFDIR | 0750;
|
||||
inode->i_op = &pstore_dir_inode_operations;
|
||||
inode->i_fop = &simple_dir_operations;
|
||||
inc_nlink(inode);
|
||||
|
@ -49,13 +49,4 @@
|
||||
|
||||
int do_syslog(int type, char __user *buf, int count, int source);
|
||||
|
||||
#ifdef CONFIG_PRINTK
|
||||
int check_syslog_permissions(int type, int source);
|
||||
#else
|
||||
static inline int check_syslog_permissions(int type, int source)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_SYSLOG_H */
|
||||
|
@ -649,7 +649,7 @@ static int syslog_action_restricted(int type)
|
||||
type != SYSLOG_ACTION_SIZE_BUFFER;
|
||||
}
|
||||
|
||||
int check_syslog_permissions(int type, int source)
|
||||
static int check_syslog_permissions(int type, int source)
|
||||
{
|
||||
/*
|
||||
* If this is from /proc/kmsg and we've already opened it, then we've
|
||||
@ -677,7 +677,6 @@ int check_syslog_permissions(int type, int source)
|
||||
ok:
|
||||
return security_syslog(type);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(check_syslog_permissions);
|
||||
|
||||
static void append_char(char **pp, char *e, char c)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user