34 printf(
"usage: %s [-m] policy_file context_file\n", name);
41 const char *
perms[
sizeof(unsigned) * 8 + 1];
50 int initial_sid_to_string_len;
51 char **
arg, *polout, *ctxout;
58 if (argc==4 &&
strcmp(argv[1],
"-m") == 0) {
65 fout = fopen(polout,
"w");
67 printf(
"Could not open %s for writing\n", polout);
76 initial_sid_to_string_len =
sizeof(initial_sid_to_string) /
sizeof (
char *);
78 for (i = 1; i < initial_sid_to_string_len; i++)
79 fprintf(fout,
"sid %s\n", initial_sid_to_string[i]);
87 for (j = 0; map->
perms[
j]; j++)
95 printf(
"MLS not yet implemented\n");
100 fprintf(fout,
"type base_t;\n");
101 fprintf(fout,
"role base_r types { base_t };\n");
103 fprintf(fout,
"allow base_t base_t:%s *;\n",
105 fprintf(fout,
"user user_u roles { base_r };\n");
109 for (i = 1; i < initial_sid_to_string_len; i++)
110 fprintf(fout,
"sid %s user_u:base_r:base_t\n", initial_sid_to_string[i]);
113 fprintf(fout,
"fs_use_xattr ext2 user_u:base_r:base_t;\n");
114 fprintf(fout,
"fs_use_xattr ext3 user_u:base_r:base_t;\n");
115 fprintf(fout,
"fs_use_xattr ext4 user_u:base_r:base_t;\n");
116 fprintf(fout,
"fs_use_xattr jfs user_u:base_r:base_t;\n");
117 fprintf(fout,
"fs_use_xattr xfs user_u:base_r:base_t;\n");
118 fprintf(fout,
"fs_use_xattr reiserfs user_u:base_r:base_t;\n");
119 fprintf(fout,
"fs_use_xattr jffs2 user_u:base_r:base_t;\n");
120 fprintf(fout,
"fs_use_xattr gfs2 user_u:base_r:base_t;\n");
121 fprintf(fout,
"fs_use_xattr lustre user_u:base_r:base_t;\n");
123 fprintf(fout,
"fs_use_task eventpollfs user_u:base_r:base_t;\n");
124 fprintf(fout,
"fs_use_task pipefs user_u:base_r:base_t;\n");
125 fprintf(fout,
"fs_use_task sockfs user_u:base_r:base_t;\n");
127 fprintf(fout,
"fs_use_trans mqueue user_u:base_r:base_t;\n");
128 fprintf(fout,
"fs_use_trans devpts user_u:base_r:base_t;\n");
129 fprintf(fout,
"fs_use_trans hugetlbfs user_u:base_r:base_t;\n");
130 fprintf(fout,
"fs_use_trans tmpfs user_u:base_r:base_t;\n");
131 fprintf(fout,
"fs_use_trans shm user_u:base_r:base_t;\n");
133 fprintf(fout,
"genfscon proc / user_u:base_r:base_t\n");
137 fout = fopen(ctxout,
"w");
139 printf(
"Wrote policy, but cannot open %s for writing\n", ctxout);
142 fprintf(fout,
"/ user_u:base_r:base_t\n");
143 fprintf(fout,
"/.* user_u:base_r:base_t\n");