天天看点

SFTP多用户权限 linux环境 一站式解决方案

文章目录

  • ​​一、方案1​​
  • ​​1. 创建用户组​​
  • ​​2. 添加用户并设置为sftp组​​
  • ​​3. 设置用户密码​​
  • ​​4. 创建用户目录。并设置权限​​
  • ​​5. 修改SSH配置​​
  • ​​6. 在/etc/ssh/sshd_config添加用户组配置​​
  • ​​7. 最后重启SSH​​
  • ​​二、方案2(推荐)​​
  • ​​2.1. 创建用户组​​
  • ​​2.2. 添加用户并设置为sftp组​​
  • ​​2.3. 设置用户密码​​
  • ​​2.4. 创建用户目录。并设置权限​​
  • ​​2.5. 修改SSH配置​​
  • ​​2.6. 在/etc/ssh/sshd_config添加用户组配置​​
  • ​​7.最后重启SSH​​

linux 文件服务器需要创建多个sftp用户,每个用户分别给予各个厂商,用户之间无权限操作对方目录的权限。

例如:sftp1用户无法操作sftp2用户的目录以及下面的数据文件,相反,一样!

一、方案1

1. 创建用户组

groupadd sftp      

2. 添加用户并设置为sftp组

useradd -g sftp -s /sbin/nologin -M sftp1    
useradd -g sftp      

3. 设置用户密码

passwd sftp1
passwd      

4. 创建用户目录。并设置权限

mkdir -pv /home/sftp/sftp1
mkdir -pv /home/sftp/sftp2
 
chown sftp1:sftp /home/sftp/sftp1
chown sftp2:sftp /home/sftp/sftp2
 
chmod 700 /home/sftp/sftp1
chmod 700 /home/sftp/sftp2
 
usermod -d /home/sftp/sftp1 sftp1
usermod      

5. 修改SSH配置

先备份配置文件
cp -avi /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
 
vim /etc/ssh/sshd_config
找到关键词 Subsystem
将
Subsystem      sftp    /usr/libexec/openssh/sftp-server
修改为
Subsystem sftp      

6. 在/etc/ssh/sshd_config添加用户组配置

Match Group sftp   #限制的用户组
X11Forwarding no  
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /home/sftp  #所有sftp用户的根目录,也就是sftp组的根目录      

7. 最后重启SSH

service      
二、方案2(推荐)

2.1. 创建用户组

groupadd sftp      

2.2. 添加用户并设置为sftp组

useradd -g sftp -s /sbin/nologin -M sftp1    
useradd -g sftp      

2.3. 设置用户密码

passwd sftp1
passwd      

2.4. 创建用户目录。并设置权限

mkdir -pv /home/sftp/sftp1
mkdir -pv /home/sftp/sftp2

chown root:root /home/sftp/sftp1
chown root:root /home/sftp/sftp2

mkdir /home/sftp/sftp1/send
mkdir /home/sftp/sftp2/send

chown sftp1.sftp /home/sftp/sftp1/send
chmod 775 /home/sftp/sftp1/send

chown sftp2.sftp /home/sftp/sftp2/send
chmod 775      

2.5. 修改SSH配置

先备份配置文件
cp -avi /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
 
vim /etc/ssh/sshd_config
找到关键词 Subsystem
将
Subsystem      sftp    /usr/libexec/openssh/sftp-server
修改为
Subsystem sftp      

2.6. 在/etc/ssh/sshd_config添加用户组配置

#sftp1用户配置
Match User sftp1
ChrootDirectory /home/sftp/sftp1 #sftp1用户登录的根目录
AllowTcpForwarding no
X11Forwarding no
AllowTcpForwarding no
ForceCommand    internal-sftp

#sftp2用户配置
Match User sftp2
ChrootDirectory /home/sftp/sftp2 #sftp2用户登录的根目录      

7.最后重启SSH

service      

继续阅读