aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorCasey Schaufler <casey@schaufler-ca.com>2014-10-09 19:18:55 -0400
committerCasey Schaufler <casey@schaufler-ca.com>2014-10-28 11:22:40 -0400
commit6c892df2686c5611979792aaa4ddea9ee9f18749 (patch)
tree58f14443be31f7e5249419d46b9bf6dc740fb970 /security
parent594081ee7145cc30a3977cb4e218f81213b63dc5 (diff)
Smack: Lock mode for the floor and hat labels
The lock access mode allows setting a read lock on a file for with the process has only read access. The floor label is defined to make it easy to have the basic system installed such that everyone can read it. Once there's a desire to read lock (rationally or otherwise) a floor file a rule needs to get set. This happens all the time, so make the floor label a little bit more special and allow everyone lock access, too. By implication, give processes with the hat label (hat can read everything) lock access as well. This reduces clutter in the Smack rule set. Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
Diffstat (limited to 'security')
-rw-r--r--security/smack/smack_access.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/security/smack/smack_access.c b/security/smack/smack_access.c
index 5b970ffde024..999224fe8593 100644
--- a/security/smack/smack_access.c
+++ b/security/smack/smack_access.c
@@ -142,8 +142,7 @@ int smk_access(struct smack_known *subject, struct smack_known *object,
142 * Tasks cannot be assigned the internet label. 142 * Tasks cannot be assigned the internet label.
143 * An internet subject can access any object. 143 * An internet subject can access any object.
144 */ 144 */
145 if (object == &smack_known_web || 145 if (object == &smack_known_web || subject == &smack_known_web)
146 subject == &smack_known_web)
147 goto out_audit; 146 goto out_audit;
148 /* 147 /*
149 * A star object can be accessed by any subject. 148 * A star object can be accessed by any subject.
@@ -157,10 +156,11 @@ int smk_access(struct smack_known *subject, struct smack_known *object,
157 if (subject->smk_known == object->smk_known) 156 if (subject->smk_known == object->smk_known)
158 goto out_audit; 157 goto out_audit;
159 /* 158 /*
160 * A hat subject can read any object. 159 * A hat subject can read or lock any object.
161 * A floor object can be read by any subject. 160 * A floor object can be read or locked by any subject.
162 */ 161 */
163 if ((request & MAY_ANYREAD) == request) { 162 if ((request & MAY_ANYREAD) == request ||
163 (request & MAY_LOCK) == request) {
164 if (object == &smack_known_floor) 164 if (object == &smack_known_floor)
165 goto out_audit; 165 goto out_audit;
166 if (subject == &smack_known_hat) 166 if (subject == &smack_known_hat)