2019独角兽企业重金招聘Python工程师标准>>>

从技术角度来分析,几个要求:

1、从安全方面看,sftp会更安全一点

2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动

3、用户只能使用sftp,不能ssh到机器进行操作

提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。

限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我现在用的是CentOS 6.3,自带的openssh已经是5.3p1,足够了。

可以输入:

# ssh -V

来查看openssh的版本,如果低于4.8p1,需要自行升级安装,不在这里具体介绍了。

假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动

1、创建sftp组

# groupadd sftp

2、创建一个sftp用户,名为mysftp

# useradd -g sftp -s /bin/false mysftp

# passwd mysftp

3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp

# mkdir -p /data/sftp/mysftp

# usermod -d /data/sftp/mysftp mysftp

4、配置sshd_config

编辑 /etc/ssh/sshd_config

# vim  /etc/ssh/sshd_config

找到如下这行,并注释掉

Subsystem      sftp    /usr/libexec/openssh/sftp-server

添加如下几行

Subsystem       sftp    internal-sftp

Match Group sftp

ChrootDirectory /data/sftp/%u

ForceCommand    internal-sftp

AllowTcpForwarding no

X11Forwarding no

解释一下添加的几行的意思

Subsystem       sftp    internal-sftp  

这行指定使用sftp服务使用系统自带的internal-sftp

Match Group sftp  

这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割

当然,也可以匹配用户

Match User mysftp

这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便

ChrootDirectory /data/sftp/%u

用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

ForceCommand    internal-sftp

指定sftp命令

AllowTcpForwarding no  

X11Forwarding no  

这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

5、设定Chroot目录权限

# chown root:sftp /data/sftp/mysftp

# chmod 755 /data/sftp/mysftp

错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX”的内容

目录的权限设定有两个要点:

1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root

2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限

所以遵循以上两个原则

1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp

2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限

6、建立SFTP用户登入后可写入的目录

照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限

# mkdir /data/sftp/mysftp/upload

# chown mysftp:sftp /data/sftp/mysftp/upload

# chmod 755 /data/sftp/mysftp/upload

7、重启sshd服务

# service sshd restart

到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。

如果还是不能在此目录下上传文件,提示没有权限,检查SElinux是否关闭,可以使用如下指令关闭SElinux

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。或者

# setenforce 0

*PS

一开始,我以为是权限问题导致的无法上传文件,即使给777权限给文件夹也不行. 然后干脆关闭了SElinux,终于可以上传了。

转载于:https://my.oschina.net/u/2447574/blog/698278

CentOS的ssh sftp配置及权限设置整理相关推荐

  1. linux sftp 重命名,linux下ssh/sftp配置和权限设置

    基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh ...

  2. linux下ssh/sftp配置和权限设置

    基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh ...

  3. IIS服务器安全配置 防***权限设置

    一. 系统的安装 1.按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面. 2.IIS6.0的安装 开始菜单->控制面板->添加或删除程序-& ...

  4. linux中三台主机之间互信,22、linux的ssh互信配置

    转载:https://blog.csdn.net/hrn1216/article/details/51568830 https://blog.csdn.net/u013144287/article/d ...

  5. 7 centos 配置sudo权限_centos7给用户设置sudo权限

    1. 前言 sudo命令旨在允许用户使用其他用户(默认情况下为root用户)的身份运行程,. 在本指南中,我们将向您展示如何在CentOS上创建具有sudo权限的新用户,即centos7给用户添加su ...

  6. Centos 安装FTP配置目录权限,iptables设置ftp服务

    Centos 安装FTP配置目录权限,iptables设置ftp服务 2012-07-06 admin Leave a comment Go to comments CentOS 安装vsftpd,设 ...

  7. sftp取代ftp的之后的权限设置

    一,openssh 版本要4.81以上 不是这个版本的话,要升级. 二,我们的客户网站全部放在/home目录下,建立网站目录文件夹并且每个网站文件夹命令为www.a.com www.b.com 三,以 ...

  8. Linux中sftp加权限,Linux 搭建Sftp服务并进行权限设置

    一.最近接到一个项目组的需求搭建文件服务器,需求如下 1.用户:amovs.upload.download 2.组:amovs.dataload.download 3.具体需求是upload和down ...

  9. linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...

最新文章

  1. unity 200.8m yoy_专场分享会|大会最新Unity、中创文旅专场预告来啦!
  2. 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)
  3. EasyUI datagrid动态加载json数据
  4. QCon上海2015十大热点
  5. PAT甲级1023 Have Fun with Numbers:[C++题解]高精度加法和两个vector大小比较
  6. 物理化学 化学 动力学(下)
  7. MyBatis mapper 注解过程中通过 LanguageDriver 实现动态 SQL
  8. bootstrap的分页
  9. AZURE 日志分析自动告警
  10. [转载]Linux批量替换不同文件中的相同字符串
  11. ServletContext对象、ServletConfig对象
  12. 最小二乘法和极大似然估计
  13. 你对NLP的迁移学习爱的有多深?21个问题弄懂最新的NLP进展。
  14. 基于大数据平台的城市规划设计
  15. axure7 地址选择_Axure教程:省市县三级联动选择(全国省市区数据)
  16. 安装visio2019Pro提示报错“0xC004F017“具体解决办法
  17. 图解tcpip 第5版 pdf_现代实用气动技术 第2版 pdf下载 0776
  18. TypeError: object() takes no parameters
  19. 【JQuery】操作 DOM
  20. 对耳朵伤害最小的耳机类型是哪种?如何保护我们的耳朵?

热门文章

  1. 选择器高级、样式及布局
  2. CS224d lecture 9札记
  3. jquery获取元素颜色css('color')的值返回RGB
  4. 仓位管理 – 2.实战篇
  5. 做朋友圈需先从做人开始
  6. mixpanel实验教程(2)
  7. 经济学的思维方式二 效率 交换与比较优势
  8. 笔记本系统恢复连载之十:系统恢复并不难
  9. python get请求带参数_python_request的安装及模拟json的post请求及带参数的get请求
  10. 图像处理、分析与机器视觉(基于labview)_基于3D技术的机器视觉解决方案