Ubuntu server 14.04下安装以及配置vsftpd
废话不多说,直接安装
sudo aptitude install vsftpd
配置目标:一个不能本地登录的用户使用密码登陆ftp,禁止匿名登陆上传以及下载
sudo vim /etc/vsftpd.conf
注析掉以下行的"#"
local_enables=YES /* 本地用户可登陆 */
write_enable=YES /* 用户可写 */
local_umask=022 /* 用户创建文件的默认权限 */
ascii_upload_enable=YES /* 可以文本方式上传 */
ascii_download_enable=YES /* 可以文本方式下载 */
chroot_local_user=YES /* 限制用户在自己主目录操作 */
在文本末新增以下行
allow_writeable_chroot=YES /* reference point 1 */
因为设置了chroot,因此以上行必须添加,要不然登陆时会提示错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
建立一个用户专门用于登陆ftp的,为了达到最精简的建立,因此使用useradd命令(这也是我撞破头的一个原因,有关useradd和adduser的区别,请网上查找)
sudo useradd -c "ftp user" -d /srv/ftp/demo -m -U -s /usr/sbin/nologin demo
-c 就是用户的备注说明
-d 就是指定用户 主目录位置(不是建立,是指定)
-m 就是建立用户主目录,如果没有
-U 就是建立与用户名相同的用户组
-s 就是用户shell(*************这就是我撞破头的主要原因********************)
给用户设置密码(这就是我撞破头的另一个主要原因)
sudo passwd demo
(也是这个,我一直没发现我新建的用户没有密码,导致出现500或者530错误)
根据https://help.ubuntu.com/lts/serverguide/serverguide.pdf 说明,ubuntu server 14.04对shell有严格要求,加上vsftp使用pam认证,因此必须修改我新建用户的shell在允许的范围,
sudo vim /etc/shells
行末添加
/usr/sbin/nologin
(也就是这个不断出现530错误,导致我以为哪里出错了)
最后,就是重启
sudo service vsftpd restart
(vsftpd居然不是基本服务,bash下tab键居然没得补全,汗)
最后 ftp localhost 测试一下就可以了
reference: