欢迎您, 来到 宁时修博客.^_^

Linux系统基础知识 --- 自带 SFTP 用户目录限制

2019/04/11 言则行 Linux 540
限制SFTP账户的权限

一、需求

    SFTP在Linux下是一个很方便很安全的文件传输工具,常常用它在Linux服务器与本地机器之间传输文件。SFTP账号是基于SSH账号的,默认情况下访问服务器的权限很大,需要像ftp那样限制SFTP账号相关的访问权限。



二、做法

    注意:需要openssh-server 4.8p1以上,配置权限需要新配置项ChrootDirectory来完成。


    我们区分下单个用户和多个用户怎么做。


    1、单个用户该怎么做

    创建一个Linux 账户 sftpuser,-s 分配shell为 /sbin/nologin让它不能登录系统,-M 不创建用户家目录。

$ useradd -s /sbin/nologin -M sftpuser


    设置密码:

$ passwd sftpuser
Changing password for user sftpuser.
New password: 
Retype new password:


    创建sftpuser用户家目录和设置权限:

$ mkdir /data/upload -p
$ cd /data
$ chown root.sftpuser upload/
$ chmod 755 upload


    修改sshd_config文件:

$ vim /etc/ssh/sshd_config

#Subsystem sftp	/usr/libexec/openssh/sftp-server  #注释这行
Subsystem  sftp  internal-sftp   #添加这行

#末尾再添加以下几行
Match User sftpuser        # 此处设置控制的用户,也可设为用户组
	ChrootDirectory /data/upload  # 允许用户访问的目录
	X11Forwarding no   # 禁止X11转发
	AllowTcpForwarding no   # 禁止tcp转发
	ForceCommand internal-sftp

    保存,然后重启sshd,systemctl restart sshd。

    在本机连接测试,会发现上传不了文件。所以还得创建一个可以写入的目录。

$ cd /data/upload/
$ mkdir upload
$  chown sftpuser.sftpuser upload

    这样sftpuser用户就有权限在 upload目录里上传文件了。


    我们使用工具登录看到的是这样:

            20.png



    2、用户组用户

    创建一个Linux用户组:

$ groupadd sftp


    创建多个用户并制定用户组为刚才创建的用户:

$ useradd -g sftp -s /sbin/nologin -M sftp01
$ useradd -g sftp -s /sbin/nologin -M sftp02


    设置密码,略过。。

    创建用户家目录和设置权限:

$ mkdir -p /data/{sftp01,sftp02}
$ chown root.sftp /data/{sftp01,sftp02}
$ chmod 755 /data/{sftp01,sftp02}


    修改sshd_config文件:

Subsystem  sftp  internal-sftp
Match group sftp      # 用户组模式
        ChrootDirectory /data/%u #将用户限制在其家目录下,%u指的是账号名
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp

    保存,然后重启sshd,systemctl restart sshd。


    创建可写入目录:

$ cd /data/sftp01/
$ mkdir upload
$ chown sftp01.sftp upload


$ cd /data/sftp02/
$ mkdir upload
$ chown sftp02.sftp upload




点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群