需结合linux标准权限、acl、mac及服务配置实现精细化控制:一、用chmod/chown设基础权限;二、用setfacl启acl细粒度授权;三、selinux/apparmor实施强制访问控制;四、samba等服务同步配置网络级权限;五、chroot或bind mount构建隔离视图。

如果您在统信UOS中需要对特定文件夹实施精细化访问控制,防止未授权读写或执行操作,则需结合Linux标准权限模型、ACL(访问控制列表)及用户组策略进行配置。以下是实现目录访问控制的具体步骤:
一、使用chmod与chown设置基础权限
该方法通过修改文件所有者、所属组及三类用户(所有者、同组用户、其他用户)的读、写、执行权限,实现基本层级的访问控制。适用于多数常规共享与隔离场景。
1、打开终端,切换至目标目录所在路径,例如:cd /home/user/Documents
2、查看当前目录权限与归属:ls -ld .
3、将目录所有权设为指定用户与组(如user1和sharegroup):sudo chown user1:sharegroup myfolder
4、设置目录权限为“所有者可读写执行、同组用户可读执行、其他用户无权限”:sudo chmod 750 myfolder
5、确保子目录与文件继承相同权限,递归应用:sudo chmod -R 750 myfolder
二、启用ACL实现细粒度权限分配
当基础权限无法满足多用户差异化访问需求(例如:允许用户A仅读取、用户B可读写、用户C禁止访问),需启用ACL功能。该机制支持为任意用户或组单独设定权限,且优先级高于传统rwx位。
1、确认文件系统已启用ACL挂载选项:mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl;若无输出,需编辑/etc/fstab,在对应分区行末添加acl参数并重启或重新挂载。
2、为目录启用ACL支持:sudo setfacl -d -m g:editors:rwx myfolder(设置默认组权限,新创建文件自动继承)
3、授予特定用户只读权限:sudo setfacl -m u:reader:r-x myfolder
4、授予特定组读写权限(不含执行):sudo setfacl -m g:uploaders:rw- myfolder
5、验证ACL设置结果:getfacl myfolder
三、通过SELinux或AppArmor实施强制访问控制(MAC)
在高安全要求环境中,需超越自主访问控制(DAC),启用强制访问控制机制。统信UOS桌面版默认未启用SELinux,但专业版或服务器版可能预装并启用。此方法依据安全策略标签限制进程对目录的实际访问能力,即使拥有传统rwx权限也无法越权操作。
1、检查SELinux状态:sestatus;若为disabled,跳过本节后续步骤。
2、确认目标目录当前安全上下文:ls -Z myfolder
3、为目录设置专用类型标签(如samba_share_t用于Samba共享):sudo semanage fcontext -a -t samba_share_t "/srv/fileshare(/.*)?"
4、应用新上下文到目录及其内容:sudo restorecon -Rv /srv/fileshare
5、确保相关服务(如smbd)运行于正确域内:ps -eZ | grep smbd
四、结合用户组与共享服务配置实现网络级权限隔离
当文件夹通过Samba或CHFS对外提供网络共享时,仅设置本地文件权限不足以阻止远程越权访问。必须同步配置服务端认证规则与路径级权限映射,确保网络请求在进入文件系统前即被策略拦截。
1、编辑Samba主配置文件:sudo vim /etc/samba/smb.conf
2、在共享段[myshare]中添加访问控制行:valid users = @sharegroup, user1 和 read list = user2
3、限制写入权限仅限特定用户:write list = user1, @admingroup
4、禁用匿名访问(如非必要):guest ok = no
5、重启Samba服务使配置生效:sudo systemctl restart smbd nmbd
五、利用chroot或bind mount构建隔离视图
对于需向特定服务或用户暴露受限子集目录的场景(如Web服务仅应访问/var/www/html下的静态资源),可通过chroot环境或bind mount创建逻辑隔离路径,从根源上切断对父目录及其他敏感路径的访问路径。
1、创建隔离根目录并复制必要库文件(适用于chroot):sudo mkdir -p /chroot/nginx/{dev,proc,sys,etc,usr/bin}
2、绑定挂载原目录到隔离路径:sudo mount --bind /var/www/html /chroot/nginx/var/www/html
3、设置挂载为私有命名空间,防止传播:sudo mount --make-private /chroot/nginx
4、验证挂载效果:ls /chroot/nginx/var/www/html 应仅显示预期文件,且无法向上遍历至/var或/
5、在服务配置中指定chroot路径或使用绑定路径作为工作目录,确保进程启动后仅可见受限视图。










