文档章节

CentOS 下使用SFTP实现网站自动生成FTP账号,实现Chroot功能

csensix
 csensix
发布于 2014/09/26 14:43
字数 909
阅读 340
收藏 9

背景 手上有一个这样的系统:后台可以直接新建项目(网站),只需输入项目名称、访问域名(二级)以及其他一些额外信息,就可自动生成一个模板网站。大致原理是:提交这些信息的时候,后台会给项目新建一个目录,并把一些必须的文件拷贝过去,然后会有一个二级域名映射文件实现二级域名访问。当然,一级域名可实现访问,前提是要完成备案。 之前对于单个项目都是通过一个统一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命令查看是否需要升级,升级方法自行搜索。

© 著作权归作者所有

csensix
粉丝 2
博文 26
码字总数 9357
作品 0
南昌
高级程序员
私信 提问
利用ssh 架设sftp协议 ftp服务器

转载自:http://zengrong.net/post/1616.htm 由于采用明文传输用户名和密码,FTP协议是不安全的。在同一机房中只要有一台服务器被***者控制,它就可能获取到其它服务器上的FTP密码,从而控制其...

bsbforever
2018/06/26
0
0
第十五章 FTP服务搭建与配置

15.1 FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。 FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行...

Iammalt
2018/06/26
0
0
centos7中实现chroot限制ssh及sftp至指定目录

背景:在vcenter6.5中创建两个虚拟机,如下图, 目的:创建一名用户同时能够实现chroot来限制ssh及sftp至指定目录,可以实现系统安全。 其中,我们将在pool-test(ip:172.16.6.11)中进行配置...

lefteva
2017/05/26
0
0
ftp服务器搭建(一)

系统环境:RHEL6.5 IP地址:10.10.125.4 服务描述: ftp服务器(File Transfer Protocol:文件传输协议):Internet上用来传送文件的协议 vsftp:一个基于GPL发布的linux系统上使用的FTP服务器软...

CARYFLASH
2017/08/24
0
0
CentOS 6.3下FTP vsftpd 安装及配置

一、FTP的安装 1、检测是否安装了FTP:[root@localhost ~]# rpm -q vsftpd 如果安装了会显示版本信息: [root@localhost ~]# vsftpd-2.0.5-16.el5_5.1   否则显示:[root@localhost ~]# pack...

张旭0512
2014/03/25
296
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
24分钟前
4
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
27分钟前
4
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部