在CentOS系统的日常运维中,系统核心文件如/etc/passwd、/etc/shadow、/boot目录下的引导文件等,存储着系统运行的关键配置和信息,限制非必要用户对这些文件的访问权限,是防范系统被恶意篡改、信息泄露的基础操作。

一、通过基础文件权限限制访问
CentOS系统自带的权限体系是最基础的访问控制方式,通过修改文件的读、写、执行权限,可以直接限制不同用户对文件的访问能力。我们可以使用chmod命令修改权限,chown命令修改文件所属用户和组。
首先查看核心文件的当前权限,以/etc/shadow文件为例,该文件存储用户密码哈希值,默认权限非常严格:
# 查看/etc/shadow文件权限 ls -l /etc/shadow # 输出示例:-r-------- 1 root root 1024 某月 某日 /etc/shadow
如果需要限制某个普通用户无法读取该文件,可以确认文件所有者为root,其他用户权限位无读权限即可。如果需要调整权限,比如仅允许root和指定用户组读取,可执行以下命令:
# 设置/etc/shadow仅root用户可读写,root组用户可读,其他用户无权限 chmod 640 /etc/shadow # 将文件所属组修改为指定的管理组,比如admin组 chown root:admin /etc/shadow
二、使用访问控制列表(ACL)实现精细化管控
基础权限体系仅支持用户、组、其他用户三个维度的权限设置,若需要给单个用户单独分配核心文件的访问权限,就需要用到ACL功能。CentOS系统默认支持ACL,首先需要确认文件系统是否开启了ACL支持:
# 查看根分区是否开启ACL mount | grep " / " # 输出中包含acl字样则表示已开启
如果没有开启,可以修改/etc/fstab文件,在对应分区的挂载选项后添加acl,然后重新挂载即可。接下来使用setfacl命令给指定用户分配核心文件的访问权限,比如允许user1用户读取/boot/grub2/grub.cfg文件:
# 给用户user1添加/boot/grub2/grub.cfg的读权限 setfacl -m u:user1:r /boot/grub2/grub.cfg # 查看ACL权限设置结果 getfacl /boot/grub2/grub.cfg
如果需要移除某个用户的ACL权限,可以使用以下命令:
# 移除user1对/boot/grub2/grub.cfg的所有ACL权限 setfacl -x u:user1 /boot/grub2/grub.cfg
三、通过sudo配置限制核心文件操作权限
除了直接限制文件的访问权限,还可以通过sudo配置,限制用户仅能通过指定的命令操作核心文件,避免用户直接获取核心文件的完整操作权限。编辑sudo配置文件可以使用visudo命令,该命令会自动检查语法错误,避免配置失误导致sudo不可用。
比如需要允许admin组的用户仅能使用cat命令读取/etc/passwd文件,不能使用其他命令修改该文件,可以添加如下配置:
# 在visudo打开的配置文件中添加以下内容 %admin ALL=(root) /bin/cat /etc/passwd
配置完成后,admin组的用户执行sudo cat /etc/passwd可以正常查看文件内容,但如果尝试执行sudo vim /etc/passwd则会被拒绝,因为该命令不在允许的sudo命令列表中。
四、特殊权限与核心文件保护
CentOS系统还有一些特殊权限位,合理使用可以进一步保护核心文件。比如给核心文件设置不可修改属性,即使root用户在没有移除属性的情况下也无法修改文件。使用chattr命令可以设置文件的特殊属性:
# 给/etc/shadow文件添加不可修改属性 chattr +i /etc/shadow # 查看文件特殊属性 lsattr /etc/shadow # 输出示例:----i----------- /etc/shadow
设置i属性后,任何用户都无法修改、删除该文件,如果需要修改文件,需要先移除该属性:
# 移除/etc/shadow的不可修改属性 chattr -i /etc/shadow
五、权限配置验证与注意事项
完成权限配置后,需要切换对应用户验证权限是否生效,避免出现配置错误。比如切换到普通用户user1,尝试读取受限制的核心文件,确认是否按照预期被拒绝:
# 切换用户 su - user1 # 尝试读取/etc/shadow文件 cat /etc/shadow # 若权限配置正确,会输出权限拒绝的提示
在配置权限时需要注意,不要过度限制权限导致系统服务无法正常运行,比如部分系统服务需要读取/etc/passwd文件获取用户信息,若完全禁止其他用户读取该文件,可能导致服务启动失败。建议先在非生产环境测试权限配置效果,确认无异常后再应用到生产环境。