sftp用户创建与设置
环境:ubuntu server 14.04
目的:用户只能通过 sftp 访问指定目录,并且不能登录 shell
网上有很多这方面的介绍,最有价值的是这里。但是按照这篇文档还是遇到了两个坑:
- 配置没有加载
- sshd 无法正常启动
这并不能说是参考文章,只是它没有提到而已。解决方法在下面会以斜体的字体表明。
下面是需要的步骤;
创建用户组
sudo addgroup sftponly |
之后将通过用户组来控制权限,所以创建一个新的用户组是有必要的。
创建用户
sudo useradd -d /home/bob -s /usr/lib/sftp-server -M -N -g sftponly bob |
把新用户 bob 加入到 sftponly 这个用户组。
sudo passwd bob |
为新用户 bob 设置密码。
echo "/usr/lib/sftp-server" >> /etc/shells |
把 sftp-server 作为一个 shell 加入到 shell 列表。
创建用户目录
sudo mkdir -p /home/bob/uploads |
为新用户创建 home 目录和 sftp 目录,并设置所有权。
需要注意的一点是,/home/bob 目录的 owner 需要是 root,权限最好是755
修改配置
sudo vim /etc/ssh/sshd_config |
打开 sshd_config 配置文件,把 Subsystem sftp /usr/lib/openssh/sftp-server
注释掉,在下面加上 Subsystem sftp internal-sftp
。
在最后一行添加上:
Match group sftponly |
注意:上面的代码一定要加在最有一行,否则 sshd 会无法启动
重启 sshd
sudo service ssh restart |
注意:参考中使用sudo /etc/init.d/ssh restart
来重启 sshd,没有任何的效果。
当使用 service 来重新启动的时候,如果正常会显示:
ssh stop/waiting |
如果出错,则只会显示
ssh stop/waiting |
`