Sftp只允许用户访问指定的目录

  在一些生产环境中,有时,用户需要传数据到服务器,但是配置ftp服务比较麻烦,此时,我们可以为用户创建sftp账户,让用户使用sftp来上传下载所需的数据。Sftp账号即为系统账号,将账户密码给用户,用户除了能登录sftp上传下载数据外,还可以访问系统中的其他目录,由此,给我们的系统带来了安全隐患,再次,我们需要配置用户只能通过sftp登录系统下载上传所需的数据。(经测试完全可行)
1、创建sftp用户(此处,我们以账号dayi123为例进行配置)

     ~]# useradd dayi123
     ~]# echo dayi123 | passwd --stdin dayi123

 2、设置sftp的账户权限

设置sftp的账号权限需要通过修改ssh配置文件 /etc/ssh/sshd_config,ssh配置文件修改内容如下:

    # Subsystem     sftp    /usr/libexec/openssh/sftp-server   #注释掉此行并添加一下行
    Subsystem sftp internal-sftp         
    Match User dayi123                     #此处设置控制的用户,也可以设置为组
             ChrootDirectory /home/dayi123  #允许用户访问的目录,此处我们设置为用户家目录
             X11Forwarding no
             AllowTcpForwarding no
             ForceCommand internal-sftp

配置完成后需要重启服务:

[root@server2 ~]# /etc/init.d/sshd restart

此处配置完我们用另一台机器测试登录,会出现错误,使用win系统sftp客户端同样也不能正常登陆

    [root@server2 ~]# sftp dayi123@10.0.0.13
    Connecting to 10.0.0.13...
    dayi123@10.0.0.13's password:
    Write failed: Broken pipe
    Couldn't read packet: Connection reset by peer

这是由于没有配置目录的正确权限,我们需要设置用户访问的目录的权限
3、设置允许用户访问目录的权限

   Sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755,但此目录下的文件及目录的权限我们可根据自己的需求任意设置。

    ~]# chown root:root /home/dayi123/
    ~]# chmod 755 /home/dayi123/
    ~]# ll /home/
    total 4
    drwxr-xr-x 2 root root 4096 Sep  8 17:54 dayi123
    ~]# usermod dayi123 -s /sbin/nologin    #设置该sftp账号不允许登录
    ~]# /etc/init.d/sshd reload

至此,我们的sftp配置已经完成,
4、测试sftp

使用linux测试:

    ~]# sftp dayi123@10.0.0.13
    Connecting to 10.0.0.13...
    dayi123@10.0.0.13's password:
    sftp> pwd
    Remote working directory: /
    sftp> cd ../
    sftp> pwd
    Remote working directory: /

使用windows客户端winscp测试:

  登录后的目录定位到了指定的目录”/home/dayi123”目录,不能浏览系统的其他目录,也不能切换目录。

       
5、设置用户上传文件权限

下面的情况可能跟用户安装的操作系统有关系,如果每月启用selinux,可以把目录设置的用户和群 设置为 dayi123即可,不用进行如下的操作。      

   经过上面的设置后用户可正常浏览下载目录中的文件,但是用户无法上传文件。即使在/home/dayi123/下简历属主为dayi123的目,用户也无法上传。此时需要在/home/dayi123/下建立属主属组为dayi123的目录,并给/home/dayi123目录设置acl权限即可。

    ]# mkdir /home/dayi123/test
    ]# chown dayi123:dayi123 /home/dayi123/test
    ]# setfacl -m u:dayi123:rwx /home/dayi123
    ]# getfacl /home/dayi123/
    getfacl: Removing leading '/' from absolute path names
    # file: home/dayi123/
    # owner: root
    # group: root
    user::rwx
    user:dayi123:rwx
    group::r-x
    mask::rwx
    other::r-x
————————————————
版权声明:本文为CSDN博主「dayi_123」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dayi_123/article/details/78026419

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
其他人可以通过创建自己的用户账户来登录sftp服务器,而不是使用root用户。这可以通过以下步骤完成: 1. 创建新用户账户:使用adduser命令创建一个新的用户账户。例如,要创建名为“john”的新用户账户,可以使用以下命令: ```bash sudo adduser john ``` 2. 设置用户密码:使用passwd命令为新用户设置密码。例如,要为“john”用户设置密码,可以使用以下命令: ```bash sudo passwd john ``` 3. 将新用户添加到sftp组中:使用usermod命令将新用户添加到sftp组中。例如,要将“john”用户添加到sftp组中,可以使用以下命令: ```bash sudo usermod -aG sftp john ``` 4. 配置sftp服务器:为了允许用户通过sftp登录服务器,需要在sftp配置文件中指定他们的访问权限。在OpenSSH中,可以编辑/etc/ssh/sshd_config文件,并添加以下行: ``` Match group sftp ChrootDirectory /sftp/%u ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no ``` 上述行指定sftp用户组的匹配规则,并指定sftp目录的路径。在此示例中,sftp目录位于/sftp目录下的用户目录中。此外,指定sftp连接的强制命令,以及禁止X11转发和TCP转发。 5. 重启SSH服务:完成上述更改后,需要重启SSH服务以使更改生效。可以使用以下命令来重启SSH服务: ```bash sudo service ssh restart ``` 现在,用户“john”就可以通过sftp登录到服务器,并且只能访问其个人的sftp目录

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值