Ubuntu配置SFTP服务用户目录权限

本文介绍如何配置Linux系统,使特定用户仅能通过SFTP访问指定目录,并限制其操作范围及登录方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读限制一个Linux用户,让他只能在指定的目录下进行添加、修改、删除操作,并且只能使用sftp登录服务器,不能用ssh操作。用系统自带的internal-sftp。

创建新用户ui,禁止ssh登录

可用使用-M参数,禁止创建个人目录

useradd -s /sbin/nologin xiaobai //xiaobai表示你要创建的新用户

设置用户密码

passwd xiaobai

配置sshd_config

vim /etc/ssh/sshd_config

修改为下面内容,保存退出

#注释掉这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
#添加在配置文件末尾
Subsystem sftp internal-sftp           #指定使用sftp服务使用系统自带的internal-sftp
Match User xiaobai                     #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /var/www               #用chroot将指定用户的根目录,有权限要求,看下面注释
ForceCommand internal-sftp             #指定sftp命令

PS:设置目录权限,目录的权限设定有两个需要注意的地方:

目录开始一直往上到系统根目录为止的目录拥有者都只能是root

目录开始一直往上到系统根目录为止都不可以具有群组写入权限

重启sshd服务

service ssh restart      #不知道为什么service sshd restart命令无法使用

后面就是登录测试的过程,如果无法登陆,请注意目录权限设置

修改目录所有者和权限

chmod -R 755 /var/www/html
chown -R xiaobai:xiaobai /var/www/html      #目录随意指定
ChrootDirectory /var/www  这条命令的www目录必须是root权限,www下面的文件夹(或文件)给以用户权限,文中给的是xiaobai权限。
./      root
../     root
html    xiaobai
html2   xiaobai

原文来自:https://www.linuxprobe.com/ubuntu-set-sftp.html

### 配置SFTP服务Ubuntu 24.04系统中配置SFTP服务,可以按照以下步骤进行操作: #### 初始一次性配置 1. **安装系统软件包** 确保系统已安装OpenSSH服务器,这是提供SFTP服务的基础。可以通过以下命令安装: ```bash sudo apt update sudo apt install openssh-server ``` 2. **创建 SFTP目录** 为SFTP用户创建一个根目录,该目录将是用户登录后的主目录。例如,创建名为`sftpusers`的目录: ```bash sudo mkdir /sftpusers ``` 3. **配置 SFTP 服务** 编辑SSH配置文件,通常位于`/etc/ssh/sshd_config`,添加或修改以下内容以启用SFTP服务: ``` Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory /sftpusers/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no ``` 完成配置后,重启SSH服务以应用更改: ```bash sudo systemctl restart ssh ``` #### 添加新的 NFS 文件共享(例如 S3 存储桶) 如果需要将NFS文件共享(如AWS S3存储桶)挂载到SFTP用户目录中,可以使用`systemd mount units`来实现自动挂载。创建一个`.mount`文件,例如`/etc/systemd/system/s3.mount`,并添加如下内容: ``` [Unit] Description=Mount S3 Bucket After=network.target [Mount] What=s3fs#<bucket-name> Where=/sftpusers/<username>/s3 Type=fuse Options=_netdev,allow_other,use_path_request_style,url=https://s3.<region>.amazonaws.com ``` 启用并启动该挂载点: ```bash sudo systemctl daemon-reexec sudo systemctl enable s3.mount sudo systemctl start s3.mount ``` #### 添加新的 SFTP 用户 1. **创建新的 SFTP 用户** 创建一个新的用户,并将其加入`sftpusers`组,以便该用户能够使用SFTP服务: ```bash sudo adduser <username> sudo usermod -aG sftpusers <username> ``` 同时,确保用户的家目录位于SFTP目录下,并且权限设置正确: ```bash sudo mkdir /sftpusers/<username> sudo chown root:root /sftpusers/<username> sudo chmod 755 /sftpusers/<username> ``` 2. **[可选] SSH 密钥认证** 对于需要更高安全性的场景,可以配置SSH密钥认证。首先,在客户端生成SSH密钥对: ```bash ssh-keygen -t rsa -b 4096 ``` 然后,将公钥复制到服务器上的用户目录中: ```bash ssh-copy-id <username>@<server-ip> ``` #### 授予用户对现有共享的访问权限 1. **将共享添加到用户** 如果有多个用户需要访问同一个NFS共享,可以将这些用户添加到一个特定的用户组中,并确保该用户组对共享目录具有适当的读写权限。 #### 常见问题解答 1. **其他检查命令** - 检查SSH服务状态: ```bash sudo systemctl status ssh ``` - 查看SFTP连接日志: ```bash sudo tail -f /var/log/auth.log ``` 通过以上步骤,可以在Ubuntu 24.04系统中成功配置SFTP服务,同时支持NFS文件共享和SSH密钥认证等高级功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值