Linux下面不再需要ftpd,记一下sftp的配置
今天需要给客户开发人员配置一个ftp到服务器,用于更新开发用的php文件。结果一问,现在都用sftp了,讨论vsftpd还是pureftp好的日子早就一去不返了。
下面就说说具体步骤,参考:
http://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes
http://askubuntu.com/questions/49271/how-to-setup-a-sftp-server-with-users-chrooted-in-their-home-directories
安装scponly
yum install scponly -y
然后
useradd bob -s /usr/bin/scponly
对于/etc/passwd来说,内容大概这样,
overlord:x:501:500::/home/bob:/usr/bin/scponly
然后修改密码:
passwd bob
然后修改/etc/ssh/sshd_config,在最后添加(必须在最后)
Match User bob
ChrootDirectory /home/bob/
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
然后具体设置目录权限,这里还是挺关键的,这个权限设置不对就不好用。具体就是如下:
sudo chown root /home/bob sudo chmod go-w /home/bob sudo mkdir /home/bob/writeable sudo chown bob:www-data /home/bob/writeable sudo chmod ug+rwX /home/bob/writeable
我是用nginx跑php-fpm的环境,组是www-data,所以一定g+rw是要有的,这是最关键的,否则php无法读取文件。
权限设置参考:https://zh.wikipedia.org/wiki/Chmod
这样的效果就是拿/home/bob作为根目录的ftp环境了。