centos v7.0配置sftp
需求:
1.建立三个sftp帐号,admin,test1,test2
2.三个帐号分别在/home/sftp下拥有相应的目录
3.test1和test2只能进入自己的目录,admin可以进入三个目录(chown,chmod和ACL)
4.各自目录所有者和所有者组权限继承
5.test1和test2进入自己目录后可以进行读写操作,但是不能删除;admin进入三个目录都可以进行读写和删除操作(删除权限可以使用chattr +a或者设置sticky bit,但是并不能完全满足需求)
首先要升级OpenSSH的版本。只有4.8p1及以上版本才支持Chroot
1.查验openssh版本
[root@localhost ~]# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2.建立相应目录
[root@localhost ~]# mkdir /home/sftp
[root@localhost ~]# mkdir /home/sftp/admin
[root@localhost ~]# mkdir /home/sftp/test1
[root@localhost ~]# mkdir /home/sftp/test2
3.创建帐号和组,同时修改密码
[root@localhost ~]# groupadd sftp
[root@localhost ~]# useradd -d /home/sftp/test1 -M -s /sbin/false test1
[root@localhost ~]# useradd -d /home/sftp/test2 -M -s /sbin/nologin test2
[root@localhost ~]# useradd -d /home/sftp/admin -M -s /sbin/nologin -g sftp admin
[root@localhost ~]# usermod -a -G sftp test1
[root@localhost ~]# usermod -a -G sftp test2
[root@localhost ~]# passwd admin
[root@localhost ~]# passwd test1
[root@localhost ~]# passwd test2
-d是把用户目录限制的自定义的目录,-M是不自动创建用户目录,-s是进行登录shell指定(/bin/false和sbin/nologin的区别暂不得知)
4.修改配置文件,同时重启ssh服务让其生效
[root@localhost ~]# vim /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User admin,test1,test2
ChrootDirectory /home/sftp
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
[root@localhost ~]# systemctl reload sshd.service
5.设置/home/sftp的权限
[root@localhost ~]# chown root:root /home/sftp
[root@localhost ~]# chmod 755 /home/sftp
6.为三个文件夹设置所有者和组,已经设置权限(使得admin可以访问三个文件夹,test1和test2只能访问各自文件夹)
[root@localhost ~]# chown admin:sftp /home/sftp/test1
[root@localhost ~]# chown admin:sftp /home/sftp/test2
[root@localhost ~]# chown admin:sftp /home/sftp/admin
[root@localhost ~]# chmod 770 /home/sftp/test1
[root@localhost ~]# chmod 770 /home/sftp/test2
[root@localhost ~]# chmod 700 /home/sftp/admin
7.可以通过ACL限制权限(test2不能访问test1的文件夹,test1不能访问test2的文件夹)
[root@localhost ~]#setfacl -m u:test2:- /home/sftp/test1
[root@localhost ~]#setfacl -m u:test1:- /home/sftp/test2
8.关于删除权限,不使用脚本的情况下,有以下两种方案,但是仍无法完全满足需求
第一种方案(chattr +a)
chattr +a 文件夹名:只能增加数据,而不能删除
chattr +i 文件夹名:不能被删除、改名、设定连结也无法写入或新增数据
第二种方案(chmod o+t)
chmod o+t 文件夹名:添加sticky-bit,使得这个文件只可以由超级管理员,该目录的所有者,该文件的所有者删除
9.如果需要实现admin可以对三个文件夹进行删除操作,test1和test2不能删除的话,需要使用脚本
a.首先设置文件可执行
chmod a+x test1.sh
chmod a+x test1.sh
b.然后分别设置脚本文件如下
test1.sh
#!/bin/sh
while inotifywait -e create /home/sftp/test1;do
chown -R admin:sftp /home/sftp/test1
chmod -R 1770 /home/sftp/test1
done
test2.sh
#!/bin/sh
while inotifywait -e create /home/sftp/test2;do
chown -R admin:sftp /home/sftp/test2
chmod -R 1770 /home/sftp/test2
done
c.后台运行shell同时忽略shell退出
nohup ./test1.sh &
nohup ./test2.sh &
10.使用inotify的方式,有个很致命的缺陷,无法监控子目录的任何操作,所以后面进行修改为如下脚本(定时执行chmod和chown)
#!/bin/sh
while [ true ]; do
sleep 1
chown -R admin:sftp /home/sftp/test1
chmod -R 1770 /home/sftp/test1
chown -R admin:sftp /home/sftp/test2
chmod -R 1770 /home/sftp/test2
done
centos v7.0配置sftp的更多相关文章
- Linux(CentOS)上配置 SFTP(附解决Write failed: Broken pipe Couldn't read packet: Connection reset by peer)
#创建sftp组: groupadd sftp #创建一个用户sftpuser: useradd -g sftp -s /bin/false sftpuser #提示: /etc/group 文件包含 ...
- centos v7.0解决乱码
[root@localhost ~]# ll 鎬荤敤閲4-rw-------. 1 root root 1045 8鏈 24 21:17 anaconda-ks.cfg [root@localhost ...
- CentOS 7.0 配置防火墙
停用了 iptables. systemctl stop iptables.service 然后来启动 firewalld 吧 systemctl start firewalld.service 给我 ...
- CentOS 7 配置SFTP
目前越来越多的FTP客户端软件开始支持SSH协议上传和下载文件,这种协议方式就是SFTP. SFTP的优势主要有两点,一是不需要再配置个FTP服务端:二是SSH协议是安全传输,上传和下载是经过加密的. ...
- asp.net core 简单部署之FTP配置(CentOS 7.0安装配置Vsftp服务器)
配置过程原文地址:http://www.osyunwei.com/archives/9006.html 坑和结果 正确的跟着这个内容走,是靠谱的. 我自己给自己踩了个坑,请参照文章的朋友注意第七条:七 ...
- CentOS 7.0系统安装配置步骤详解
CentOS 7.0系统是一个很新的版本哦,很多朋友都不知道CentOS 7.0系统是怎么去安装配置的哦,因为centos7.0与以前版本是有很大的改进哦. 说明: 截止目前CentOS 7.x最新版 ...
- CentOS 7.0安装配置Vsftp服务器
一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...
- CentOS 7.0 安装配置LAMP服务器方法(Apache+PHP+MariaDB)
一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: #停止firewall服务 sys ...
- CentOS 7.0下配置MariaDB数据库
刚刚配置了下CentOS 7.0版本的服务器,配置数据库时发现# mysql_secure_installation命令用不了,之后网上查了一下发现CentOS 7.0版本用MariaDB替换了mys ...
随机推荐
- 使用maven简单搭建Spring mvc + redis缓存
注:此文参考并整合了网上的文章 <spring缓存机制>:http://blog.csdn.net/sidongxue2/article/details/30516141 <配置 S ...
- UVA - 1649 Binomial coefficients (组合数+二分)
题意:求使得C(n,k)=m的所有的n,k 根据杨辉三角可以看出,当k固定时,C(n,k)是相对于n递增的:当n固定且k<=n/2时,C(n,k)是相对于k递增的,因此可以枚举其中的一个,然后二 ...
- python基础--几个特性
1.helloword程序的解释 #!/usr/bin/python3 print("Hello, World!") 关于脚本第一行的 #!/usr/bin/python 的解释, ...
- CentOS 7 各个版本的区别
CentOS 7 各个版本的区别 2017年07月04日 10:44:37 程诺 阅读数 52029 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- Spark 电子书
Spark最佳实践 (陈欢/林世飞著) 完整pdf扫描版[39MB]http://pan.baidu.com/s/1i4LNOVVSpark SQL编程指南 (Spark 官方文档翻译) 中文PDF版 ...
- UMG里没有"Prefab"怎么办?
大家知道在Unity里做UI,利用Prefab是少不了的,但是在UE4里如何做呢? 这是实际工作中遇到的问题,我Google关键词“UMG Prefab","UMG resuabl ...
- Python 入门知识
一python 语言介绍 特点 简单清晰明确 目前是全球最火的高级编程语言 应用领域很广 NASA FACEBOOK 谷歌 春雨医生 金山 腾讯,Python是一门解释性弱类型编程语言.编译性得 ...
- Docker入门-介绍和安装
Docker容器 Docker是什么 Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于 ...
- div随窗口变化设置高度
window.onscroll = function () { sc(); }; window.onresize = function () { sc(); }; window.onload = fu ...
- 硬盘类型和Linux分区
1. 硬盘类型和Linux分区 分类: Linux系统与应用 2011-11-22 20:54 1404人阅读 评论(0) 收藏 举报 linuxide扩展ftp服务器服务器redhat 真怪自己知识 ...