一、最近接到一个项目组的需求搭建文件服务器,需求如下

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服务并进行权限设置相关推荐

  1. linux中如何加配置文件,Linux修改配置文件的命令是什么

    Linux修改配置文件的命令是什么 Linux添加修改配置文件一般都是使用默认的VI编辑器,命令是vi 文件名.长期编辑代码的程序员会使用功能更强大的编辑器. 简单介绍下vi编辑器的使用方法: 一.v ...

  2. Linux重新读写分区的命令,用partprobe、blockdev、hdparm、partx命令在Linux中重新加载分区表...

    本文介绍Linux操作系统重新加载分区表的方法:使用partprobe.blockdev.hdparm.partx命令. 背景 作为Linux管理员,你可以在一天内多次执行磁盘分区任务.大多数情况下, ...

  3. 在linux中的sort命令,linux中sort命令

    功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序. 参 数: -b 忽略每行前面开始出的空格字符. -c 检查文件是否已经按照顺序排序. -d 排序时,处理英文字母.数 ...

  4. linux中用户组和用户,linux中用户和用户组

    一.用户和组原理 一个用户可以属于多个组,一个组有多个用户 在Linux中操作系统必须依赖组和用户进行管理 二.与用户和组相关的配置文件 1.组相关配置文件 1)/etc/group :管理用户组信息 ...

  5. linux中文件链接,关于Linux中文件,链接的一些思考

    在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...

  6. linux中make命令大全,Linux中的命令 make -f 是什么意思

    二.Makefile的文件名 默认的情况下,make命令会在当前目录下按顺序找寻文件名为"GNUmakefile"."makef ile"."Make ...

  7. linux中original_如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 转载自: 如何在 Linux 中整理磁盘碎片​linux.cn 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀 ...

  8. 网页修改linux命令行,linux中文本修改操作命令linux网页制作 -电脑资料

    在命令模式下可以使用 vi 提供的各种有关命令对文本进行修改,包括对文本内容的删除.复制.取代和替换等, 1. 文本删除/移动 在编辑文本时 ,经常需要删除一些不需要的文本,我们可以用键将输错或不需要 ...

  9. 如何在 Linux 中快速地通过 HTTP 提供文件访问服务

    如何在 Linux 中快速地通过 HTTP 提供文件访问服务 转自:https://linux.cn/article-10205-1.html 如今,我有很多方法来通过 Web 浏览器为局域网中的其他 ...

  10. 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的是将任务中断,但是此任务 ...

最新文章

  1. SQLAlchemy技术文档(中文版)(中)
  2. Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
  3. 计算机英语 自我介绍,计算机面试英文自我介绍范例
  4. mysql 创建账号权限_mysql创建用户,并指定用户的权限(grant命令)
  5. php中等3秒再跳转,跳转和重定向
  6. P3224 [HNOI2012]永无乡(并查集+权值线段树合并/平衡树)
  7. 阿里2020届校招笔试劝退题——你大爷还是你大爷
  8. selenium隐式等待
  9. jQuery插件开发的准备
  10. python的requests.session()_python3+requests接口自动化session操作方法
  11. 343.整数拆分(力扣leetcode) 博主可答疑该问题
  12. 双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题
  13. 如何搭建个人服务器(网站/游戏)?
  14. CMT2300A 433MHz SUB-1G无线收发芯片
  15. java 全双工串口,Java实现全双工串口通信
  16. php实现logo的上传,PHP实现图片的等比缩放和Logo水印功能示例
  17. LabVIEW与西门子1200,1500系列Sanp7协议通讯案例+QMH标准框架编写,非常实用,长期测试通讯无误。
  18. ArcBlock 将作证支持美国华盛顿州区块链立法 | ABT 活动
  19. 【ReID】Pyramidal Person Re-IDentification via Multi-Loss Dynamic Training
  20. Maven项目 混合编译Java和Scala

热门文章

  1. 备注 2013 11 19
  2. Windows Server 2008 R2活动目录灾难恢复(二):备份与恢复(1)
  3. 屌丝。。。配角。。。
  4. PMBOK7和PRINCE2的相似之处和定位之不同(上篇)
  5. Redis【3】其他部分~
  6. linux内核中链表代码分析---list.h头文件分析(二)【转】
  7. java基础-Eclipse开发工具介绍
  8. Redis系列二:reids介绍
  9. 关于Netty的一些理解、实践与陷阱
  10. unity, shader, Tags的位置