CentOS 6.3 下 vsftpd 匿名用户访问配置

前端之家收集整理的这篇文章主要介绍了CentOS 6.3 下 vsftpd 匿名用户访问配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://www.jianshu.com/p/f90e0f81134b#

背景:
CentOS 6.3
vsftpd.x86_64 0:2.2.2-13.el6_6.1
从墙角找了一台能用的旧机器,Pentium D & 1G RAM & 160G HDD,费了一番功夫终于装上了 CentOS 6.3,才发现物理机安装跟虚拟机安装的过程还是有点差别滴,之前在虚拟机上配置过 vsftpd,今天在这台机器上也装一个试试看.

安装 vsftpd

  1. yum install vsftpd

/etc/vsftpd/vsftpd.conf 默认设置

  1. [root@DX3906c ~]# vim /etc/vsftpd/vsftpd.conf
  2. anonymous_enable=YES //匿名访问 开启
  3. local_enable=YES //本地实体用户访问 开启
  4. write_enable=YES //允许用户上传数据
  5. local_umask=022 //建立新目录和文件的权限
  6. dirmessage_enable=YES //目录下有 .message 文件显示文件内容 ???
  7. xferlog_enable=YES //日志文件记录 记录于 /var/log/vferlog
  8. connect_from_port_20=YES //支持主动式连接功能
  9. xferlog_std_format=YES //支持 WuFTP 的日志文件格式
  10. listen=YES //使用 stand along 方式启动 vsftpd
  11. pam_service_name=vsftpd //支持 PAM 模块的管理
  12. userlist_enable=YES //支持 /etc/vsftpd/user_list 文件内的登陆账号控制
  13. tcp_wrappers=YES //支持 TCP Wrappers 的防火墙机制

serIoUsly,有一些选项的意义和作用我也不是很懂,注释是对着鸟哥服务器篇敲下来的,OK,下面添加一个选项:

  1. use_localtime=YES //使用本地时间,vsftpd默认使用GMT格林尼治时间

匿名登录与下载

匿名登录的配置比较简单,so先搞下这个吧miao~
vsftpd默认的匿名用户的主目录是 ftp 用户的主目录,试试用 finger ftp 看一下在哪里咧

  1. [root@H_502_90@@DX3906c ~]# finger ftp
  2. -bash: finger: command not found

啊咧,没装...好吧,yum install finger之后再看一下

  1. [root@DX3906c ~]# finger ftp
  2. Login: ftp Name: FTP User
  3. Directory: /var/ftp //ftp用户的主目录 Shell: /sbin/nologin //账户不能用于登录系统
  4. Never logged in.
  5. No mail.
  6. No Plan.

可以看到ftp用户的主目录在 /var/ftp,那也就是说匿名用户登陆之后的看到的就是这个啦,想让人家去你的ftp下载东西的话,文件要放到这里.那么我有一个问题,这个目录可以随便改吗?待会配置好了匿名用户登录再改改试试看

现在开始配置匿名用户登录

  1. [root@DX3906c ~]# vim /etc/vsftpd/vsftpd.conf
  2. anonymous_enable=YES //匿名访问 开启
  3. local_enable=YES //本地实体用户访问 开启
  4. write_enable=YES //允许用户上传数据
  5. local_umask=022 //建立新目录和文件的权限
  6. dirmessage_enable=YES //目录下有 .message 文件显示文件内容 ??? xferlog_enable=YES //日志文件记录 记录于 /var/log/vferlog
  7. connect_from_port_20=YES //支持主动式连接功能
  8. xferlog_std_format=YES //支持 WuFTP 的日志文件格式

在后面添加:

  1. no_anon_password=YES //匿名登录时,不检验密码
  2. idle_session_timeout=600 //匿名用户10分钟无操作则掉线
  3. banner_file=/etc/vsftpd/anon_welcome@H_502_90@.txt //匿名用户登录后看到的欢迎信息

然后需要编辑一下 anon_welcome.txt 文件,不然 ftp 会无法正常连接
配置完之后重启一下 vsftpd 服务 service vsftpd restart
在本机先测试一下能不能连接成功吧 使用 ftp localhost

  1. [root@DX3906c ftp]# ftp localhost
  2. Trying ::1...
  3. ftp: connect to address ::1Connection refused
  4. Trying 127.0.0.1...
  5. Connected to localhost (127.0.0.1). 220-Welcome to Zion's FTP 220-My E-mail:70ka42@gmail.com 220 Name (localhost:root): anonymous 500 OOPS: cannot change directory:/home/ftp Login Failed.

可以看到欢迎信息已经显示出来了,但是匿名用户登录失败了,这是为什么呢?百度了一下,发现是 selinux 引起的,查看一下当前系统的 selinux 状态: /usr/sbin/sestatus -v

  1. [root@DX3906c ftp]# /usr/sbin/sestatus -v
  2. SELinux status: enabled
  3. SELinuxfs mount: /selinux
  4. Current mode: enforcing
  5. Mode from config file: enforcing
  6. Policy version: 24
  7. Policy from config file: targeted

临时关闭 selinux setenforce 0
再看一下 selinux 状态 getenforce,已经是 Permissive 了,再登录下 ftp 试试

  1. [root@DX3906c ftp]# ftp localhost
  2. Trying ::1...
  3. ftp: connect to address ::1Connection refused
  4. Trying 127.0.0.1...
  5. Connected to localhost (127.0.0.1). 220-Welcome to Zion's FTP 220-My E-mail:70ka42@gmail.com 220 Name (localhost:root): anonymous 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.

