ls -Z # 查看Object的安全上下文命令ps -Z 或者 ps auxZ # 查看Subject的域
ps auxZ |grep httpd # 查看httpd工作域,httpd_t域可以访问 httpd_sys_content_t类型的对象(/var/www/html中的文件对应的类型)
setenforce 0 # 切换到Permissive模式 1表示Enforcing模式
vim /etc/selinux/config
SELINUX=disable #用配置文件禁用SELinux,重启后生效,选项可以有enforcing 、permisive
另一种修改方法是:echo {0|1} >/selinux/enforce
改变安全上下文:chang context
chcon -t var_log_t /log/a.txt # 改变类型,具体类型可以用ls -Z查看。
chcon -Rt var_log_t /log # 递归修改
chcon -R --reference /var/www/html/index.html /web/htdocs/
恢复默认的安全上下文
restorecon 文件
restorecon -R 目录
查看策略:
semanage fcontext -l |grep /var/www # 查看某目录默认策略设置的类型
semanage user -l # 列出SELinux的账户
semanage port -l #列出SELinux控制的端口 添加端口 semanage port -a -t httpd_t -p tcp 8040
booleans:不想改变对象类型,也不想改变subject的工作能力,不想新建并编译策略时,可以修改booleans
getsebool -a #查看所有可调节的booleans
getsebool -a |grep samba #查看samba的布尔值。可以看到很多和samba相关的项,其中samaba_enable_home_dirs是off的,所以一个samba用户是无法在Enforcing模式下上传文件到自己的家目录的。修改samba用户对应系统用户的家目录的Selinux Object类型会有安全隐患(以samba进程所在域的人都可以访问),所以修改boolean值才是比较好的选择:
setseboolean samba_enable_home_dirs=on # on可以用1代替。
另一个例子是:vsftpd也受selinux控制,开启匿名用户可写的功能,Enforcing模式下,匿名用户仍然不可写。这时候可以getsebool -a |grep ftp 可以看到allow_ftpd_anon_write 是off的,改成on即可。