chcon 改变上下文#change context
1.如何更改安全上下文
安全上下文:
(一)类型强制策略的安全上下文
所有的操作系统访问控制都是基于与主体和客体相关的访问控制属性的。在SELINUX中,访问控制属性乘>坐安全上下文,所有的客体(文件,进程间通信,通信管道,套接字,网络主机等)和主体(进程)有一
个和他们相关的但一安全上下文。一个安全上下文有三个元素:用户,角色,类型标示符。指定和显示一
个安全上下文常用的格式如下:
用户(user):角色(role):类型标示符(type)
每一个元素的字符串标示符被定义在SElinux的策略语言中,,仅仅理解一个有效的安全上下文一定要有>
一个有效的用户,角色,类型标示符每个标示符的命名空间都是正交的。安全上下文是一个简单的,一致
的访问控制属性。在SElinux中,类型标示符是安全上下中决定访问的主要部分。由于历史原因,进程的>类型经常被称作域(domain)
(二)检查安全上下文
SElinux通过添加-Z选项修改了系统命令来展示客体和主题的安全上下文。
ls -Z 显示了文件系统对象的安全上下文
ps -Z 展示了进程的安全上下文
id 展示shell的安全上下文即您当前的用户,角色和类型
1>临时更改
chcon -t 安全上下文 文件
chcon -t public_content_t /publicftp -R 目录
实验1:1.rm -fr /var/ftp/* 2.touch /mnt/westos 3.mv /mnt/westos /var/ftp/ 移动是个重命名的过程,文件的属性,权限不会被修改,复制是新建的过程,文件的属性,权限会被覆盖
4.lftp 172.25.254.132
5.systemctl status vsftpd 6.systemctl stop firewall #关闭防火墙 7.firewall-cmd --list-all #列出防火墙的所有状态 8.firewall-cmd --reload #重新加载 9.cd /var/ftp/ 10.ls 11.touch file1 #在/var/ftp/建立文件其类型为public_content_t 12.ls 13.ls -Z 14.lftp 172.25.254.132
15.semanage fcontext -l | grep /var/ftp #查看/var/ftp的上下文,包括目录本身 16.semanage fcontext -l | grep /var/ftp/ #只有目录下的文件和目录的安全上下文 17.chcon -t public_content_t westos #修改/var/ftp/的安全上下文类型 18.semanage fcontext -l | grep /var/ftp/ #查看/var/ftp/的安全上下文列表 19.ls -Z #查看/var/ftp的属性及安全上下文类型
2>永久更改上下文件:
semansge fcontext -l #列出内核安全上下文列表内容 semanage fcontext -a -t pubic_content_t '/publicftp(/.*)?'#添加目录到内核安全上下文列表中,类型为public_content_t restorecon -FvvR /publicftp/ #重新加载安全上下文列表,即刷新实验二:
1 mkdir /westos #让/westos/目录下的上下文永久生效 2 touch /westos/westosfile 3 vim /etc/vsftpd/vsftpd.conf #更改匿名用户家目录 4 anon_root=/westos 5 systemctl restart vsftpd.service #重启vsftpd.service 6 lftp 172.25.254.132 #登陆查看,不能被看到 7 ls
8 chcon -t public_content_t /westos -R #更改/westos本身,以及目录下的文件的上下文 9 ls -Zd /westos #查看文件上下文 10 lftp 172.25.254.132 #登陆查看,可以被看到 11 ls
12 vim /etc/sysconfig/selinux #重启selinux两次,分别让disabled,enforcing生效 SELINUX=disabled reboot vim /etc/sysconfig/selinux SELINUX=enforcing reboot 13 systemctl start vsftpd.service 14 systemctl enable vsftpd.service 15 systemctl stop firewall 16 systemctl disable firewall 17 firewall-cmd --reload 18 ls -Zd /westos #查看/westos的上下文更改是否还生效,结果表示该更改是临时的
19 lftp 172.25.254.132 20 ls #看不见/westos下的文件
对比/var/ftp/和/westos在永久上下文列表:
21 semanage fcontext -l | grep /var/ftp #查看/var/ftp的上下文是否在永久上下文中 22 semanage fcontext -l | grep /westos #查看/westos的上下文是否在永久上下文中
23 semanage fcontext -a -t public_content_t '/westos(/.*)?' #-a 表添加;-t 类型,将/westos本身以及目>录中的所有的文件目录的上下文类型添加到永久上下文中 24 semanage fcontext -l | grep /westos #查看是否添加成功 25 restorecon -FvvR /westos/ #重新加载,刷新配置 26 lftp 172.25.254.132 27 ls 28 ls -Zd /westos #永久生效
##touch .autorelobel 让selinux 自动作初始化