解决方法
# semanage user -l Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux Roles git_shell_u user s0 s0 git_shell_r guest_u user s0 s0 guest_r root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r sysadm_u user s0 s0-s0:c0.c1023 sysadm_r system_u user s0 s0-s0:c0.c1023 system_r unconfined_r unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r user_u user s0 s0 user_r xguest_u user s0 s0 xguest_r
如果您使用的是标准目标策略(检查/ etc / selinux / config或运行sestatus以查找),则root用户正在使用unconfined_u SELinux用户映射. id -Z作为root会告诉你.
如果你检查/etc/init.d/tomcat{6,7},你会发现一个if开关,它指出必须在启用SELinux的系统中使用runuser而不是plain su.但是,此命令不会阻止tomcat java进程继承SELinux用户映射.
这是相关的,因为我将尝试显示:
抓住selinux-policy
SRPM,找到java模块的源代码(文件上下文,接口和类型强制执行):
selinux-policy-3.7.19-195.el6_4.6.src/serefpolicy-3.7.19/policy/modules/apps/java.fc selinux-policy-3.7.19-195.el6_4.6.src/serefpolicy-3.7.19/policy/modules/apps/java.if selinux-policy-3.7.19-195.el6_4.6.src/serefpolicy-3.7.19/policy/modules/apps/java.te
第一个是自我解释.它包含路径,在这种情况下,它们将标记为java_exec_t:来自标准位置和可选位置的二进制文件和库.
第二个可能是最难理解的.它定义了此策略模块中允许的域转换.一个代码段与您的问题相关:
template(`java_role_template',` gen_require(` type java_exec_t; ') type $1_java_t; domain_type($1_java_t) domain_entry_file($1_java_t,java_exec_t) role $2 types $1_java_t; domain_interactive_fd($1_java_t) userdom_manage_tmpfs_role($2,$1_java_t) allow $1_java_t self:process { ptrace signal getsched execmem execstack }; dontaudit $1_java_t $3:tcp_socket { read write }; allow $3 $1_java_t:process { getattr ptrace noatsecure signal_perms }; domtrans_pattern($3,java_exec_t,$1_java_t) corecmd_bin_domtrans($1_java_t,$3) dev_dontaudit_append_rand($1_java_t) files_execmod_all_files($1_java_t) fs_dontaudit_rw_tmpfs_files($1_java_t) optional_policy(` xserver_role($2,$1_java_t) ') ')
正如该模板上的文档所述,“此模板创建用于Java应用程序的派生域”,其中“用户域的前缀(例如,用户是user_t的前缀)”,“与用户关联的角色” domain“和”用户域的类型“都取自执行Java应用程序的SELinux用户.
最后,第三个文件包含类型强制规则和布尔定义.
现在,如果您打算使用受限制的SELinux用户运行Java应用程序,则需要编写自定义策略,因为在当前的参考策略中没有这样的事情(我认为不在RHEL6中,也不在上游).您可以从复制文件开始,然后从那里进行实验.
当然,这不是一件容易的事.
原文地址:https://www.jb51.cc/linux/398763.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。