2019年7月15日 / 977次阅读
SSH
很多时候,我们需要配置某些用户使用Linux服务器,只能使用sftp服务,不能登录shell,本文介绍如何在SSH中配置这样的用户。
创建要给新用户sftpuser
$ sudo useradd -s /bin/false -m sftpuser
-s参数指定了这个用户没有shell可用(还没有配置sftp,这样做只是为了更安全)
-m参数表示给这个用户创建home目录(后面可以看到,这个参数多余了)
给sftpuser设置密码
$ sudo passwd sftpuser
修改sshd_config配置文件
Subsystem sftp internal-sftp
Match User sftpuser
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp
ChrootDirectory /home/sftpuser
从上到下依次解释:
匹配用户名sftpuser
关闭X11Forwarding和AllowTcpForwarding,这两个forwarding都跟sftp业务无关,
不允许登录TTY,
只能使用sftp相关命令,
只能在/home/sftpuser目录下活动。
然后重启ssh服务器,我们先试着用sftpuser登录ssh,发现了如下错误:
C:\Users\xinli>ssh sftpuser@192.168.78.134
sftpuser@192.168.78.134's password:
PTY allocation request failed on channel 0
This service allows sftp connections only.
Connection to 192.168.78.134 closed.
就应该这样。
修改目录权限
目录权限设置要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。
$ pwd
/home
$ sudo chown -R root:root sftpuser
$ su root
$ cd sftpuser
$ mkdir upload
$ chown -R sftpuser:sftpuser upload
将sftpuser的home全部给root,并且在这个目录中设置一个upload目录,upload给sftpuser。
这样,sftpuser这个用户登录sftp之后,只能打开upload目录,并且只有在upload目录下才有写的权限。
/home/sftpuser目录下的其它文件其实是没有存在的意义的,最开始useradd使用了-m参数,多余了。
然后用sftp软件连接测试:
通过SSH配置纯sftp用户及权限
测试成功,sftpuser用户就成为要给纯sftp用户,只能使用sftp业务,有自己独立的读写目录。
通过ssh的配置,来支持sftp用户,不用另外安装其它sftp服务器软件。不过,貌似不能很方便地限制文件夹的最大尺寸!
本文链接:https://www.maixj.net/ict/ssh-sftp-21993
《通过SSH配置纯sftp用户及权限》有3条留言
前一篇:w命令显示信息详解
后一篇:并购套利的案例
-->只要几分钟回答问卷,就能轻松赚现金!
©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。
ChrootDirectory /home/sftpuser,这一行配置可能会造成sftp用户无法登录!不清楚原因。 [ ]
sftp用户应该还不算 伪用户(psuedo users) [ ]
sftp也算是一种登录方式。 [ ]