在CentOS系统的日常管理和运维中,关键系统文件如/etc/passwd、/etc/shadow、/bin/bash等如果被普通用户随意修改或访问,很容易引发系统崩溃、数据泄露等安全问题,因此合理限制用户对这类文件的访问权限是系统管理员的基础工作。

一、基础文件权限设置
CentOS系统默认采用传统的Unix文件权限模型,通过读、写、执行三个权限位控制用户、用户组、其他用户对文件的访问,对应的命令是chmod。
1. 权限位说明
文件权限分为三组,每组三个权限位:
- 所有者权限:文件所属用户对文件的访问权限
- 所属组权限:文件所属用户组的成员对文件的访问权限
- 其他用户权限:既不是所有者也不属于所属组的用户对文件的访问权限
权限对应的数值为:读(r)=4,写(w)=2,执行(x)=1,三个权限位相加即可得到对应的数值权限。
2. chmod命令使用示例
假设我们要限制/etc/shadow文件,只允许root用户读写,其他用户无任何权限,操作如下:
# 查看当前/etc/shadow的权限 ls -l /etc/shadow # 设置权限为600,即所有者读写,组和其他用户无权限 chmod 600 /etc/shadow # 再次查看权限确认修改结果 ls -l /etc/shadow
二、修改文件所有者和所属组
如果关键系统文件的所有者或所属组配置错误,也会导致权限控制失效,此时需要使用chown命令修改文件的所有者和所属组。
1. chown命令基本语法
chown的基本用法为:chown [所有者]:[所属组] 文件路径,其中所有者和所属组可以根据需要单独修改或同时修改。
2. 操作示例
假设我们需要将/var/log/secure文件的所有者改为root,所属组改为adm,操作如下:
# 修改所有者和所属组 chown root:adm /var/log/secure # 查看修改结果 ls -l /var/log/secure
三、使用ACL扩展权限控制
传统的Unix权限模型只能针对所有者、所属组、其他用户三类主体设置权限,无法满足更细粒度的权限控制需求,此时可以使用ACL(访问控制列表)实现更灵活的权限配置。
1. 安装ACL工具
CentOS系统默认可能没有安装ACL工具,需要先安装acl包:
yum install -y acl
2. 设置ACL权限
使用setfacl命令为用户或用户组设置针对特定文件的权限,使用getfacl命令查看文件的ACL配置。
示例:允许user1用户只读访问/etc/passwd文件,其他权限保持默认:
# 为用户user1设置/etc/passwd的读权限 setfacl -m u:user1:r /etc/passwd # 查看ACL配置 getfacl /etc/passwd
如果需要移除user1的ACL权限,可以使用以下命令:
setfacl -x u:user1 /etc/passwd
四、注意事项
- 修改系统关键文件权限前,建议先备份原文件,避免误操作导致系统无法正常运行
- 不要随意给普通用户关键系统文件的写权限和执行权限,除非有明确的业务需求
- 使用ACL配置权限后,文件权限位会显示+号,此时传统的ls -l显示的权限位可能不完整,需要结合getfacl查看完整权限
- 修改/etc/shadow、/etc/passwd等认证相关文件的权限时,要严格按照系统默认的安全配置调整,避免引发用户认证失败问题
合理的文件权限配置是CentOS系统安全的基础防线,管理员需要根据业务需求和安全规范,定期排查关键文件的权限配置,及时修正不合理的权限设置。