linux

怎样设置SFTP用户权限

小樊
38
2025-10-14 14:24:29
栏目: 编程语言

SFTP用户权限设置步骤

SFTP(SSH File Transfer Protocol)权限设置的核心目标是限制用户仅能通过SFTP传输文件,无法通过SSH登录,并通过Chroot Jail(目录隔离)约束其访问范围。以下是详细操作流程:

1. 创建专用SFTP用户

首先创建一个专门用于SFTP的用户(如sftpuser),并设置密码:

sudo adduser sftpuser  # 按提示输入密码及用户信息
sudo passwd sftpuser   # 确认密码

2. 限制用户Shell访问(防止SSH登录)

将用户的默认Shell更改为/sbin/nologin/bin/false,禁止其通过SSH登录:

sudo usermod -s /sbin/nologin sftpuser

3. 创建用户组并添加用户(可选但推荐)

为便于批量管理,创建一个SFTP用户组(如sftpusers),并将用户加入该组:

sudo groupadd sftpusers      # 创建组
sudo usermod -aG sftpusers sftpuser  # 将用户添加到组

4. 配置SSH服务器(关键步骤)

编辑SSH配置文件/etc/ssh/sshd_config,添加以下内容以启用SFTP并限制用户权限:

sudo nano /etc/ssh/sshd_config

在文件末尾添加(若已有Subsystem sftp行,需注释原行并替换):

# 启用内置SFTP子系统(推荐,更安全)
Subsystem sftp internal-sftp

# 限制SFTP用户的Chroot目录(%h代表用户家目录)
Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

说明

5. 设置目录权限(核心安全配置)

SFTP用户的家目录及子目录权限需严格遵循以下规则:

6. 重启SSH服务(应用配置)

保存配置文件后,重启SSH服务使更改生效:

sudo systemctl restart sshd

7. 验证配置(测试权限)

使用SFTP客户端(如FileZilla或命令行)连接服务器,验证用户权限:

sftp sftpuser@your_server_ip

8. 可选:配置SELinux(若系统启用)

若服务器启用了SELinux,需调整上下文以允许SFTP访问:

sudo setsebool -P sftp_home_dir on  # 允许SFTP访问家目录
sudo chcon -Rv --reference=/home/sftpuser /home/sftpuser/uploads  # 设置上传目录上下文

通过以上步骤,即可完成SFTP用户权限的设置,确保用户只能通过SFTP传输文件,且访问范围被严格限制在其家目录内。

0
看了该问题的人还看了