一直都不适用vsftp,但是最近因为公司需要一个官网,所以才启动起来,安装vsftp很简单,可以搜索本站的资源“vsftpd”进行查阅,这个帖子只要是记录使用过程中的问题。
以前服务器的ContOS是6.5版本的,现在的版本是7.5,问题就随之而来了,以前出现过一次无法上传文件的问题,该问题是防火墙,帖子:“http://www.lanxinbase.com/?p=607”。
问题1:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()。
解答:这个问题是因为你在vsftpd目录下的chroot_list文件中加入了FTP的用户名,只要把它删除就可以了;也可以把写入的权限去掉:chmod a-w /www。或者你可以在vsftpd的配置文件中增加下列两项中的一项:allow_writeable_chroot=YES
造成这个原因是因为,如:我们新建了一个www的用户,目录指向/www,并给/www赋予了写入的权限,所有就出现了500的错误。而chroot_list文件列表是制定需要锁定用户在它当前根目录的一个权限文件。简单点,如果你给了写入的权限,而又限制用户只能在它当前的根目录下,这样子会造成冲突,比如我上传一个文件夹。
*注:以前也遇到过这个问题是selinux的问题,所以要排除一下。
问题2:修改vsftp用户目录的问题。
解答:修改用户信息,使用usermod命令,其参数:
[root@iZ2zed1931stl3pem7ew6vZ vsftpd]# usermod –help
Usage: usermod [options] LOGINOptions:
-c, –comment COMMENT new value of the GECOS field
-d, –home HOME_DIR new home directory for the user account
-e, –expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, –inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, –gid GROUP force use GROUP as new primary group
-G, –groups GROUPS new list of supplementary GROUPS
-a, –append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, –help display this help message and exit
-l, –login NEW_LOGIN new value of the login name
-L, –lock lock the user account
-m, –move-home move contents of the home directory to the
new location (use only with -d)
-o, –non-unique allow using duplicate (non-unique) UID
-p, –password PASSWORD use encrypted password for the new password
-R, –root CHROOT_DIR directory to chroot into
-s, –shell SHELL new login shell for the user account
-u, –uid UID new UID for the user account
-U, –unlock unlock the user account
-Z, –selinux-user SEUSER new SELinux user mapping for the user account
我就不翻译出来了,具体的自己拷贝到翻译软件里看一下就清楚了,但是这里主要介绍一下参数:-d、-u。
- -d:new home directory for the user account(用户账号的新目录)
- -u:new UID for the user account(用户的UID,应该就是唯一标识)
-d参数后面跟的目录很好解决,但是如果是-u的UID,你不知道是多少,那么可以使用命令: cat /etc/passwd |grep www
[root@iZ2zed1931stl3pem7ew6vZ vsftpd]# cat /etc/passwd |grep www
www:x:1000:1000::/www:/sbin/nologin
其中第一个1000就是UID,那么修改目录的命令,就应该如下:
usermod -m -d /www/home -u 1000 www;
或
usermod -d /www/home -m -u 1000 www;
*注:有些系统可能不需要-m的参数。
问题3:修改vsftp用户登陆密码。
解答:这个应该不是问题,就是:passwd www。
问题4:访问vsftp服务器出现200、227错误。
解答:ftp服务器有两种工作模式,port和pasv(主动和被动),这两种模式都是客户端先向服务器端发出请求,服务器建立链接,以服务器为对象,当传输数据时,如果是服务器从20端口向客户端空闲端口发送请求建立链接,就是port(主动),反之,如果是客户端向服务器空闲端口请求建立链接,就是pasv(被动)。
打开IE浏览器:选择设置—-internet—–高级—-使用被动FTP(为防火墙和DSL调制解调器兼容性)”前面的勾去掉。
问题5:450:读取目录列表失败。
解答:这个挺困扰的,我找了很久才发现,只需要在vsftp的配置文件vsftpd.conf加入pasv_enable=NO就可以了,接着重启一下服务器,引起整个原因是pasv的问题。
问题6:中文乱码的问题。
解答:中文乱码的问题其实我没有遇到过,网上的解决方案是改i18n,不过我们服务器的名称一般都是英文的,所以就不需要搭理它了。
问题7:530 Login incorrect.
解答:请检查一下密码是否输入错误。
问题8:550 外网无法登录。
解答:这个可能是没有开放tcp 20的端口,请检查一下防火墙规则配置文件。
问题9:其他问题。
这次出现过一次很奇葩的问题,但其实是FTP客户端的问题,我在登陆www账号的时候,FTP客户端居然把服务器“/”目录当成了用户的主目录,0.0吓死我了,搞了我一下午都没有找出问题来,后来第二天再登陆进去,发现正常了,根目录是/www,这就奇怪了,后来我再次改一下配置文件,然后换了不同的FTP客户端登陆,确定这个是客户端的问题。
所以遇到问题不要怕麻烦,一个个去排查就可以了。
近期评论