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的详细含义请参考如下链接:

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

ForceCommand internal-sftp    #指定sftp命令

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

AllowTcpForwarding no

注意:

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

基本上报错都是这样的

# sftp [email protected]

Connecting to 192.168.56.102...

[email protected]‘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  ,具体如下

[[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]b02 /]# 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服务就可以了

测试如下:

时间: 2024-08-02 02:41:10

Linux 搭建Sftp服务并进行权限设置的相关文章

linux搭建sftp(openssh)

公司需求由ftp转为sftp,因此需求,捣鼓了两天,在windows系统上研究搭建sftp煞费苦心,最终失败,转为linux上搭建. windows搭建ftp,工具可使用file zilla,话说支持ftp.sftp,但本人并没有研究出sftp.此工具对权限设置较好,可做到针对每个人访问单个文件夹权限.FreeSSHd,此工具安装简单,但个人使用感不佳,此工具对ftp用户权限设置不佳,所有用户访问ftp目录权限相同. FreSSHd 搭建ftp,可借鉴:https://jingyan.baidu

华旭收-RedHat5.X系列linux搭建NTP服务详细方法

华旭收-RedHat5.X系列linux搭建NTP服务详细方法华旭是小白鼠,请勿纠结标题.ntp也就是时间服务器原理和作用:1.大数据产生与处理系统是各种计算设备集群的,计算设备将统一.同步的标准时间用于记录各种事件发生时序,如E-MAIL信息.文件创建和访问时间.数据库处理时间等.2.大数据系统内不同计算设备之间控制.计算.处理.应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作或将无法正常进行.3.大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障

Linux设置SFTP服务用户目录权限

我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务的有vsftpd和internal-sftp,这里用的是系统自带的internal-sftp,操作步骤如下: 1.创建新用户ui,禁止ssh登录,不创建家目录 useradd -s /sbin/nologin -M www 2.设置用户密码 passwd www 3.创建用户的根目录,用户就只能在此

搭建sftp服务+nginx代理

在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp服务+nginx代理的配置方法: 一.环境: 192.168.16.12     centos6.5 在Centos 6.5环境使用系统自带的internal-sftp搭建SFTP服务器. 二.查看版本 查看openssh的版本,使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p

linux 搭建SVN服务端

搞了个服务器,然后现在想搞点事情,于是乎整个SVN在上面,算是熟悉下svn的操作过程 以下内容转载自: https://yq.aliyun.com/articles/6693 -------------------------------------------------- Linux搭建SVN 服务器 作者: 沈小然    日期:2014年 8月 5日 1          安装SVN 官网下载:http://subversion.apache.org/packages.html SVN客户

linux搭建sftp服务器

转自:http://blog.csdn.net/superswordsman/article/details/49331539 最近工作需要用到sftp服务器,被网上各种方法尤其是权限设置问题搞得晕头转向,现在将自己搭建过程总结了一下,整理出来一种最简单的方法可供大家参考. 第1歩,添加sftp用户并制定根目录:useradd -d  /home/sftp  -s /sbin/nologin sftpuser 第2歩,修改密码:执行passwd sftpuser,然后输入密码2次即可 第3歩,修

Linux 搭建Apache服务个人静态页面

(1)把镜像挂载到/media/cdrom(2)配置Yum源文件(3)安装Apache服务程序httpd(4)开始httpd服务,并设置成开机自启(5)在浏览器输入?http://127.0.0.1?就可以看到web的默认页面(6)vi /etc/httpd/conf.d/userdir.conf在userdir.conf文件中注释掉UserDir disabled 去掉注释UserDir public_html(7)在用户家目录中创建public_html 在public_html中创建ind

基于Linux搭建apache服务后,怎么构建web虚拟主机?

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源. 使用httpd可以非常方便的去搭建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点.httpd支持的虚拟主机类型有这么三种(与Windows 的IIS服务一样): 1.相同IP.端口号.不同域名的虚拟主机: 2.相同IP.不同端口号的虚拟主机: 3.不同IP.相同端口号的虚拟主机

【Linux】Linux用户、用户组、文件权限设置

最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识.(我也正在学Linux,所以就找到这篇日志了,有些设置修改后需要重启系统后才能生效.)学习这几样东西,得先掌握linux的权限系统相关知识.linux的权限系统主要是由用户.用户组和权限组成.用户就是一个个的登录并使用linux的用户.linux内部用UID表示.用户组就是用户的分组.linux内部用GID表示.权限分为读.写.执行三种权限. linux的用户信息保存在/etc/passwd文件中