Linux系统限制SFTP用户目录和权限

很多的系统在和外部其他系统交换文件时,喜欢使用SFTP协议。对于SFTP服务器来说,我们不想给予SFTP用户太多的权限,更不想让用户随意浏览服务器上的其他文件和执行shell命令,下面介绍如何通过配置SSH来限制SFTP用户的目录和权限。

首先我们需要新建一个SFTP登录用户(例如asftp用户):

groupadd asftp -g 1000
useradd asftp -u 1000 -g 1000 -d /home/asftp

然后我们可以在/home下看到刚刚建立的家目录:

ls -l /home
total 4
drwx------ 3 asftp asftp 4096 Sep 12 10:39 asftp

现在有两种选择,一是让asftp用户进入后为家目录,或者为其他任何一个目录,先介绍家目录。

我们首先要把 /home/asftp 目录的权限属主设置为 root:asftp,换句话说就是用户asftp登录后的根目录所在目录,和这个目录所有的上层目录,其所属主必须是root,属组暂时还没有限制。这个意思就是说:

● /home 的所属必须为 root,如 root:root 或者 root:asftp 都可以
● /home 的权限至少应为755,当然Linux系统默认就是这个

标准情况下,/home的状态应为下面这样:

drwxr-xr-x.  3 root root  4096 Sep 12 10:32 home

而 /home/asftp 目录默认情况下是 asftp:asftp 权限为700,现在应该改为 root:asftp 权限755,命令如下:

chown root:asftp /home/asftp
chmod 755 /home/asftp

ls -l
total 4
drwxr-xr-x 3 root asftp 4096 Sep 12 10:39 asftp
然后还需要去掉 sftp 用户的登录权限,需要修改 /etc/passwd 文件,将 /bin/bash 换成 /bin/nologin
asftp:x:1000:1000::/home/asftp:/sbin/nologin

至于这里家目录可以随便写,可以填 /home/asftp 或者 / 都可以,因为不登录之后这里的家目录已经没有意义了,asftp用户登录后的根目录在 /etc/ssh/sshd_config 中指定,如下:

首先我们要注释掉一行,不然修改后启动不了sshd服务

# Subsystem sftp /usr/libexec/openssh/sftp-server

然后加入后面这几行

Subsystem sftp internal-sftp
UsePAM yes
Match User asftp
ChrootDirectory /home/asftp/
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

其中上面指定了asftp用户登录后的根目录,即/home/asftp/

这里再强调一遍,根目录本身所属必须是root,属组为sftp用户的属组,权限最小为755,意味着777是不行的,也意味着asftp用户本身是不能在 /home/asftp 中建立新文件、文件夹或者修改文件的。虽然asftp用户对于登录后的根目录没有写权限,但是我们可以用root新建一个文件夹,比如叫upload,然后把这个文件夹所属改为asftp,这样asftp用户就对 /home/asftp/upload 拥有完全的写权限了,上传文件不要放到根目录而是放到“/upload”下面。

修改完sshd的配置后需要重启sshd服务,命令如下:

service sshd restart

下面介绍一下,如果不使用家目录作为sftp的根目录,使用其他目录的方法。

但是有一个原则还是要遵守,就是sftp所在的根目录,和其所有的上级目录,所属必须是root,不然就会碰到sftp连接马上被关闭的情况。

比如,我们想要登录后的根目录为/data/hao/abc

那么:

/data/hao/abc  应该为root:asftp    755
/data/hao/        应该为root:root     755
/data                应该为root:root     755

如果想要上传文件,应该建立/data/hao/abc/upload文件夹,所属 asftp:asftp 权限为755,然后上传文件的目标路径为/upload

最后修改/etc/ssh/sshd_config文件,修改ChrootDirectory后面的目录为/data/hao/abc/即可。

✅来源:十一张博客
© 版权声明
THE END
如果觉得这篇文章对您有帮助,不妨考虑请我喝杯奶茶😄
点赞5赞赏 分享
评论 抢沙发
头像
评论人工审核通过显示,请勿重复提交!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容