如下操作:
groupadd sftp #创建用户组
useradd -g sftp -s /sbin/nologin -M sftpuser #创建用户并且加入到这个用户组
passwd sftpuser #设置用户密码
cd /home
mkdir sftpuser #创建sftp用户主目录
chown root:sftp sftpuser
chmod 755 sftpuser
cd sftpuser
mkdir folder #主目录下面还需要一级目录
chown sftpuser:sftp folder
vim /etc/ssh/sshd_config
进入文件后,变更以下设置
Subsystem sftp internal-sftp
再添加以下设置
Match User sftpuser
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /home/sftpuser
systemctl restart sshd
至此,sftp服务就配置好了,用户名是sftpuser,密码是之前设定的,“/home/sftpuser”就是连入sftp后看到的默认路径,一般我们会使用/home/sftpuser/folder这个路径。
顺便说一下,有时会有这样的需求,比如java服务部署在/usr/local/tomcat/webapps路径中,而sftp连入后进入的路径是/home/sftpuser。我们希望即便是在这个路径中,也能管理tomcat中部署的java文件(如更新程序),这时就需要使用mount命令了,将/usr/local/tomcat/webapps路径映射过来。
假设tomcat部署路径:/usr/local/tomcat/webapps
假设要映射到的路径:/home/sftpuser/tomcat/webapps
#首先要配置tomcat部署目录的权限,否则即使能访问也可能无法写入
chown -R root:sftp /usr/local/tomcat/webapps #给目录分配sftp用户组,使得组下的sftpuser用户能有操作权限
chmod -R 770 /usr/local/tomcat/webapps #给目录分配权限,使得sftpuser能正常写入
cd /home/sftpuser/folder
mkdir tomcat
cd tomcat
mkdir webapps
mount --bind /usr/local/tomcat/webapps /home/sftpuser/folder/tomcat/webapps
再次连入sftp,发现这些目录能正常访问了,但是事情还没有结束,以上的目录映射是临时的,重启后失效,还需要进行一下设置:
vi /etc/fstab
/usr/local/tomcat/webapps /home/sftpuser/folder/tomcat/webapps auto bind 0 0 #添加这一行