RHCE7认证学习笔记22——管理SELinux安全 一、ugo模式主动访问控制DAC 文件的权限控制ugo rwx 二、selinux强制访问控制MAC 每个文件资源都有一个标记,特定标记的进程,只能访问特定标记的资源,无法访问其他资源,即使资源的权限设置为777(rwx) 三、查看和设置文件和进程的安全标记 使用-Z的选项可以查看文件和进程的标记,以httpd服务为例子: [root@itnetcn tmp]# ls -Z --wx-----x. root root unconfined_u:object_r:user_tmp_t:s0 a1 -----w----. root root unconfined_u:object_r:user_tmp_t:s0 a4 ---------x. root root unconfined_u:object_r:user_tmp_t:s0 a5 [root@itnetcn html]# ps auxZ|grep httpd system_u:system_r:httpd_t:s0 root 5477 0.1 0.4 213692 4904 ? Ss [root@itnetcn html]# ls -ldZ /var/www/html/ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ 在根下创建一个www的目录,并在/var/www/html下面做一个www的软链接: [root@itnetcn html]# mkdir /www [root@itnetcn html]# ln -s /www/ www [root@itnetcn html]# ls index.html iso ks.cfg www /www目录的默认的上上下文为,没有标记为httpd: [root@itnetcn html]# ls -ldZ /www/ drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www/ 如果这时候启动httpd服务,打开浏览器,访问www目录,会提示不被允许:
修改/www目录的上下文,使其上下文与/var/www/html一致,再打开www目录即可访问: [root@itnetcn html]# chcon -R --reference=/var/www/html/ /www [root@itnetcn html]# ls -ldZ /www/ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /www/
使用restorecon命令可以恢复文件资源的默认上下文: [root@itnetcn html]# ls -ldZ /www/ drwxr-xr-x. root root system_u:object_r:default_t:s0 /www/ 使用chcon命令只能临时改变文件资源的上下文,重启电脑则会恢复默认值,要想永久的修改默认的上下文,则需使用semanage命令: [root@itnetcn html]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?' 使用restorcon命令再恢复默认上下文,则恢复的是最新设置的上下文 使用-d选项可以删除默认的上下文: [root@itnetcn html]# semanage fcontext -d -t httpd_sys_content_t '/www(/.*)?' 四、selinux的三种模式 1、enforcing 使用getenforce可以查看系统当前的模式: [root@itnetcn html]# getenforce Enforcing 不符合selinux模式则会报警,同时会阻止相关的操作 2、permissive 切换到permissive模式,使用setenforce [root@itnetcn html]# setenforce 0 [root@itnetcn html]# getenforce Permissive 不符合selinux模式的操作,permissive会有警报,但是不会阻止相关的操作; 3、disable 在/etc/selinux/config文件中可永久修改selinux模式: 五、修改selinux模式的布尔值 使用getsebool -a命令查看所有的布尔值 [root@itnetcn html]# getsebool -a abrt_anon_write --> off abrt_handle_event --> off abrt_upload_watch_anon_write --> on 如果搭建了某个服务,在客户端访问该服务,写不进任何东西,可以按以下步骤检查: 1、检查配置文件是否开启了相关的写权限; 2、文件系统权限 3、selinux上下文和布尔值是否开启了相关的权限 图形化管理selinux可以安装相关的包,使用system-config-selinux命令; (责任编辑:IT) |