应为宝塔环境创建首个安全隔离普通用户,步骤包括:一、创建系统级用户并禁用 shell;二、在宝塔中绑定网站与 FTP 权限;三、配置 ACL 细化目录访问控制;四、禁用面板高危功能并审计登录行为。

如果您已完成宝塔面板安装,但尚未创建独立于 root 的普通用户用于日常网站管理,则可能存在权限过大、误操作风险高、安全隔离不足等问题。以下是为宝塔环境配置首个安全隔离普通用户的详细步骤:
一、创建系统级普通用户并限制 shell 访问权限
该步骤旨在从操作系统层面建立身份隔离,避免直接使用 root 执行网站相关操作,同时禁用交互式 shell 以降低被提权利用的风险。
1、通过 SSH 以 root 身份登录服务器,执行以下命令创建用户名为 wwwuser 的普通账户:
2、为该用户设置强密码,输入两次确认:
3、禁用该用户的交互式 shell,仅允许其通过 SFTP 或宝塔文件管理器访问指定目录:
4、将用户加入 www 组(若未存在则先创建),便于后续与 Nginx/Apache 运行用户协同:
5、验证用户已创建且 shell 被正确设为 /sbin/nologin:
二、在宝塔面板中绑定并限制该用户权限范围
宝塔不提供原生多租户功能,但可通过“网站”与“FTP”模块实现逻辑隔离。本方法将用户绑定至单一网站根目录,禁止跨站访问及系统级操作。
1、登录宝塔面板,在左侧菜单点击「网站」→「添加站点」,输入域名(如 test.local)并完成创建。
2、进入该站点设置页,点击「权限设置」选项卡,将「运行目录所有者」修改为 wwwuser:www,勾选「递归修改目录权限」后保存。
3、点击左侧「FTP」→「添加 FTP」,填写如下信息:用户名填 wwwuser,密码设为独立强密码,主目录选择该网站根目录(例如 /var/www/test.local),取消勾选「允许访问上级目录」。
4、返回 FTP 列表,点击 wwwuser 右侧「权限设置」,确保仅开启「读取」和「写入」,关闭「删除」与「重命名」权限(防止误删核心文件)。
5、在面板右上角点击「安全」→「IP 白名单」,为 wwwuser 关联的 FTP 服务启用 IP 限制(如仅允许可信办公 IP 段)。
三、配置文件系统级访问控制(ACL)增强隔离
Linux ACL 可对特定用户授予精确到子目录的读写权限,弥补传统 UGO 权限模型的粗粒度缺陷,确保 wwwuser 无法访问其他网站目录或系统关键路径。
1、检查系统是否启用 ACL 支持(通常默认启用):
2、为网站根目录启用 ACL,并为 wwwuser 赋予 r - x 权限(仅浏览与进入,不可写):
3、针对需上传内容的子目录(如 uploads/、wp-content/),单独授予 wwwuser 读写执行权限:
4、验证 ACL 规则已生效:
5、设置默认 ACL,使该目录下新建文件自动继承 wwwuser 权限:
四、禁用面板内高危功能入口并审计登录行为
即使创建了普通用户,若其仍能通过宝塔界面访问数据库管理、终端、计划任务等模块,则隔离效果大打折扣。需主动关闭非必要入口并启用操作留痕。
1、进入宝塔面板「面板设置」→「功能开关」,关闭「终端」、「计划任务」、「软件商店」、「监控报表」四项功能(普通用户无需使用)。
2、在「安全」→「面板日志」中启用「操作日志记录」,确保 wwwuser 的所有面板操作(含 FTP 登录、文件修改)均被完整留存。
3、进入「安全」→「IP 访问限制」,添加规则:仅允许 wwwuser 通过 FTP 协议访问,禁止其通过 HTTP/HTTPS 方式登录面板后台(即封锁其面板登录能力)。
4、执行命令强制清除 wwwuser 的面板登录会话(若已存在):
5、验证 wwwuser 无法通过浏览器访问 http:// 服务器 IP:8888,但可通过 SFTP 客户端正常连接指定目录。