diff options
author | Eric Paris <eparis@redhat.com> | 2009-03-05 13:40:35 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-03-05 16:50:18 -0500 |
commit | 6a25b27d602aac24f3c642722377ba5d778417ec (patch) | |
tree | ba334617326c65ccd98e7f4733c75fa0ac2ae5ca /security | |
parent | 113a0e4590881ce579ca992a80ddc562b3372ede (diff) |
SELinux: open perm for sock files
When I did open permissions I didn't think any sockets would have an open.
Turns out AF_UNIX sockets can have an open when they are bound to the
filesystem namespace. This patch adds a new SOCK_FILE__OPEN permission.
It's safe to add this as the open perms are already predicated on
capabilities and capabilities means we have unknown perm handling so
systems should be as backwards compatible as the policy wants them to
be.
https://bugzilla.redhat.com/show_bug.cgi?id=475224
Signed-off-by: Eric Paris <eparis@redhat.com>
Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security')
-rw-r--r-- | security/selinux/hooks.c | 2 | ||||
-rw-r--r-- | security/selinux/include/av_perm_to_string.h | 1 | ||||
-rw-r--r-- | security/selinux/include/av_permissions.h | 1 |
3 files changed, 4 insertions, 0 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 309648c573d..cd3307a26d1 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -1838,6 +1838,8 @@ static inline u32 open_file_to_av(struct file *file) | |||
1838 | av |= FIFO_FILE__OPEN; | 1838 | av |= FIFO_FILE__OPEN; |
1839 | else if (S_ISDIR(mode)) | 1839 | else if (S_ISDIR(mode)) |
1840 | av |= DIR__OPEN; | 1840 | av |= DIR__OPEN; |
1841 | else if (S_ISSOCK(mode)) | ||
1842 | av |= SOCK_FILE__OPEN; | ||
1841 | else | 1843 | else |
1842 | printk(KERN_ERR "SELinux: WARNING: inside %s with " | 1844 | printk(KERN_ERR "SELinux: WARNING: inside %s with " |
1843 | "unknown mode:%o\n", __func__, mode); | 1845 | "unknown mode:%o\n", __func__, mode); |
diff --git a/security/selinux/include/av_perm_to_string.h b/security/selinux/include/av_perm_to_string.h index c0c885427b9..c7531ee9c7b 100644 --- a/security/selinux/include/av_perm_to_string.h +++ b/security/selinux/include/av_perm_to_string.h | |||
@@ -24,6 +24,7 @@ | |||
24 | S_(SECCLASS_CHR_FILE, CHR_FILE__EXECMOD, "execmod") | 24 | S_(SECCLASS_CHR_FILE, CHR_FILE__EXECMOD, "execmod") |
25 | S_(SECCLASS_CHR_FILE, CHR_FILE__OPEN, "open") | 25 | S_(SECCLASS_CHR_FILE, CHR_FILE__OPEN, "open") |
26 | S_(SECCLASS_BLK_FILE, BLK_FILE__OPEN, "open") | 26 | S_(SECCLASS_BLK_FILE, BLK_FILE__OPEN, "open") |
27 | S_(SECCLASS_SOCK_FILE, SOCK_FILE__OPEN, "open") | ||
27 | S_(SECCLASS_FIFO_FILE, FIFO_FILE__OPEN, "open") | 28 | S_(SECCLASS_FIFO_FILE, FIFO_FILE__OPEN, "open") |
28 | S_(SECCLASS_FD, FD__USE, "use") | 29 | S_(SECCLASS_FD, FD__USE, "use") |
29 | S_(SECCLASS_TCP_SOCKET, TCP_SOCKET__CONNECTTO, "connectto") | 30 | S_(SECCLASS_TCP_SOCKET, TCP_SOCKET__CONNECTTO, "connectto") |
diff --git a/security/selinux/include/av_permissions.h b/security/selinux/include/av_permissions.h index 0ba79fe00e1..0b8f9b2bbde 100644 --- a/security/selinux/include/av_permissions.h +++ b/security/selinux/include/av_permissions.h | |||
@@ -174,6 +174,7 @@ | |||
174 | #define SOCK_FILE__SWAPON 0x00004000UL | 174 | #define SOCK_FILE__SWAPON 0x00004000UL |
175 | #define SOCK_FILE__QUOTAON 0x00008000UL | 175 | #define SOCK_FILE__QUOTAON 0x00008000UL |
176 | #define SOCK_FILE__MOUNTON 0x00010000UL | 176 | #define SOCK_FILE__MOUNTON 0x00010000UL |
177 | #define SOCK_FILE__OPEN 0x00020000UL | ||
177 | #define FIFO_FILE__IOCTL 0x00000001UL | 178 | #define FIFO_FILE__IOCTL 0x00000001UL |
178 | #define FIFO_FILE__READ 0x00000002UL | 179 | #define FIFO_FILE__READ 0x00000002UL |
179 | #define FIFO_FILE__WRITE 0x00000004UL | 180 | #define FIFO_FILE__WRITE 0x00000004UL |