【SFTP】多个用户SFTP设置不同权限

背景:之前搭建SFTP多用户都是同属一个用户组,所有用户都可以进行读写操作,需要将各个用户权限调整,遂度娘一波,没有明显匹配的文档,自己综合整理记录。

实现目的

如下图所示,用户组G1的用户可读写目录1,目录2,用户组G2的用户只能访问目录2
在这里插入图片描述

新建SFTP目录

mkdir -p /opt/mwdata/{smsdata,shipin-data}
[注意]
其中/opt/mwdata作为sftp的主目录,充当所有用户的家目录

新建SFTP用户,及用户家目录相关调整

新增用户组 sftp为组1 ,sftpvisitor为组2
groupadd sftp
groupadd sftpvisitor

组1新增用户sms
useradd -g sftp -s /bin/false -d /opt/mwdata/ sms
passwd sms
123456
组1新增用户rms
useradd -g sftp -s /bin/false -d /opt/mwdata/ rms
passwd rms
123456
组2新增用户shipin
useradd -g sftpvisitor -s /bin/false -d /opt/mwdata/ shipin
passwd shipin
123456

========================================================================
[附加]
因生产环境可能有很多用户,涉及到删除或者调整,附加相关命令
删除用户:
userdel [-r] [-f] 用户名 
参数介绍
-r: 把用户的主目录一起删除(老许一不留神,-r把目录删了,结果里面数据都没了,所以要检查好,否则慎用!!!!!!)
-f: 强制删除用户,即使该用户已经登录到系统
修改用户家目录:
usermod -d [家目录] -u [uid] [username]
eg:
usermod -d /opt/mwdata/ -u 1003 user1
可以通过id [用户名]查看uid
[root@harbor01 mwdata]# id user1
uid=1003(user1) gid=1001(sftp)=1001(sftp)

配置sshd_config

vim /etc/ssh/sshd_config
Port 8018  #网上资料表示可以新增一个端口,用于sftp,我的环境并未加此参数,默认用ssh端口,也能正常使用,待研究!!!!!
注释掉#Subsystem      sftp    /usr/libexec/openssh/sftp-server
新增以下参数:
Subsystem       sftp    internal-sftp
Match Group sftp,sftpvisitor
ChrootDirectory %h
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no

[注意]
1、ChrootDirectory %h ,表示用户通过sftp登录后就把根目录切换到它自己的家目录
2、Match Group sftp,sftpvisitor 有可以新增Match User XXX,更细分

SFTP目录权限设置

[root@harbor01 opt]# ll -d /opt/mwdata/
drwxr-xr-x 8 root root 165 114 09:48 /opt/mwdata/
[root@harbor01 opt]#
说明:用户的家目录属主必须是root,且权限最高755,新建目录默认就是这个权限,检查即可。

[root@harbor01 opt]#cd /opt/mwdata/
赋予子目录smsdata权限
[root@harbor01 mwdata]# chown sms:sftp smsdata/
[root@harbor01 mwdata]# chmod 770 smsdata/
赋予子目录shipin-data权限
[root@harbor01 mwdata]# chown shipin:sftp shipin-data/
[root@harbor01 mwdata]# chmod 570 shipin-data/
[root@harbor01 mwdata]# ll
dr-xrwx---  2 shipin sftp   93 114 10:34 shipin-data
drwxrwx---  6 sms  sftp 4096 113 14:52 smsdata
[root@harbor01 mwdata]# 

[注意]
1、注意目录的所属和权限设置;
2、如果再有新增用户访问特定目录,只需要两步,第一、将新用户新增至sftpvisitor用户组;第二、赋予要访问新目录权限
eg:
useradd -g sftpvisitor -s /bin/false -d /opt/mwdata/ user1
passwd user1
123456
chown user1:sftp /opt/mwdata/user1-data
chmod 570 /opt/mwdata/user1-data 

测试验证

1、通过以下命令,用不同用户访问,亲自认证,正常可用。
sftp -oPort=8017 sms@192.168.124.86
2、客户端安装了lftp可以用以下命令测试验证
lftp -u sms,123456 sftp://192.168.124.86:8017
3、或者通过sftp传输工具等验证,如winscp等

补充

lftp下载限速

lftp -u laoxu,laoxu0 sftp://192.168.124.3:1617 -e "set net:timeout 300;set net:max-retries 3;set net:limit-rate 100000;get /edata/linux_TestV2.zip;quit"
# set net:timeout 300  设置超时时间300S
# set net:max-retries 3 设置重试次数 3次
# set net:limit-rate 100000 设置下载速度100kb/s

方法二:
修改/etc/lftp.conf
新增:
set net:limit-rate 500000:500000 #左边是上传,右边是下载
可以单独只配置下载
set net:limit-rate 500000

新增某用户单独访问单个目录

在sftp新建特定目录

Subsystem       sftp    internal-sftp
#优先匹配单用户
Match User HMNL
ChrootDirectory /opt/sftp/test
#再匹配用户组
Match Group sftp,sftpvisitor
ChrootDirectory %h
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no
  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux中设置SFTP,可以通过以下步骤进行操作: 1. 确保已经安装了OpenSSH服务器。可以使用以下命令检查是否已安装: ``` sudo apt-get install openssh-server ``` 2. 打开SSH配置文件`/etc/ssh/sshd_config`,并确保以下配置项已启用或添加: ``` Subsystem sftp internal-sftp Match user sftpuser ChrootDirectory /data/sftp ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no ``` 这些配置项的含义如下: - `Subsystem sftp internal-sftp`:指定使用系统自带的internal-sftp作为SFTP服务。 - `Match user sftpuser`:匹配用户,可以根据需要添加多个用户或组。 - `ChrootDirectory /data/sftp`:设置用户SFTP根目录为`/data/sftp`,确保用户只能在自己的目录下活动。 - `ForceCommand internal-sftp`:强制执行内部SFTP命令,并忽略任何`~/.ssh/rc`文件中的命令。 - `X11Forwarding no`:禁止用户使用X11转发。 - `AllowTcpForwarding no`:禁止用户使用端口转发。 3. 保存并关闭配置文件。 4. 重启SSH服务以使配置生效: ``` sudo service ssh restart ``` 5. 确保用户SFTP根目录已创建,并设置正确的权限: ``` sudo mkdir /data/sftp sudo chown root:root /data/sftp sudo chmod 755 /data/sftp ``` 这将创建一个名为`/data/sftp`的目录,并将其所有权设置为root用户。 6. 创建SFTP用户设置密码: ``` sudo adduser sftpuser sudo passwd sftpuser ``` 这将创建一个名为`sftpuser`的用户,并设置密码。 现在,您已经成功设置SFTP服务,并限制了用户只能在其指定的目录下进行操作。用户可以使用SFTP客户端连接到服务器,并通过SFTP协议进行文件传输。 #### 引用[.reference_title] - *1* *2* [Linux服务器下搭建SFTP服务](https://blog.csdn.net/huanglm_OneWholeLife/article/details/124636003)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [linux配置sftp权限设置](https://blog.csdn.net/weixin_36108913/article/details/116608101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值