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

Sftp只允许用户访问指定的目录

程序员文章站 2022-06-13 22:26:07
...

  在一些生产环境中,有时,用户需要传数据到服务器,但是配置ftp服务比较麻烦,此时,我们可以为用户创建sftp账户,让用户使用sftp来上传下载所需的数据。Sftp账号即为系统账号,将账户密码给用户,用户除了能登录sftp上传下载数据外,还可以访问系统中的其他目录,由此,给我们的系统带来了安全隐患,再次,我们需要配置用户只能通过sftp登录系统下载上传所需的数据。

1、创建sftp用户(此处,我们以账号dayi123为例进行配置)

 ~]# useradd dayi123
 ~]# echo dayi123 | passwd --stdin dayi123

2、设置sftp的账户权限

设置sftp的账号权限需要通过修改ssh配置文件进行,ssh配置文件修改内容如下:

# Subsystem     sftp    /usr/libexec/openssh/sftp-server   #注释掉此行并添加一下行

Subsystem sftp internal-sftp         

Match User dayi123                     #此处设置控制的用户,也可以设置为组

         ChrootDirectory /home/dayi123  #允许用户访问的目录,此处我们设置为用户家目录

         X11Forwarding no

         AllowTcpForwarding no

         ForceCommand internal-sftp

配置完成后需要重启服务:

/etc/init.d/sshd restart

此处配置完我们用另一台机器测试登录,会出现错误,使用win系统sftp客户端同样也不能正常登陆

[aaa@qq.com ~]# sftp aaa@qq.com

Connecting to 10.0.0.13...

aaa@qq.com's password:

Write failed: Broken pipe

Couldn't read packet: Connection reset by peer

这是由于没有配置目录的正确权限,我们需要设置用户访问的目录的权限

3、设置允许用户访问目录的权限

   Sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755,但此目录下的文件及目录的权限我们可根据自己的需求任意设置。

~]# chown root:root /home/dayi123/

 ~]# chmod 755 /home/dayi123/

 ~]# ll /home/

total 4

drwxr-xr-x 2 root root 4096 Sep  8 17:54 dayi123

~]# usermod dayi123 -s /sbin/nologin    #设置该sftp账号不允许登录

~]# /etc/init.d/sshd reload

至此,我们的sftp配置已经完成,

4、测试sftp

使用linux测试:

~]# sftp aaa@qq.com

Connecting to 10.0.0.13...

aaa@qq.com's password:

sftp> pwd

Remote working directory: /

sftp> cd ../

sftp> pwd

Remote working directory: /

使用windows客户端winscp测试:

    登录后如下图二所示,登录后的目录定位到了指定的目录”/home/dayi123”目录,不能浏览系统的其他目录,也不能切换目录。

Sftp只允许用户访问指定的目录 

图一 登录sftp客户端

 Sftp只允许用户访问指定的目录

图二 登录后图

5、设置用户上传文件权限

          经过上面的设置后用户可正常浏览下载目录中的文件,但是用户无法上传文件。即使在/home/dayi123/下简历属主为dayi123的目,用户也无法上传。此时需要在/home/dayi123/下建立属主属组为dayi123的目录,并给/home/dayi123目录设置acl权限即可。

]# mkdir /home/dayi123/test

]# chown dayi123:dayi123 /home/dayi123/test

]# setfacl -m u:dayi123:rwx /home/dayi123

]# getfacl /home/dayi123/

getfacl: Removing leading '/' from absolute path names

# file: home/dayi123/

# owner: root

# group: root

user::rwx

user:dayi123:rwx

group::r-x

mask::rwx

other::r-x


上一篇: 微服务

下一篇: 微服务