annotate toys/android/setenforce.c @ 1764:276664aa5ced draft

Promote setenforce to android.
author Rob Landley <rob@landley.net>
date Fri, 27 Mar 2015 22:03:13 -0500
parents toys/pending/setenforce.c@61166a30ae47
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1625
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
1 /* setenforce.c - Set the current SELinux mode
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
2 *
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
3 * Copyright 2014 The Android Open Source Project
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
4
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
5 USE_SETENFORCE(NEWTOY(setenforce, "<1", TOYFLAG_USR|TOYFLAG_SBIN))
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
6
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
7 config SETENFORCE
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
8 bool "setenforce"
1764
276664aa5ced Promote setenforce to android.
Rob Landley <rob@landley.net>
parents: 1763
diff changeset
9 default y
1763
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
10 depends on TOYBOX_SELINUX
1625
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
11 help
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
12 usage: setenforce [enforcing|permissive|1|0]
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
13
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
14 Sets whether SELinux is enforcing (1) or permissive (0).
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
15 */
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
16
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
17 #define FOR_setenforce
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
18 #include "toys.h"
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
19
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
20 void setenforce_main(void)
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
21 {
1763
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
22 char *new = *toys.optargs;
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
23 int state, ret;
1625
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
24
1763
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
25 if (!is_selinux_enabled()) error_exit("SELinux is disabled");
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
26 else if (!strcmp(new, "1") || !strcasecmp(new, "enforcing")) state = 1;
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
27 else if (!strcmp(new, "0") || !strcasecmp(new, "permissive")) state = 0;
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
28 else error_exit("Invalid state: %s", new);
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
29
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
30 ret = security_setenforce(state);
61166a30ae47 Cleanup setenforce.
Rob Landley <rob@landley.net>
parents: 1625
diff changeset
31 if (ret == -1) perror_msg("Couldn't set enforcing status to '%s'", new);
1625
1cc305c51cde getenforce and setenforce
Elliott Hughes <enh@google.com>
parents:
diff changeset
32 }