blob: 6a6bd031c96f66999e0a47bc8a1b94eef0e905c9
1 | /* |
2 | * setsebool |
3 | * Simple setsebool |
4 | * NOTE: -P option requires libsemanage, so this feature is |
5 | * omitted in this version |
6 | * Yuichi Nakamura <ynakam@hitachisoft.jp> |
7 | * |
8 | * Licensed under GPLv2, see file LICENSE in this source tree. |
9 | */ |
10 | //config:config SETSEBOOL |
11 | //config: bool "setsebool" |
12 | //config: default n |
13 | //config: depends on SELINUX |
14 | //config: help |
15 | //config: Enable support for change boolean. |
16 | //config: semanage and -P option is not supported yet. |
17 | |
18 | //applet:IF_SETSEBOOL(APPLET(setsebool, BB_DIR_USR_SBIN, BB_SUID_DROP)) |
19 | |
20 | //kbuild:lib-$(CONFIG_SETSEBOOL) += setsebool.o |
21 | |
22 | //usage:#define setsebool_trivial_usage |
23 | //usage: "boolean value" |
24 | //usage:#define setsebool_full_usage "\n\n" |
25 | //usage: "Change boolean setting" |
26 | |
27 | #include "libbb.h" |
28 | |
29 | int setsebool_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
30 | int setsebool_main(int argc, char **argv) |
31 | { |
32 | char *p; |
33 | int value; |
34 | |
35 | if (argc != 3) |
36 | bb_show_usage(); |
37 | |
38 | p = argv[2]; |
39 | |
40 | if (LONE_CHAR(p, '1') || strcasecmp(p, "true") == 0 || strcasecmp(p, "on") == 0) { |
41 | value = 1; |
42 | } else if (LONE_CHAR(p, '0') || strcasecmp(p, "false") == 0 || strcasecmp(p, "off") == 0) { |
43 | value = 0; |
44 | } else { |
45 | bb_show_usage(); |
46 | } |
47 | |
48 | if (security_set_boolean(argv[1], value) < 0) |
49 | bb_error_msg_and_die("can't set boolean"); |
50 | |
51 | return 0; |
52 | } |
53 |