背景 手上有一个这样的系统:后台可以直接新建项目(网站),只需输入项目名称、访问域名(二级)以及其他一些额外信息,就可自动生成一个模板网站。大致原理是:提交这些信息的时候,后台会给项目新建一个目录,并把一些必须的文件拷贝过去,然后会有一个二级域名映射文件实现二级域名访问。当然,一级域名可实现访问,前提是要完成备案。 之前对于单个项目都是通过一个统一sftp账号管理的,随着项目的增多,发现要找到相应目录会比较困难,所以现在希望在新建项目的时候能够自动生成对应的sftp账号,实现一对一管理。

过程 vsftpd是首选,我也尝试过这种实现。由于内部服务器架构的问题,IP地址是个限制,无法实现vsftpd的访问,询问过相关人员给出的答案也是如此,所以作罢。 经过一番了解,发现sftp是剩下的唯一一条路,接着熟悉、实践,最终解决上级需求。

由于不需要安装其他第三方软件,只需要CentOS系统账户以及一些目录权限的设置,整个实现过程不是太复杂,但权限的问题绝不是那么容易就可以搞定的,有一些 规则不能违背,否则失败。

假设目录结构是这样的: /var/www/site1 /var/www/site2

相应的系统账号分别是 site1 和 site2 ,使用passwd设置相应密码,site1 和 site2 的家目录分别是/var/www/site1和 /var/www/site2

此处有两个限制:

从site1和site2开始设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

从site1和site2开始设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。

如果我们把网站文件就放在site1和site2下面的话,是没有权限求改的,这由sftp的内在实现决定,我们只能遵守。所以,解决方案是,我们在site1和site2下面再分别新建一个 web 目录,权限是 775,属主分别是 site1 和 site2,属组 仍然还是 root 。为实现apache的解析正常,apache服务的运行组需要设置成 root 。

权限设置完成后,修改 sshd_config 设置:

vim /etc/ssh/sshd_config

#注释原来的Subsystem设置

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

#启用internal-sftp

Subsystem sftp internal-sftp

#限制www用户的根目录

Match User apache

ChrootDirectory /var/www

ForceCommand internal-sftp

#限制blog和pay用户的根目录

Match Group root

ChrootDirectory %h

ForceCommand internal-sftp

除此之外,web 目录下生成的其他目录的权限也必须是 775 。可通过修改 umask 为 0002 来实现。

最后,一个完整的sftp 方案诞生。

ps: 升级OpenSSH的版本。只有4.8p1及以上版本才支持Chroot。 CentOS 5.4的源中的最新版本是4.3,因此需要升级OpenSSH。 可通过ssh -V命令查看是否需要升级,升级方法自行搜索。

php scandir sftp,CentOS 下使用SFTP实现网站自动生成FTP账号,实现Chroot功能相关推荐

  1. linux6.5 sftp,CentOS下实现SFTP CHROOT的几种方法

    有些应用场景下需要限制用户只能使用SFTP,但不允许登陆系统SHELL.这里介绍几种方法来实现这样的需求. 一.通过MySecureShell实现 什么是MySecureShellMySecureSh ...

  2. sftp mysql_Linux下搭建SFTP服务器

    SFTP的好处不用多说,安全,简单,便于管理(尤其在防火墙端口设置方面). Linux下配置SFTP非常简单. 此例中要求:用户ftpuser可以上传数据至/media/data/shared/ftp ...

  3. Python——windows下pip换源 和 自动生成和安装requirements.txt

    当自己电脑(Windows系统)装python的第三方包出现timeout时,一般就是下载速度太慢了.采取的方法可以跟换pip的下载源. 转载文章的链接:[python]windows下pip换源 P ...

  4. 使用Mathtype的“插入下一章”导致整个自动生成的目录出现难看的章节号

    1.问题描述 使用Mathtype可以很方便地自动生成具有自动编号的公式,但是却会在目录部分生成难看的符号,如图所示: 2.问题原因 因为我们插入的"插入下一章"这个符号插在了章节 ...

  5. CentOS下使用Varnish为网站加速

    1 varnish概述 2 安装varnish 3 varnish 缓存原理 4 实战:缓存一个网站 5 实战:使用varnish缓存多个网站 1 varnish概述 Varnish是一款高性能的开源 ...

  6. centos下linux运行asp网站搭建配置-mono+nginx

    一.首先安装一些需要的软件包 1.  首先更新CentOS上的软件包:yum –y update. 2.  安装一些需要的库: yum -y install gcc gcc-c++ bison pkg ...

  7. busybox mysql安装_在虚拟机linux下安装Busybox时没有自动生成usr/目录

    楼上二位,显然没搞清楚呀 Windows下和Linux可差大了 下面我根据supsite的文摘写了一下: 当然先要有一套:(如果装系统是定制了,可以卸载,也可以直接安装) httpd-2.0.X.ta ...

  8. CentOS的ssh sftp配置及权限设置整理

    2019独角兽企业重金招聘Python工程师标准>>> 从技术角度来分析,几个要求: 1.从安全方面看,sftp会更安全一点 2.线上服务器提供在线服务,对用户需要控制,只能让用户在 ...

  9. linux如何改sftp端口,CentOS如何更改SFTP端口

    SFTP(SSH文件传输协议)是一种安全文件协议,用于通过加密连接在两个主机之间传输文件.本文介绍了如何在Linux中更改默认的SFTP端口.我们还将向您展示如何配置防火墙以允许在新端口上使用. SF ...

最新文章

  1. USANavyElectronicsCourse-Excerlent
  2. html 怎么让tr的css覆盖td的_html表格标签
  3. 微信从原版到现在所有界面图片_微信突然宣布:现在能改微信号了,所有人都能改...
  4. ffmpeg拿AVPacket做缓冲队列时注意
  5. 《系统集成项目管理工程师》必背100个知识点-89行政收尾和合同收尾的区别
  6. 《GitHub入门与实践》
  7. 在Java中避免空检查
  8. php3.2.3 升级,thinkphp3.2.3 升级到3.2.4时出错问题
  9. 阿里箫疯:AI对抗攻击—原理及预防 (精彩直播回放)
  10. android自定义键盘小数点键,android实现 自定义键盘 keydemo
  11. python 正则表达式 分组_正则表达式之分组的用法
  12. es文件浏览器访问ftp服务器,es文件浏览器如何ftp服务器
  13. android版本下载京东,手机京东历史版本
  14. memory prefix hypo,hecto,hyper out1
  15. 创新创意ssm计算机毕业设计题目300例之java农村电商网站3252s
  16. 在计算机上配置dns,常见设备和系统上配置DNS的方法DNS服务器 -电脑资料
  17. 生活中的ps!女朋友把菜花烤了一下,结果......
  18. 让你眼前一亮的3. Tomcat 性能调优 (值得收藏)
  19. Python获取前一天的日期,前一个月的第一天,前一个月的最后一天
  20. hibernate 多对多代码

热门文章

  1. 大数据基础系列 1:Windows 安装 VMware Workstation 虚拟机完整步骤及需要注意的问题
  2. c语言中const对于define优点,为什么大多数C开发人员使用define而不是const?
  3. python 条件概率_使用Pymc3的条件概率
  4. python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...
  5. linux用rsync实现同步,Linux下使用rsync实现主备机代码同步
  6. mysql 导入 mssql_MySQL(csv,text)导入mssql使用方法
  7. 多主机推送公钥、修改配置、修改密码脚本
  8. JAVA知识基础(二):基本语法
  9. 如何更新Postgresql的Jsonb数组
  10. Docker教程介绍