Linux 限制SFTP用户目录和权限

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvshaorong/article/details/82662554

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

首先我们需要新建一个用户,用来做sftp的登录用户

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

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

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

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

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

/home的所属必须为root,如root:root或者root:zhongan都可以

/home 的权限至少应为755,当然linux系统默认就是这个

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

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

然后/home/zhongan默认情况下是zhongan:zhongan,权限为700,现在应该改为root:zhongan 权限755,如下

chown root:zhongan /home/zhongan
chmod 755 /home/zhongan

ls -l
total 4
drwxr-xr-x 3 root zhongan 4096 Sep 12 10:39 zhongan

然后需要去电ftp用户的登录权限,需要修改/etc/passwd文件,将/bin/bash换成/bin/nologin

zhongan:x:1000:1000::/home/zhongan:/sbin/nologin

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

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

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

然后加入后面这几行

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

其中上面指定了SFTP登录后的根目录,即/home/zhongan/

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

修改完sshd的配置后需要重启sshd

service sshd restart

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

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

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

那么:

/data/haha/abc 应该为root:zhongan 755

/data/haha/       应该为root:root         755

/data                 应该为root:root         755

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

然后修改/etc/ssh/sshd_config ,修改ChrootDirectory后面的目录为/data/haha/abc/

猜你喜欢

转载自blog.csdn.net/lvshaorong/article/details/82662554
今日推荐