1.临时修改文件的类型属性
文件的类型属性不正确是常见的SELinux拒绝访问的主要原因
1)修改文件的SELinux属性:
[[email protected] ~]# touch test.file ##新建文件
[[email protected] ~]# ls -Z test.file ##查看文件的SELinux属性
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test.file
[[email protected] ~]# chcon -t samba_share_t test.file ##修改文件的默认SELinux属性
[[email protected] ~]# ls -Z test.file
-rw-r--r--. root root unconfined_u:object_r:samba_share_t:s0 test.file
[[email protected] ~]# restorecon -F -v test.file ##恢复修改过的SELinux属性为默认属性
restorecon reset /root/test.file context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:admin_home_t:s0
[[email protected] ~]# ls -Z test.file
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 test.file
2)修改目录的SELinux属性(所有的操作与文件对比多了一个“-R”代表递归):
[[email protected] ~]# mkdir /web
[[email protected] ~]# touch /web/file{1,2}
[[email protected] ~]# ls -dZ /web ##查看目录的SELinux属性
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /web
[[email protected] ~]# ls -lZ /web/ ##查看目录下文件的SELinux属性
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file2
[[email protected] ~]# chcon -R -t httpd_sys_content_t /web/ ##临时修改目录的SELinux属性为httpd_sys_content_t
[[email protected] ~]# ls -dZ /web/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /web/
[[email protected] ~]# ls -lZ /web/
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
[[email protected] ~]# restorecon -R -v /web/ ##恢复为默认SELinux属性
restorecon reset /web context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:default_t:s0
restorecon reset /web/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:default_t:s0
restorecon reset /web/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:default_t:s0
[[email protected] ~]# ls -lZ /web/
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file2
[[email protected] ~]# ls -dZ /web/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /web/
2.永久修改文件的类型属性
永久修改文件及目录的类型属性使用下列命令:
semanage fcontext -{a|d|l|m} [-frst] filespec ##-a增加、-d删除、-l显示、-m修改
restorecon -v filespec ##由于“semanage fcontext”命令只是将属性定义项加载到
“/etc/selinux/targeted/contexts/files/file_contexts.local”文件中,
使用该命令才是将文件的selinux属性永久地修改.
1)文件的selinux属性修改
[[email protected] tmp]# touch test.file
[[email protected] tmp]# ls -Z test.file
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 test.file
[[email protected] tmp]# yum install policycoreutils-python ##安装semanage管理工具提供软件
[[email protected] tmp]# semanage fcontext -a -t samba_share_t /tmp/test.file ##将测试文件的selinux属性设置为“samba_share_t”
[[email protected] tmp]# ls -Z /tmp/test.file ##测试文件的selinux属性未发生变化
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/test.file
[[email protected] tmp]# restorecon -v /tmp/test.file ##使semanage设置的selinux属性永久的生效
restorecon reset /tmp/test.file context unconfined_u:object_r:user_tmp_t:s0->unconfined_u:object_r:samba_share_t:s0
[[email protected] tmp]# ls -Z /tmp/test.file ##测试文件的selinux属性已改
-rw-r--r--. root root unconfined_u:object_r:samba_share_t:s0 /tmp/test.file
2)目录的selinux属性修改:(完成后目录下新建的文件自动继承selinux属性)
[[email protected] ~]# mkdir /html
[[email protected] ~]# touch /html/file{1,2}
[[email protected] ~]# ls -dZ /html
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /html
[[email protected] ~]# ls -lZ /html/
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 file2
[[email protected] ~]# semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?" ##正则表达式“/html(/.*)?”表示/html目录及其中的任何文件或子目录
[[email protected] ~]# restorecon -R -v /html/ ##使semanage设置的selinux属性永久的生效
restorecon reset /html context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /html/file2 context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /html/file1 context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[[email protected] ~]# ls -lZ /html/ ##验证修改结果
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
[[email protected] ~]# ls -dZ /html/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /html/
3)如果要恢复/html的文件属性可使用下列命令:
[[email protected] ~]# semanage fcontext -d "/html(/.*)?" ##删除自定义的selinux属性
[[email protected] ~]# restorecon -F -R -v /html/ ##永久生效
restorecon reset /html context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
restorecon reset /html/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
restorecon reset /html/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
[[email protected] ~]# ls -lZ /html ##验证文件的selinux属性已经从“httpd_sys_content_t”改为默认的"default_t"
-rw-r--r--. root root system_u:object_r:default_t:s0 file1
-rw-r--r--. root root system_u:object_r:default_t:s0 file2
[[email protected] ~]# ls -dZ /html
drwxr-xr-x. root root system_u:object_r:default_t:s0 /html
4)file_t与default_t
file_t:文件没有selinux属性
default_t:文件或目录的selinux属性与file-context配置文件定义的模式不匹配
两种的类型的文件或目录,受限制的域的程序均不能访问