You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 6.9文件服务器:如何将staff组用户锁定至/home/sharedfolder

如何在CentOS 6.9中将staff组用户锁定在/home/sharedfolder并赋予完整权限?

刚好我之前处理过类似的需求,咱们一步步来配置,确保既锁死用户在指定目录,又让他们能完全读写里面的子目录:

1. 先搞定目录权限与归属

chroot的要求有点严格,必须保证根目录(这里就是/home/sharedfolder)的属主是root,且权限不能高于755(否则sshd会拒绝chroot)。然后我们再给staff组开放子目录的完全权限:

# 设置主目录属主和权限
chown root:root /home/sharedfolder
chmod 755 /home/sharedfolder

# 给staff组赋予该目录下所有子目录/文件的完整权限(包括未来新建的)
# 先设置现有文件的权限
chgrp -R staff /home/sharedfolder/*
chmod -R 775 /home/sharedfolder/*

# 设置setgid位,让新建的文件/目录自动继承staff组权限
find /home/sharedfolder -type d -exec chmod g+s {} \;

2. 配置SSH服务(/etc/ssh/sshd_config)

我们需要用internal-sftp模块来实现chroot,同时限制staff组用户的访问:

先打开配置文件:

vi /etc/ssh/sshd_config

找到原来的Subsystem sftp行,替换成:

Subsystem sftp internal-sftp

然后在文件末尾添加以下配置,专门针对staff组:

Match Group staff
    ChrootDirectory /home/sharedfolder
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
  • ChrootDirectory:指定用户登录后被锁定的根目录(系统层面的路径)
  • ForceCommand:强制用户使用sftp,禁止shell登录(如果不需要shell的话,这样更安全)
  • 禁用端口转发和X11转发,进一步限制权限

3. 调整用户账户配置(/etc/passwd)

因为chroot后,用户的“/”对应系统的/home/sharedfolder,所以需要把staff组用户的家目录改成/,shell改成/sbin/nologin(禁止shell登录,只允许sftp):

比如修改用户john的配置:

usermod -d / -s /sbin/nologin john

或者直接编辑/etc/passwd,找到对应行,把原来的/home/john改成/,shell改成/sbin/nologin。

同时确保所有需要访问的用户都属于staff组:

usermod -aG staff john

4. 验证配置并重启服务

先检查sshd配置是否合法:

sshd -t

如果没有报错,重启sshd服务:

service sshd restart

现在可以用一个staff组用户测试sftp登录,比如:

sftp john@your-server-ip

登录后你会发现用户只能在/home/sharedfolder下操作,无法跳转到系统的/home或其他目录,而且对里面的子目录拥有完整的读写权限。

注意事项

  • 如果你需要允许用户使用shell登录(不只是sftp),那配置会复杂一些,需要在chroot目录下搭建完整的shell环境(比如/bin/bash、/etc/passwd、/etc/group等文件),但一般文件服务器用sftp足够了。
  • 确保/home/sharedfolder下没有任何属于普通用户的文件/目录在根层级,否则chroot会失败,根目录必须完全由root控制。

内容的提问来源于stack exchange,提问作者Gray Loon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:28:11