欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

搭建SFTP服务器,允许一个或多个用户拥有一个或多个目录的rwx权限

程序员文章站 2022-10-19 08:37:19
1、引言 sftp可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protoc ......

1、引言

  sftp可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。sftp 为 ssh的其中一部分,是一种传输档案至 blogger 伺服器的安全方式。其实在ssh软件包中,已经包含了一个叫作sftp(secure file transfer protocol)的安全文件信息传输子系统,sftp本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,sftp并不像一个服务器程序,而更像是一个客户端程序。sftp同样是使用加密传输认证信息和传输的数据,所以,使用sftp是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的ftp要低得多,如果您对网络安全性要求更高时,可以使用sftp代替ftp。

2、搭建sftp前期准备


 

 os : centos/rhel 7/6

 openssh version 4.8以上

目的:实现某一个或多个用户只可以访问一个或多个目录。(user kunlun对目录a和b有rwx权限,user kunlunsun 对目录c和b拥有rwx权限)


#ssh -v           #查看openssh版本

 


3、创建管理组和用户


 

#groupadd sftp

#useradd -g sftp -s /bin/false kunlun          #  /bin/false   没有可以登录的shell,只能使用sftp登录

#passwd kunlun

#useradd -g sftp -s /bin/false kunlunsun

#passwd kunlunsun

创建组(用于管理目录和授权用户的组)

#groupadd a

#groupadd b

#groupadd c


 4、创建要访问的目录


 

#mkdir -p  /data/sftp/a/

#mkdir -p  /data/sftp/b/

#mkdir -p  /data/web/c/


 5、配置sftp服务器

注:由于上述中讲到sftp与ssh的关系,所以我们进行以下操作。


 

# vim /etc/ssh/sshd_config            #进入配置文件

#subsystem sftp /usr/libexec/openssh/sftp-server  #注释掉

subsystem sftp internal-sftp
match group sftp
chrootdirectory /data/
forcecommand internal-sftp
allowtcpforwarding no
x11forwarding no

注:chrootdirectory /data/   目录属主(指user)和属组(group组)必须都是root。

可以通过getfacl /data查看owner(user)和group(group)


6、将用户加入到要访问的“目录”组


 

#usermod -a -g a  kunlun          #将用户加入到要访问的目录组

#usermod -a -g b kunlun

#usermod -a -g b kunlunsun

#usermod -a -g c kunlunsun


 7、修改目录的owner和group


 

==============user kunlun的授权=========
#chgrp  a  a/
#chmod 770 a/
#chmod g+w a/
#chown kunlun:a a/

#chgrp  b  b/
#chmod 770 b/
#chmod g+w b/
#chown kunlun:b b/
==============user kunlunsun授权=========

#chgrp  c  c/
#chmod 770 c/
#chmod g+w c/
#chown kunlunsun:c c/

注:由于前面已经给过目录b做过授权所以只需要将用户kunlunsun加入到目录b的组即可(加入组的操作在第6步完成)


 

通过getfacl b/或a/目录查看目录的owner和group权限

亲测:经过以上操作,用户将对相应的目录有rwx权限

 

另:

  通过setfacl授权,经过测试无效果。

  个人感觉这种做法还可以更简便,欢迎各位多多测试,有更简便的方法欢迎留言,有问题也可以留言提出,看到会第一时间回复。