Linux中sftp加权限,Linux 搭建Sftp服务并进行权限设置
一、最近接到一个项目组的需求搭建文件服务器,需求如下
1、用户:amovs、upload、download
2、组:amovs、dataload、download
3、具体需求是upload和download的家目录都为同一个目录dataload
4、upload能上传也就是能读能写、download用户只能下载
5、amovs因需要进行批量自动化删除日志等操作,所以对于dataload目录权限需要读、写权限
6、并且upload和download只能使用sftp软件上传和下载文件使用,不能作为登录用户
详细规划了一下用户和组的关系如下:
amovs属于dataload组,家目录为/amovs
upload为属于dataload组 /data/dataload
download属于download组 /data/dataload
二、搭建环境如下:
Red Hat Enterprise Linux Server release 6.7 (Santiago)
具体搭建步骤:
1、查看ssh相关版本
[[email protected] /]# rpm -qa | grep ssh
openssh-clients-5.3p1-111.el6.x86_64
openssh-server-5.3p1-111.el6.x86_64
ksshaskpass-0.5.1-4.1.el6.x86_64
libssh2-1.4.2-1.el6_6.1.x86_64
openssh-5.3p1-111.el6.x86_64
2、创建相关组和用户
[[email protected] /]# groupadd -g 601 amovs
[[email protected] /]# groupadd -g 602 dataload
[[email protected] /]# groupadd -g 603 download
[[email protected] /]# useradd -u 601 -g amovs -G dataload -d /amovs amovs
[[email protected] /]# useradd -u 602 -s /bin/false -g dataload -d /data/dataload upload
[[email protected] /]# useradd -u 603 -s /bin/false -g download -d /data/dataload download
3、编辑/etc/ssh/sshd_config 更为为如下:
#注释掉这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下配置
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
#Match Group dataload #如何限制组就改成这样 这里也可以使用用户Match User,用逗号隔开
Match User upload、download #我这里的需求是控制用户所以就配置成这样
ChrootDirectory /data #此目录实际上传目录的上级目录,例如这里实际存储文件位置是/data/dataload
#用chroot将指定用户的根目录,chroot的详细含义请参考如下链接:
ForceCommand internal-sftp #指定sftp命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no
注意:
要实现Chroot功能,目录权限的设置非常重要。否则无法登录,给出的错误提示也让人无语。
基本上报错都是这样的
Connecting to 192.168.56.102...
Write failed: Broken pipe
Couldn‘t read packet: Connection reset by peer
目录权限设置这里从网上找到了3条总结测试如下:
1、ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root:root
这里我的/data 属组为root:root 而/data/dataload 属组为upload:dataload ,具体如下
[[email protected] ~]# ls -ld /data
drwxr-xr-x 3 root root 4096 5月 23 17:27 /data
[[email protected] data]# ls -ld /data/dataload/
drwxrwxr-x 4 upload dataload 4096 5月 23 18:11 /data/dataload/
2、ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755
这条没试出来
3、ChrootDirectory %h 如果选择了这种模式,用户的home目录必须是root:root 权限,它的上级目录页必须是root:root,否则就会报错。
[[email protected] /]# ls -ld /amovs/
drwxr-xr-x 3 amovs amovs 4096 5月 23 16:00 /amovs/
[[email protected] /]# chown root:root /amovs
[[email protected] /]# ls -l /amovs/
drwxr-xr-x 3 root root 4096 5月 23 16:39 data
这里设置完了以后还出现了一个问题就是通过sftp软件上传后的文件属性是644的,也就是amovs用户删除不了upload 用户的上传的文件,这说明上传文件的权限并没有走系统用户umask,通过查了一些资料修改PAM值并测试成功了。
一,查看并开启ssh的PAM功能,
运行命令看看 ldd /usr/sbin/sshd | grep libpam.so支持PAM
[[email protected] 20170523]$ ldd /usr/sbin/sshd | grep libpam.so
libpam.so.0 => /lib64/libpam.so.0 (0x00007fce94f79000)
编辑/etc/ssh/sshd_config
UsePAM yes #这默认是开启的,没有开的话开启了
二,编辑/etc/pam.d/sshd,(具体说明参照PAM),加上umask那一行。
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session optional pam_umask.so umask=0002
重启sshd服务就可以了
测试如下:
原文:http://laobaiv1.blog.51cto.com/2893832/1928973
Linux中sftp加权限,Linux 搭建Sftp服务并进行权限设置相关推荐
- linux中如何加配置文件,Linux修改配置文件的命令是什么
Linux修改配置文件的命令是什么 Linux添加修改配置文件一般都是使用默认的VI编辑器,命令是vi 文件名.长期编辑代码的程序员会使用功能更强大的编辑器. 简单介绍下vi编辑器的使用方法: 一.v ...
- Linux重新读写分区的命令,用partprobe、blockdev、hdparm、partx命令在Linux中重新加载分区表...
本文介绍Linux操作系统重新加载分区表的方法:使用partprobe.blockdev.hdparm.partx命令. 背景 作为Linux管理员,你可以在一天内多次执行磁盘分区任务.大多数情况下, ...
- 在linux中的sort命令,linux中sort命令
功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序. 参 数: -b 忽略每行前面开始出的空格字符. -c 检查文件是否已经按照顺序排序. -d 排序时,处理英文字母.数 ...
- linux中用户组和用户,linux中用户和用户组
一.用户和组原理 一个用户可以属于多个组,一个组有多个用户 在Linux中操作系统必须依赖组和用户进行管理 二.与用户和组相关的配置文件 1.组相关配置文件 1)/etc/group :管理用户组信息 ...
- linux中文件链接,关于Linux中文件,链接的一些思考
在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...
- linux中make命令大全,Linux中的命令 make -f 是什么意思
二.Makefile的文件名 默认的情况下,make命令会在当前目录下按顺序找寻文件名为"GNUmakefile"."makef ile"."Make ...
- linux中original_如何在 Linux 中整理磁盘碎片
如何在 Linux 中整理磁盘碎片 转载自: 如何在 Linux 中整理磁盘碎片linux.cn 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀 ...
- 网页修改linux命令行,linux中文本修改操作命令linux网页制作 -电脑资料
在命令模式下可以使用 vi 提供的各种有关命令对文本进行修改,包括对文本内容的删除.复制.取代和替换等, 1. 文本删除/移动 在编辑文本时 ,经常需要删除一些不需要的文本,我们可以用键将输错或不需要 ...
- 如何在 Linux 中快速地通过 HTTP 提供文件访问服务
如何在 Linux 中快速地通过 HTTP 提供文件访问服务 转自:https://linux.cn/article-10205-1.html 如今,我有很多方法来通过 Web 浏览器为局域网中的其他 ...
- linux中ctrl加c命令什么意思,Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解
Ctrl+c,Ctrl+d,Ctrl+z在Linux中意义 Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. Ctrl+c是强制中断程序的执行. Ctrl+z的是将任务中断,但是此任务 ...
最新文章
- SQLAlchemy技术文档(中文版)(中)
- Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
- 计算机英语 自我介绍,计算机面试英文自我介绍范例
- mysql 创建账号权限_mysql创建用户,并指定用户的权限(grant命令)
- php中等3秒再跳转,跳转和重定向
- P3224 [HNOI2012]永无乡(并查集+权值线段树合并/平衡树)
- 阿里2020届校招笔试劝退题——你大爷还是你大爷
- selenium隐式等待
- jQuery插件开发的准备
- python的requests.session()_python3+requests接口自动化session操作方法
- 343.整数拆分(力扣leetcode) 博主可答疑该问题
- 双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题
- 如何搭建个人服务器(网站/游戏)?
- CMT2300A 433MHz SUB-1G无线收发芯片
- java 全双工串口,Java实现全双工串口通信
- php实现logo的上传,PHP实现图片的等比缩放和Logo水印功能示例
- LabVIEW与西门子1200,1500系列Sanp7协议通讯案例+QMH标准框架编写,非常实用,长期测试通讯无误。
- ArcBlock 将作证支持美国华盛顿州区块链立法 | ABT 活动
- 【ReID】Pyramidal Person Re-IDentification via Multi-Loss Dynamic Training
- Maven项目 混合编译Java和Scala