keac's Bolg.

ubuntu 搭建 vsftpd 遇到的坑

字数统计: 792阅读时长: 3 min
2019/08/19 Share

今天在配置公司服务器环境的时候遇到点问题来记录下

安装配置

安装 vsftpd

sudo apt-get install vsftpd

修改配置文件 /etc/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#是否允许匿名访问,NO为不允许
anonymous_enable=NO
#是否允许本地用户访问,就是linux本机中存在的用户,YES允许
local_enable=YES
#去掉下边这句的注释"#"。是否开启写模式,YES为开启
write_enable=YES
#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp,NO的话,白名单失效,和下面一个参数配合使用
userlist_enable=YES
#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能
userlist_deny=NO
#指定哪个文件作为userlist文件,我们稍后编辑这个文件
userlist_file=/etc/vsftpd.user_list

#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,这个如果是自己用就直接注释掉chroot"开头的下边这三句吧(为了自己方便),有其他用户的话就打开。
chroot_local_user=YES
#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
chroot_list_enable=YES
#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
chroot_list_file=/etc/vsftpd.chroot_list

#设置ftp根目录的位置,这个文件我们稍后自己创建(注意:这个根目录这句话必须写!)
local_root=/home/myftp

创建下用户

useradd ftp

修改下密码

passwd ftp

然后在 /etc/vsftpd.user_list 增加该用户名

遇到的问题

530 Permission denied

ubuntu-vsftpd

简单粗暴
删除 /etc/pam.d/ 下面的vsftpd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
在网上看到这问题原因主要是说服务器系统是64位的。
这种情况只需要把 /etc/pam.d/下面的vsftpd里面的/lib 修改为/lib64

cd /etc/pam.d

vi vsftpd

然后保存退出

service vsftpd restart就ok

32 位的系统

只需要把/etc/pam.d/vsftpd文件中的

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

这一句注释掉就OK了。前面加一个#好

重启vsftpd服务。问题解决。

vsftpd: refusing to run with writable root

vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
ubuntu-vsftpd

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

allow_writeable_chroot=YES

CATALOG
  1. 1. 安装配置
  2. 2. 遇到的问题
    1. 2.1. 530 Permission denied
      1. 2.1.1. vsftpd: refusing to run with writable root