Home | History | Annotate | Download | only in toolbox
      1 #include <unistd.h>
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 #include <ctype.h>
      5 #include <string.h>
      6 #include <strings.h>
      7 #include <errno.h>
      8 #include <selinux/selinux.h>
      9 
     10 void usage(const char *progname)
     11 {
     12     fprintf(stderr, "usage:  %s [ Enforcing | Permissive | 1 | 0 ]\n",
     13             progname);
     14     exit(1);
     15 }
     16 
     17 int setenforce_main(int argc, char **argv)
     18 {
     19     int rc = 0;
     20     if (argc != 2) {
     21         usage(argv[0]);
     22     }
     23 
     24     if (is_selinux_enabled() <= 0) {
     25         fprintf(stderr, "%s: SELinux is disabled\n", argv[0]);
     26         return 1;
     27     }
     28     if (strlen(argv[1]) == 1 && (argv[1][0] == '0' || argv[1][0] == '1')) {
     29         rc = security_setenforce(atoi(argv[1]));
     30     } else {
     31         if (strcasecmp(argv[1], "enforcing") == 0) {
     32             rc = security_setenforce(1);
     33         } else if (strcasecmp(argv[1], "permissive") == 0) {
     34             rc = security_setenforce(0);
     35         } else
     36             usage(argv[0]);
     37     }
     38     if (rc < 0) {
     39         fprintf(stderr, "%s:  Could not set enforcing status:  %s\n",
     40                 argv[0], strerror(errno));
     41         return 2;
     42     }
     43     return 0;
     44 }
     45