最近业务需求搞了一下sftp,配合samba感觉还是不错的。

上干货:笔者的环境是centos7.4

1、建立一个名为sftpuserssftp用户组

groupadd sftpusers


2、建立sftp账号(使用-s /bin/false来禁止sftpeb这个账户ssh登录权限)

useradd -s /bin/false -g sftpusers sftp

3、修改sftp密码

passwd sftp    #之后输入两次密码成功即可

4、配置ssh和权限;修改为下面内容,保存退出。

  1. UsePAM yes #UsePAM改成yes
  2.  
  3. #注释掉这行
  4. #Subsystem sftp /usr/libexec/openssh/sftp-server
  5. #添加在配置文件末尾
  6. Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
  7. Match Group sftpusers #匹配用户,如果要匹配多个组,多个组之间用逗号分割
  8. ChrootDirectory %h #用chroot指定sftp账户登录的默认根目录
  9. ForceCommand internal-sftp #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
  10. X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
  11. AllowTcpForwarding no

5、修改 /home/sftpeb/目录权限为root所有

  1. chown root:root /home/sftpeb
  2. chmod 755 /home/sftpeb

6、此时sftp用户登录后并不能上传文件,那是因为登录后默认是用户目录,比如/home/sftpeb,但是该目录是root用户拥有,因此我们还要修改权限。在用户目录下建立子目录,让sftpusers组中的用户可读写文件。

  1. cd /home/sftpeb/
  2. mkdir upload

7、授权upload文件夹读写 ,让子文件夹upload属于sftp

  1. chown -R sftpeb /home/sftpeb/upload
  2. chmod 755 -R /home/sftpeb/upload

8、检查系统selinux是否关闭,如未关闭一定要关闭!(这点很重要,如果不关闭会导致无法上传,出现权限不足问题“Permission denied“)

  1. vim /etc/selinux/config
  2. #将SELINUX=enforcing改为SELINUX=disabled
    #getenforce检查,为“Disabled”即表示已关闭selinux

9、重启ssh服务,测试是否可用,测试命令如下

#登录
sftp sftpeb@192.168.2.33
#上传
put /tmp/test.txt
#下载
cd upload
get test.txt

10、如果在windows端登录的话,用sftp工具登录即可,如xftp

开启linux下面vsftp自身的服务的更多相关文章

  1. linux下开启、关闭、重启mysql服务

    linux下开启.关闭.重启mysql服务命令 一. 启动1.使用 service 启动:service mysql start2.使用 mysqld 脚本启动:/etc/inint.d/mysql ...

  2. Linux系统配置VSFTP软件详解

    Linux系统配置VSFTP软件详解 出处 http://www.sudu.cn/service/detail.php?id=11656 vsftpd.conf 是vsftpd的配置文件,用来控制vs ...

  3. Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法

    解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...

  4. Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务

    一.引言 今天本来没有打算写这篇文章,当初我感觉使用这个工具应该很简单,下载的过程也不复杂,也没有打算记录下来.但是在使用的过程中还是出现了一些问题,为了给第一次使用Redis Desktop Man ...

  5. linux上部署rmi+memcache服务

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/50020437 最近在学习linux上搭建Rmi+Memca ...

  6. Linux启动流程和脚本服务-6

    授课笔记:----------------------------------- linux系统启动流程:一.初始化阶段:1.grub引导界面2.识别硬件3.初始化驱动 二.加载/etc/rc.d/r ...

  7. 多个Linux发行版安装ss服务端

    本文仅做技术探讨,请在遵守相应的法律法规的前提下使用. Centos 7一键安装脚本 简单快捷,随机生成密码,默认端口默认加密类型 bash <(curl -s http://morning.w ...

  8. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  9. Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案

    什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...

随机推荐

  1. C++中动态内存申请的结果

    1,问题: 1,动态内存申请一定成功吗? 1,不一定成功: 2,常见的动态内存分配代码: 1,C 代码: * sizeof(int)); if( p != NULL ) { // ... ... } ...

  2. unity碰撞检测(耗费性能)

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class PengZhua ...

  3. 59th python下graphviz安装 砖

    原文 摘录  感谢分享:   https://www.cnblogs.com/liusx0303/p/9155305.html 参考链接:https://blog.csdn.net/u01325041 ...

  4. webpack第一节(3)

    模块化加载 上一节进行了一个简单的模块化加载,复杂点 新建一个js文件 名为 world.js 依旧在根目录下 在hello.js中引入world.js 模块化加载,world.js是一个模块 引入的 ...

  5. python 字符串中替换字符

    今天本来打算写个程序,替换字符串中固定的一个字符:将<全部替换成回车'\n' 于是,我写成这样 s='sdjj<ddd<denj,>' for x in s: if x=='& ...

  6. 微信支持的Authorization code授权模式(公众号开发)(开放平台资料中心中的代公众号发起网页授权)

    链接:https://blog.csdn.net/ASZJBGD/article/details/82838356 主要流程分为两步: 1.获取code 2.通过code换取accesstoken 流 ...

  7. Anaconda/Conda创建环境时报错的解决方案

    按照Conda网站上的提示安装完Conda之后,想要用conda create创建环境,一直报错: ERROR conda.core.link:_execute_actions(337): An er ...

  8. vue实现前后台交互

    首先需要前台先安装一个包 cnpm install axios --save 第二还需要解决跨域问题 在settings中添加一条中间件 MIDDLEWARE = [“corsheders.middl ...

  9. 4K超清,2500万人在线,猫晚直播技术全解读

    摘要: 作为双11的必备节目,今年的猫晚通过优酷.浙江卫视.东方卫视进行了全程网络直播和电视直播,吸引了超过全球超过2.4亿人收看.猫晚期间,优酷基于阿里云最新的广播级高可靠直播方案,为近2500万的 ...

  10. PHP curl_pause函数

    curl_pause — 暂停及恢复连接. 说明 int curl_pause ( resource $ch , int $bitmask ) 参数 ch 由 curl_init() 返回的 cURL ...