您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页Sftp 服务限制用户访问权限

Sftp 服务限制用户访问权限

来源:意榕旅游网
Sftp 服务限制用户访问权限之迟辟智美创作

Sftp 服务要想限制用户的访问权限(即sftp服务用户只能访问特定的文件目录),那么系统的OpenSSH 服务软件的版本必需是4.8p1及以上版本才支持,如果低于该版本,就要首先升级OpenSSH版本.

第一步:检查OpenSSH软件版 [root@Oracle2 ~]# rpm qa | grep ssh 或者:

[root@Oracle2 ~]# ssh V

OpenSSH_4.3p2, OpenSSL 0.9.8efipsrhel5 01 Jul

发现把持系统的OpenSSH软件是4.3p2,低于4.8p1版本,所以需要做升级.

第二步:下载最新的OpenSSH软件

下载的时候,我们需要看一看官方装置指导文档Installation instructions ,里面有装置该版本的注意事项和装置步伐说明,最好仔细阅读一下.

第三步:确认OpenSSH软件装置条件

在官方装置指导文档中提到,装置OpenSSH6.0需要具备两个条件:

You will need working installations of Zlib and OpenSSL.

上面指出了,OpenSSH6.0装置所依赖的两款软件Zlib和OpenSSL的最低版本,如果服务器的软件版本不符合要求,就要先升级该两款软件.

首先我们需要确认服务器上Zlib和OpenSSL软件的版本: [root@Oracle2 ~]# rpm qa | grep i zlib [root@Oracle2 ~]# rpm qa | grep i openssl

可以看到,Zlib 的版本是1.42 ,OpenSSL的版本是0.9.8,满足OpenSSH6.0装置的要求. 第四步:卸载OpenSSH软件

装置之前,有下面几个工作需要完成: (1)停sshd服务

[root@Oracle2 ~]# service sshd stop Stopping sshd: [ OK ] (2)备份sshd文件

说明:在卸载之前需要将 /etc/init.d/sshd 文件做个备份,装置完成后,需要再将备份的sshd文件拷贝到/etc/init.d/目录中,这样可以保证升级完成后可以继续使用service sshd start/stop/restart 的方式管理sshd服务,否则将不成使用. (3)卸载服务器上已经存在的OpenSSH软件

卸载OpenSSH,通过rpm qa 命名查询出需要卸载的rpm软件包,再用 rpm e 命令卸载: 查询:

[root@Oracle2 ~]# rpm qa | grep i openssh 卸载:

[root@Oracle2 ~]# rpm e openssh4.3p236.el5 deps [root@Oracle2 ~]# rpm e opensshclients4.3p236.el5 deps [root@Oracle2 ~]# rpm e opensshserver4.3p236.el5 deps [root@Oracle2 ~]# rpm e opensshaskpass4.3p236.el5 deps (4)删除 /etc/ssh/ 目录下的ssh文件 rm rf /etc/ssh/*

第五步:装置OpenSSH软件 装置OpenSSH软件:

进入解压出的文件夹,依照顺序执行下面的编译和装置命令:

[root@Oracle2 ~]# ./configure –prefix=/usr –sysconfdir=/etc/ssh –withpam –withmd5passwords –mandir=/usr/share/man [root@Oracle2 ~]# make

[root@Oracle2 ~]# make install

执行完成后,就可以用 ssh V 命名检查openssh的版本,验证装置结果:

[root@Oracle2 ~]# ssh V

OpenSSH_6.0p1, OpenSSL 0.9.8efipsrhel5 01 Jul

可以看到版本已经酿成6.0p1了,说明装置没有问题.

接下来,恢复sshd文件,将备份的sshd文件复制到 /etc/init.d/ 目录下:

测试sshd服务的启动和停止: [root@Oracle2 ~]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]

OK,到这里,OpenSSH 的升级就做完了. 注意:

这样升级完成,在服务器关机启动后,sshd服务不会自动启动,为了使sshd服务在开机时自动启动,我们需要执行下面的命令:

[root@Oracle2 ~]# chkconfig add sshd

[root@Oracle2 ~]# chkconfig level 123456 sshd on 这样开机后就可以自动启动sshd服务了. 第六步:配置sftp服务用户的访问权限 (1)创立sftp用户的主根目录 [root@Oracle2 ~]# mkdir p /home/sftp [root@Oracle2 ~]# chmod R 755 /home/sftp (2)创立sftp用户组和一个sftp用户 [root@Oracle2 ~]# groupadd sftp

[root@Oracle2 ~]# useradd g sftp d /home/sftp/blog blog [root@Oracle2 ~]# passwd blog

(3)权限设置

设置 /etc/ssh/sshd_config配置文件,通过Chroot限制用户的根目录.

[root@Oracle2 ~]# vi /etc/ssh/sshd_config # override default of no subsystems #注释失落原来的Subsystem设置

#Subsystem sftp /usr/libexec/sftpserver #启用internalsftp

Subsystem sftp internalsftp

# Example of overriding settings on a peruser basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # ForceCommand cvs server #限制blog用户的根目录 Match User pay

ChrootDirectory /home/sftp/blog/ X11Forwarding no AllowTcpForwarding no ForceCommand internalsftp 保管退出,重启sshd服务:

[root@Oracle2 ~]# service sshd restart

(4)测试sftp权限控制

使用blog用户检验考试登录sftp ,发现无法登岸,给出的提示也很难看懂,什么原因呢?

原来要使用Chroot功能实现用户根目录的控制,目录权限的设置非常重要,否则将会无法登岸. 目录权限设置上要遵循2点:

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

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最年夜设置只能是755.

如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户. 设置目录的属主和权限:

[root@Oracle2 ~]# chown root:root /home/sftp /home/sftp/blog [root@Oracle2 ~]# chmod 755 /home/sftp /home/sftp/blog 由于上面设置了目录的权限是755,因此所有非root用户都无法在目录中写入文件.我们需要在ChrootDirectory指定的目录下建立子目录,重新设置属主和权限.以blog目录为例:

[root@Oracle2 ~]# mkdir /home/sftp/blog/web

[root@Oracle2 ~]# chown blog:sftp /home/sftp/blog/web

[root@Oracle2 ~]# chown 775 /home/sftp/blog/web

设置完成后,我们再用blog用户登录sftp,发现这次可以正常登录了,而且可以访问的根目录控制在了/home/sftp/blog/下,到达了我们的要求. 弥补:

上面是设置某一个sftp用户的访问权限,我们可以通过下面的配置,来设置某一个sftp组的用户访问权限: Match group sftp

ChrootDirectory /home/sftp/ X11Forwarding no AllowTcpForwarding no ForceCommand internalsftp

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务