需通过宝塔FTP管理创建账号、修改家目录、配置用户组与Pure-FTPd参数实现单网站子目录隔离:先在FTP界面添加绑定站点的账号;再于设置中将家目录改为具体子路径并调整权限;接着用groupadd、usermod命令创建隔离组并禁用shell;最后启用ChrootEveryone等配置并重启服务,经FileZilla和SSH双重验证确保权限受限。

如果您在宝塔面板中需要为某个网站单独创建FTP账号,并确保该账号仅能访问指定目录,避免越权操作,则需通过面板内置的FTP管理功能进行精细化配置。以下是实现此目标的具体步骤:
一、创建独立FTP账号
宝塔面板支持为每个网站绑定专属FTP账号,该账号默认以网站根目录为家目录,且无法跨站访问其他网站文件。创建时需指定用户名、密码及绑定站点。
1、登录宝塔面板,点击左侧菜单栏中的FTP选项。
2、点击右上角的添加FTP按钮。
3、在弹出窗口中,填写FTP用户名(建议使用字母+数字组合,避免特殊字符)。
4、设置密码并确认,密码强度需满足面板要求(至少8位,含大小写字母与数字)。
5、在绑定站点下拉菜单中,选择目标网站域名。
6、勾选限制IP访问(可选),如需增强安全性,可填入允许连接的客户端IP段。
7、点击提交完成创建。
二、修改FTP账号家目录路径
默认情况下,新建FTP账号的家目录为所选网站的根目录(如/www/wwwroot/example.com)。若需进一步限制其仅访问子目录(如/www/wwwroot/example.com/upload),则需手动调整系统用户主目录并重载Pure-FTPd服务。
1、在FTP列表中,找到刚创建的账号,点击设置按钮。
2、在设置页中,将家目录字段修改为具体子路径,例如:/www/wwwroot/example.com/upload。
3、确保该子目录已存在且权限正确:执行命令 chown -R www:www /www/wwwroot/example.com/upload。
4、返回FTP列表页,点击该账号右侧的重启服务图标,使Pure-FTPd重新加载配置。
三、通过系统用户组限制目录边界
仅修改家目录可能因Pure-FTPd配置缺陷导致用户仍可向上遍历。为彻底锁定访问范围,需结合Linux系统用户机制,将FTP账号加入专用用户组并设置目录绑定挂载点。
1、在SSH中执行命令创建隔离用户组:groupadd ftp_isolate。
2、将FTP对应系统用户加入该组(用户名可在FTP列表“系统用户”列查看):usermod -aG ftp_isolate ftp_username。
3、为该用户设置严格的shell限制:usermod -s /usr/sbin/nologin ftp_username。
4、编辑Pure-FTPd配置文件:/www/server/pure-ftpd/etc/pure-ftpd.conf,确认以下参数已启用:ChrootEveryone yes 与 NoAnonymous yes。
5、重启Pure-FTPd服务:service pure-ftpd restart。
四、验证目录访问权限
配置完成后,必须通过实际FTP客户端连接测试,确认账号无法列出上级目录内容,且上传/下载操作仅限于指定路径内。
1、使用FileZilla等客户端,输入FTP服务器地址、端口(默认21)、账号及密码进行连接。
2、连接成功后,检查远程站点面板显示的初始路径是否为设定的子目录(如/upload),而非网站根目录。
3、尝试在远程面板中点击..返回上级目录,确认操作失败或无响应。
4、在子目录内新建文件夹并上传一个测试文件,验证写入权限正常。
5、使用SSH登录服务器,切换至该FTP用户:sudo -u ftp_username bash,执行pwd与ls ..,确认无法访问父级路径。










