vsftpd服务器搭建
vsftp服务器搭建
创建时间:20120620
安装:
$ sudo yum install vsftpd -y
开机启动:
$ sudo chkconfig --list
$ sudo chkconfig vsftpd on
启动
$ sudo service vsftpd start
修改配置:
$ sudo vim /etc/vsftpd/vsftpd.conf
添加如下:
# standalone运行模式
listen=YES
# 允许匿名用户
anonymous_enable=YES
# 匿名用户登录时不询问口令
no_anon_password=YES
# 允许匿名用户上传
anon_upload_enable=YES
# 允许匿名用户建立目录
#anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO
# 允许匿名用户具有建立目录,上传文件之外的权限,如重命名、删除
anon_other_write_enable=YES
# 匿名用户最大的下载和上传速度为1M
anon_max_rate=1048576
# 匿名用户上传的权限
anon_umask=022
# ftp 可写
write_enable=YES
# 允许本地用户登录
Local_enable=YES
# Default umask for local users is 077. But we wish to change this to 022
local_umask=022
# 日志文件的设定
# Activate logging of uploads/downloads.
xferlog_enable=YES
# 日志文件的存储位置
xferlog_file=/var/log/vsftpd.log
# 鉴于中文会有乱码的问题,开始syslog
# ftp信息可以到/var/log/messages下查看,这样vsftpd.log和
# messages都写入日志
syslog_enable=yes
# 日志的格式
xferlog_std_format=YES
添加虚拟用户:
$ sudo adduser -d /home/upload -g ftp -s /sbin/nologin gftchina
如果添加错误,可以使用下面命令对账户进行彻底删除
$ sudo userdel -r gftchina
设置密码:
$ sudo passwd gftchina
配置gftchina用户可以访问/var/ftp/pub目录:
(因为pub目录默认是匿名用户访问的目录,而gftchina账户需要访问此目录,所以需要有访问的权限)
$ sudo chown gftchina:ftp /var/ftp/pub/
修改selinux设置:
查看设置:
$ sudo getsebool -a| grep ftp
确保开通了匿名用户的写和上传权限:
$ sudo setsebool -P allow_ftpd_full_access 1
$ sudo setsebool –P allow_ftpd_anon_write 1
----------------------------------------------------------
也可以将selinux禁用(不推荐):
$ sudo vim /etc/selinux/config
将SELINUX=enforcing
改为:SELINUX=disabled
防火墙设置:
1. 加载ip_conntrack_ftp 模块:
$ sudo vim /etc/sysconfig/iptables-config
添加如下:
IPTABLES_MODULES="ip_conntrack_ftp"
2. 开放ftp需要的默认21端口:
$ sudo vim /etc/sysconfig/iptables
添加如下:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
3. 重启iptables
$ sudo service iptables restart
重启ftp:
$ sudo service vsftpd restart
测试访问:
ftp://192.168.1.42/
Tips:
1.vsftpd 号称最安全的FTP服务器,所以他的权限控制还是很严格的,所以如果发现了类似拒绝访问这样的情况,首先应该想到的是对应的目录是否有权限,当然这个也要根据具体的错误提示来判断。
vsftpd 家目录在/var/ftp下,可以通过此命令查看:
$ sudo cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
$ sudo cat /etc/group | grep ftp
ftp:x:50:
也就是说FTP用户的家目录不可以针对所有用户、用户组、其他用户组完全开放:
查看权限:
$ sudo ll -d /var/ftp/
drwxr-xr-x. 3 root root 4096 Jun 14 09:30 /var/ftp/
如果权限不对,则做相应的修改:
$ sudo chown root:root /var/ftp
$ sudo chmod 755 /var/ftp
2./var/ftp权限正确后,对应的是匿名用户的可读、可下载、可上传的问题,匿名用户对应的目录是/var/ftp/pub下,那必须赋予这个目录的完全权限:
$ sudo chmod 777 /var/ftp/pub
后话:
vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。
standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。
inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。