linux SFTP用户权限控制

在向服务器上传文件时,现在我们很多都是拿服务器的登录用户,通过第3方工具(wincp,xftp等)直接上传的,这些用户可以进入服务器的大部分目录,下载拥有可读权限的文件,直接拿用户做sftp还是存在风险的,尤其是向第3方人员或服务提供sftp服时,所以在提供专用的sftp用户有必要做好权限的控制

 

现在对sftp用户的控制方法,一般就是把访问目录限定在用户加目录下,翻看了一些网上资料和自身实践后,具体方法如下(需root执行):

1、建立sftp用户和相关用户组,以psftp用户为例

groupadd p2psftp

mkdir /hsdata/

useradd -d /hsdata/psftp -g p2psftp -s /bin/false psftp

passwd psftp

chown root /hsdata/psftp

chmod 750 /hsdata/psftp

说明:psftp家目录的属主必须是root,属组必须是p2psftp(在后面的ssh中使用是的p2psftp),该家目录的最高可设置权限为755,如果高于该权限,会导致sftp连接不上

linux SFTP用户权限控制

2、建立sftp目录

cd /hsdata/psftp

mkdir upload

chmod a+w upload -R upload

upload目录可以用于上传和下载文件

说明:必须在psftp目录的下级目录中才可以上传下载,在同级目录中不行

3、修改ssh配置(ssh版本必须在4.8以上)

cd /etc/ssh/

cp sshd_config sshd_config.bak

vim sshd_config,修改内容如下:

#Subsystem      sftp    /usr/libexec/openssh/sftp-server(这行需注释)

新增如下内容(最好在配置文件的结尾添加)

Subsystem sftp internal-sftp

        Match Group p2psftp

        ChrootDirectory /hsdata/psftp

        ForceCommand internal-sftp

linux SFTP用户权限控制

 

修改保存后重启服务

service sshd restart

 

centos7.X版本重启则执行

/bin/systemctl restart sshd.service

 

如果出现如下报错

linux SFTP用户权限控制

 

把Subsystemz这块的配置放到配置文件的最后。在重启