Ubuntu server 14.04下安装以及配置vsftpd

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/login

-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

  1. http://blog.csdn.net/bluishglc/article/details/42399439


你可能感兴趣的:(vsftpd,ubuntu14.04)