1 |
commit: bac1f46765f49a73cdfb5a482f45f3a83487ee06 |
2 |
Author: Chris PeBenito <cpebenito <AT> tresys <DOT> com> |
3 |
AuthorDate: Tue Oct 20 17:23:35 2015 +0000 |
4 |
Commit: Sven Vermeulen <swift <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Oct 26 03:55:45 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=bac1f467 |
7 |
|
8 |
Add sysfs_types attribute. |
9 |
|
10 |
Collect all types used to label sysfs entries. |
11 |
|
12 |
policy/modules/kernel/devices.if | 20 ++++++++++++++++++++ |
13 |
policy/modules/kernel/devices.te | 5 +++-- |
14 |
policy/modules/system/init.te | 1 + |
15 |
3 files changed, 24 insertions(+), 2 deletions(-) |
16 |
|
17 |
diff --git a/policy/modules/kernel/devices.if b/policy/modules/kernel/devices.if |
18 |
index a052db5..591b932 100644 |
19 |
--- a/policy/modules/kernel/devices.if |
20 |
+++ b/policy/modules/kernel/devices.if |
21 |
@@ -4130,6 +4130,26 @@ interface(`dev_rw_sysfs',` |
22 |
|
23 |
######################################## |
24 |
## <summary> |
25 |
+## Relabel from/to all sysfs types. |
26 |
+## </summary> |
27 |
+## <param name="domain"> |
28 |
+## <summary> |
29 |
+## Domain allowed access. |
30 |
+## </summary> |
31 |
+## </param> |
32 |
+# |
33 |
+interface(`dev_relabel_all_sysfs',` |
34 |
+ gen_require(` |
35 |
+ attribute sysfs_types; |
36 |
+ ') |
37 |
+ |
38 |
+ allow $1 sysfs_types:dir { list_dir_perms relabel_dir_perms }; |
39 |
+ allow $1 sysfs_types:file relabel_file_perms; |
40 |
+ allow $1 sysfs_types:lnk_file relabel_lnk_file_perms; |
41 |
+') |
42 |
+ |
43 |
+######################################## |
44 |
+## <summary> |
45 |
## Read and write the TPM device. |
46 |
## </summary> |
47 |
## <param name="domain"> |
48 |
|
49 |
diff --git a/policy/modules/kernel/devices.te b/policy/modules/kernel/devices.te |
50 |
index e5bcfcd..9274a82 100644 |
51 |
--- a/policy/modules/kernel/devices.te |
52 |
+++ b/policy/modules/kernel/devices.te |
53 |
@@ -9,6 +9,7 @@ attribute device_node; |
54 |
attribute memory_raw_read; |
55 |
attribute memory_raw_write; |
56 |
attribute devices_unconfined_type; |
57 |
+attribute sysfs_types; |
58 |
|
59 |
# |
60 |
# device_t is the type of /dev. |
61 |
@@ -62,7 +63,7 @@ dev_node(cpu_device_t) |
62 |
# |
63 |
# /sys/devices/system/cpu/online device |
64 |
# |
65 |
-type cpu_online_t; |
66 |
+type cpu_online_t, sysfs_types; |
67 |
files_type(cpu_online_t) |
68 |
dev_associate_sysfs(cpu_online_t) |
69 |
|
70 |
@@ -229,7 +230,7 @@ dev_node(sound_device_t) |
71 |
# |
72 |
# sysfs_t is the type for the /sys pseudofs |
73 |
# |
74 |
-type sysfs_t; |
75 |
+type sysfs_t, sysfs_types; |
76 |
files_mountpoint(sysfs_t) |
77 |
fs_xattr_type(sysfs_t) |
78 |
genfscon sysfs / gen_context(system_u:object_r:sysfs_t,s0) |
79 |
|
80 |
diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te |
81 |
index 79400f2..8c9cffa 100644 |
82 |
--- a/policy/modules/system/init.te |
83 |
+++ b/policy/modules/system/init.te |
84 |
@@ -224,6 +224,7 @@ ifdef(`init_systemd',` |
85 |
dev_create_generic_dirs(init_t) |
86 |
dev_manage_input_dev(init_t) |
87 |
dev_relabel_all_dev_nodes(init_t) |
88 |
+ dev_relabel_all_sysfs(init_t) |
89 |
dev_read_urand(init_t) |
90 |
dev_write_kmsg(init_t) |