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相关版本

[root@iccsdb02 /]# 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、创建相关组和用户

[root@iccsdb02 /]# groupadd  -g 601 amovs

[root@iccsdb02 /]# groupadd  -g 602 dataload

[root@iccsdb02 /]# groupadd  -g 603 download

[root@iccsdb02 /]# useradd  -u 601  -g amovs  -G dataload  -d /amovs  amovs

[root@iccsdb02 /]# useradd  -u 602  -s /bin/false  -g dataload  -d  /data/dataload upload

[root@iccsdb02 /]# 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的详细含义请参考如下链接:

http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/


ForceCommand internal-sftp    #指定sftp命令

X11Forwarding no             #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

AllowTcpForwarding no


注意:

要实现Chroot功能,目录权限的设置非常重要。否则无法登录,给出的错误提示也让人无语。

基本上报错都是这样的

# sftp upload@192.168.56.102

Connecting to 192.168.56.102...

upload@192.168.56.102's password: 

Write failed: Broken pipe

Couldn't read packet: Connection reset by peer

 

目录权限设置这里从网上找到了3条总结测试如下:

1、ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root:root

这里我的/data 属组为root:root  而/data/dataload 属组为upload:dataload  ,具体如下

[root@iccsdb02 ~]# ls -ld /data

drwxr-xr-x 3 root root 4096 5月  23 17:27 /data


[root@iccsdb02 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,否则就会报错。

[root@iccsdb02 /]# ls -ld /amovs/

drwxr-xr-x 3 amovs amovs 4096 5月  23 16:00 /amovs/

[root@iccsdb02 /]# chown root:root /amovs

[root@iccsdb02 /]# 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

[amovs@iccsdb02 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服务就可以了


测试如下:

wKioL1klKRPBgxn6AAB3jrxQWUo344.jpg




本文转自 yuri_cto 51CTO博客,原文链接:http://blog.51cto.com/laobaiv1/1928973,如需转载请自行联系原作者

相关文章
|
11月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
507 146
|
12月前
|
缓存 安全 Linux
六、Linux核心服务与包管理
在没有网络的情况下,使用系统安装光盘是获取RPM包的常用方法。场景二:配置本地文件镜像源 (使用系统安装光盘/ISO)(检查RPM包的GPG签名以保证安全) 或。YUM/DNF包管理工具 (yum/dnf)(此处可以放置您为本主题制作的思维导图)处理依赖问题的危险选项 (应极力避免)(覆盖文件、替换已安装包)。(list) 则是列出文件。(query file) 是。(假设系统安装光盘已挂载到。信息 (verbose)。(upgrade) 选项。(all) 已安装的包。(package) 选项
762 11
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
773 24
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
646 18
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
2420 25
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
734 3
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
966 6
|
安全 Linux 数据安全/隐私保护
|
测试技术 Linux 数据安全/隐私保护
Linux下使用sftp
sftp 是一个交互式文件传输程式。它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性。下边就简单介绍一下如何远程连接主机,进行文件的上传和下载,以及一些相关操作。 举例,如远程主机的 IP 是 120.25.12.92或者是域名www.hust.edu.cn,用户名是 yexx ,在命令行模式下: sftp yexx@120.25.12.92或者
2310 0
|
12月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1076 1
二、Linux文本处理与文件操作核心命令