linux的安全上下文

什么是安全上下文?

安全上下是一个访问控制属性,是selinux中的重要组成部分,在进行移动时,不会改变文件的属性和权限,而复制的过程会改变文件的属性,而安全上下文是一个访问的凭证,特定的文件被特定的程序访问,安全上下文会关闭系统认为不安全的功能,当安全上下文相匹配时才允许访问。

安全上下文的作用

vim /etc/sysconfig/selinux

在这里插入图片描述
把selinux改为enforcing模式,重启系统,开启安全上下文的功能。
在这里插入图片描述
我们可以看到,开启安全上下文之后,使用lftp登陆时只能看到在目录里创建的文件,而看不到移动到目录的文件。那么,如何临时关闭这个功能呢?

chcon -t public_content_t /home/student/ -R
ls -Zd /home/student/

在这里插入图片描述
此时,重/mnt移动过来的文件也能看到了。
也可以永久关闭这个功能。

semanage fcontext -a -t public_content_t '/home/student(/.*)?'
semanage fcontext -l | grep student

在这里插入图片描述

restorecon -FvvR /home/student/			##刷新上下文关系

在这里插入图片描述
这样,就永久关闭安全上下文的功能,重启计算机之后也不会改变。
如何允许本地用户上传文件
开启selinux的强制功能之后,本地用户和匿名用户都是默认不能上传文件的,如果想要上传文件,必须打开相应开关。

getsebool -a | grep ftp			##查看开关是否打开
setsebool -P ftp_home_dir  on	##打开开关

在这里插入图片描述
查看开关是否打开
在这里插入图片描述
打开开关
之后就可以进行本地用户的文件的上传了。
在这里插入图片描述
当然如过上传失败可以查看/etc/vsftpd/vsftpd.conf文件是否有参数未修改,也可以查看/var/log/messages中的日志寻找解决方案。
如何允许匿名用户上传文件
同样,匿名用户也是默认不能上传文件的,需要打开相应开关。

setsebool -P ftpd_anon_write on							##打开开关
semanage fcontext -a -t public_content_rw_t /var/ftp/pub
restorecon -RvvF /var/ftp/pub/

在这里插入图片描述
在这里插入图片描述
上传成功!
selinux有两种模式,可以用getenforce进行查看
在这里插入图片描述
用setenforce临时更改。
在这里插入图片描述
其中Enforcing表示强制模式,Permissive表示警告模式。

### Linux 安全上下文SELinux 访问控制机制 #### 什么是安全上下文? 在 Linux 中,特别是启用了 SELinux 的系统中,**安全上下文(Security Context)** 是指附加到进程、文件或其他资源上的元数据。这些元数据描述了对象的访问权限以及其所属的安全类别[^1]。 对于文件来说,可以通过 `ls -Z` 命令查看其安全上下文信息。例如: ```bash $ ls -Z /var/www/html/index.html unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html ``` 上述输出表示 `/var/www/html/index.html` 文件具有以下安全上下文属性: - **User**: unconfined_u (用户身份) - **Role**: object_r (角色) - **Type**: httpd_sys_content_t (类型) - **Level/MCS**: s0 (多级安全级别) #### SELinux 访问控制机制详解 SELinux 实现了一种更严格的访问控制模型,称为强制访问控制(MAC),补充了传统的自主访问控制(DAC)。以下是 SELinux 主要的访问控制机制组成部分: ##### 1. 类型强制(Type Enforcement, TE) TE 是 SELinux 的核心部分之一,通过定义域(Domain)和类型的规则来约束主体(Subject)对客体(Object)的操作。只有当主体的域允许操作特定类型的客体时,访问才会被批准[^5]。 例如,在 Web 服务器环境中,HTTPD 进程通常运行在一个名为 `httpd_t` 的域下。为了确保 HTTPD 只能读取指定目录下的文件,管理员会设置相应的文件类型为 `httpd_sys_content_t` 或其他合适的类型[^3]。 ##### 2. 基于角色的访问控制(RBAC) 除了 TE 外,SELinux 还支持 RBAC 模型。在这种模式下,用户被分配给不同角色,而每个角色则关联一组可用的域集合。这使得管理员能够更好地分离职责并减少不必要的特权提升风险。 ##### 3. 多级安全(MLS) 虽然 MLS 不是所有部署场景都必需的功能,但它提供了一个额外维度——敏感度分级(Sensitivity Levels 和 Categories)。借助此功能,可以进一步细化哪些用户可以在何种条件下访问某些机密资料[^4]。 #### 如何管理 SELinux 上下文? 针对实际运维需求,Linux 提供了一系列实用工具帮助调整或修复错误配置好的文件标签。下面列举几个常用命令及其用途说明[^2]: - 使用 `chcon`: 手动修改单个文件或者目录的 context; ```bash chcon -t httpd_sys_content_t /website/example.com/ ``` - 利用 `semanage fcontext`: 创建持久化规则以便自动应用正确的 contexts 至匹配路径; ```bash semanage fcontext -a -t httpd_sys_content_t "/website(/.*)?" restorecon -Rv /website ``` 最后一步执行 `restorecon`, 它依据预设数据库重新设定目标位置的所有 entries 正确的 security contexts. --- ### 示例代码展示如何验证及修正文件的安全上下文 假设我们希望让 Apache 能够正常加载自定义站点根目录 `/website` 下的内容,则需按照如下方式处理: ```bash # 查看当前状态 ls -lZ /website/ # 添加新的fcontext记录 sudo semanage fcontext -a -t httpd_sys_content_t "/website(/.*)?" # 应用更改至现有结构 sudo restorecon -Rv /website ``` 完成以上步骤之后再次确认效果即可。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值