OK,登陆成功了,听说不关闭 selinux 的话,也可以修改 selinux 的一些配置来处理这个问题,这个就容后再议吧,现在selinux只是临时关闭,永久关闭需要修改 /etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled,然后重启即可.

然后来试试在远程计算机上能不能登录,之前在虚拟机上安装的时候发现本机能登,但是远程登不上,后来发现是防火墙的问题,iptables的配置我还不太清楚,所以就抄近路直接在GUI下打开了FTP的21端口,现在也如法炮制好了.我使用Chrome登录然后Chrome直接崩溃了miao~,但是Windows资源管理器可以成功匿名登录,并且可以下载文件,那说明还是比较成功滴.


番外篇

下面研究一下刚才的问题,ftp 的默认目录可以改吗?来试试看.

  1. [root@H_502_90@@DX3906c ~]# vim /etc/passwd
  2. ......
  3. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  4. ......

改成

  1. ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin

finger一下看看已经改了,

  1. [root@H_502_90@@DX3906c ~]# finger ftp
  2. Login: ftp Name: FTP User
  3. Directory: /home/ftp Shell: /sbin/nologin

再重启一下 vsftd 服务 service vsftpd restart
现在在 /home/ftp 下建一个文件看看

  1. [root@H_502_90@@DX3906c ~]# touch /home/ftp/ Hello_FTP.txt

登录ftp

  1. [root@DX3906c ftp]# ftp localhost
  2. Trying ::1...
  3. ftp: connect to address ::1Connection refused
  4. Trying 127.0.0.1...
  5. Connected to localhost (127.0.0.1). 220-Welcome to Zion's FTP 220-My E-mail:70ka42@gmail.com 220 Name (localhost:root): anonymous 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir //列出当前目录下的文件,ls也可以 227 Entering Passive Mode (127,0,1,145,180). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 0 Dec 09 19:09 Hello_FTP.txt 226 Directory send OK.

列出了 Hello_FTP.txt,说明目录修改成功啦.


匿名用户上传权限的配置

在 /etc/vsftpd/vsftpd.conf 中添加以下内容:

  1. anon_mkdir_write_enable=YES //匿名用户建立目录的权限
  2. anon_upload_enable=YES //匿名用户上传文件的权限
  3. #anon_other_write_enable=YES //匿名用户删除重命名文件的权限,还是关掉比较好miao~

老规矩,重启一下 vsftpd 服务 /etc/init.d/vsftpd restart
登陆看看能不能上传文件

  1. touch upload_test.txt

登录到 ftp 之后使用 put命令上传文件

  1. ftp> put upload_test.txt
  2. local: upload_test.txt remote: upload_test.txt
  3. 227 Entering Passive Mode (127,93,233). 553 Could not create file.

提示 553 Could not create file.似乎是权限问题 查查 vsftpd.conf 的 manual

anon_upload_enable
If set to YES,anonymous users will be permitted to upload files under certain conditions. For this to work,the option
write_enable must be activated,and the anonymous ftp user must have write permission on desired upload locations.

anon_mkdir_write_enable
If set to YES,anonymous users will be permitted to create new directories under certain conditions. For this to work,the
option write_enable must be activated,and the anonymous ftp user must have write permission on the parent directory.

看一下ftp目录的权限:

  1. [root@DX3906c ~]# ll /home/
  2. total 24
  3. drwxr-xr-x. 3 root root 4096 Dec 9 20:26 ftp

属主是root,ftp没有写权限,怪不得不能上传,改一下属主再上传下试试:

  1. [root@DX3906c ~]# chown ftp /home/ftp
  2. ......
  3. Name (localhost:root): anonymous
  4. 500 OOPS: vsftpd: refusing to run with writable anonymous root
  5. Login Failed.

这下登都不上去了...错误提示似乎是说匿名用户的根目录不能是可写的,那再改下权限试试:

  1. [root@DX3906c home]# mkdir ./ftp/uploads/
  2. [root@DX3906c home]# chown ftp ./ftp/uploads
  3. [root@DX3906c home]# chown root ./ftp
  4. [root@DX3906c home]# /etc/init.d/vsftpd restart
  5. ......
  6. ftp> cd uploads
  7. 250 Directory successfully changed.
  8. ftp> put upload_test.txt
  9. local: upload_test.txt remote: upload_test.txt
  10. 227 Entering Passive Mode (127,193,252). 150 Ok to send data. 226 Transfer complete.

可以上传了,试试远程也同样可以上传文件,不错不错.


匿名用户不可下载匿名用户上传文件

这个功能的描述比较绕口啊,其实就是用在比如:[学生交作业(只可以上交不可以看别人的作业)/上传资源需要审核]等场景,具体的实现原理就是匿名用户上传文件之后将文件的属主改为其他用户,那么以匿名用户继承的ftp用户的权限就不能下载这些文件了.这个地方我还不是很理解,先放一下吧,等到搞定了实体账号的配置之后再回过头来搞这个吧乜乜达...



文/Zi0n42(简书作者) 原文链接:http://www.jianshu.com/p/f90e0f81134b 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

猜你在找的CentOS相关文章