centos下配置sftp且限制用户访问目录[转]

第一步:建立sftp服务用户组,建立sftp服务根目录vim

groupadd sftp
#此目录及上级目录的全部者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp
mkdir /srv/sftp
chown -R root:sftp /srv/sftp
chmod -R 0755 /srv/sftp

第二步:备份sshd配置文件而后编辑服务器

mv /etc/ssh/sshd_config ~/backup/sshd_config_xxx                     
vim /etc/ssh/sshd_config

这一步,注释掉/etc/ssh/sshd_config文件中的此行代码:ssh

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

添加以下代码:命令行

Subsystem sftp internal-sftp
Match Group sftp
    ChrootDirectory /srv/sftp/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

功能可简述为:凡是在用户组sftp里的用户,均可以使用sftp服务
使用sftp服务链接上以后,可访问目录为/srv/sftp/username
举个例子:code

用户test是一个sftp组的用户,那么他经过sftp链接服务器上以后,只能看到/srv/sftp/test目录下的内容
用户test2也是一个sftp组的用户,那么他经过sftp链接服务器以后,只能看到/srv/sftp/test2目录下的内容server

第三步:添加有效的sftp用户,且给予用户写权限it

#此例将建立一个名称为test的sftp账号

#建立test的家目录:test目录的全部者必须是root,组最好设定为sftp,权限不高于755
mkdir /srv/sftp/test
chmod 0755 /srv/sftp/test
chown root:sftp /srv/sftp/test
#添加用户 使用参数 -s/sbin/nologin禁止用户经过命令行登陆                  
useradd -gsftp -d/srv/sftp/test -s/sbin/nologin test

关于写权限,以下解决方案并非很完美test

#在test目录下建立一个能够写的目录
mkdir /srv/sftp/test/write 
chown -R test:sftp /srv/sftp/test/write

这样test用户就能够在本身家目录里的write目录下拥有写入权限了登录


最后再强调一下,sftp服务的根目录的全部者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录全部者也必须是root,且最高权限不能超过755.ftp

相关文章
相关标签/搜索