转载自:http://www.metsky.com/archives/551.html
vsftpd是Linux系统下非常常用的一款FTP程序,天缘也是事隔多年又用起这个软件,安全及性能不在话下,当然前提是要摸索着如何配置,本文汇总vsftp常用的安装和配置命令,均是入门级的,就像天缘博客一样。(注:以下命令均在终端中输入)
一、安装、重装、卸载vsftp
全新安装:apt-get install vsftpd
重新安装:apt-get --reinstall install vsftpd
卸载并清除配置文件:apt-get -purge remove vsftpd
关于如何卸载最干净问题,每种软件在安装时可能包含多个安装包模块,所以单纯的remove主程序包一般来讲肯定不干净,就像下文的:
http://www.cloudfly.info/archives/33
彻底卸载apache和mysql方法,按理说对目前的版本来讲该清的清的差不多了,但是只要版本已升级,包也变了、个数也变了,恐怕又不干净了,目前还是慢慢试吧(以后这些程序应该自带卸载包设计就好了,像WIN平台软件那样自己清理自己才是正道)。
安装后vsftp默认会创建一个名为ftp的用户,用户目录在/srv/ftp,好像匿名用户也会使用这个设置。
二、启动、停止vsftp
启动vsftp:
service vsftpd start
或指定路径,下同(注意:/etc/init.d/路径可能不同):
/etc/init.d/vsftpd start
重启
/etc/init.d/vsftpd restart
停止vsftp:
service vsftpd stop
/etc/init.d/vsftpd stop
三、创建ftp用户组和目录
1、创建FTP用户组ftp-users
groupadd ftp-users
2、创建用户组目录ftp-docs
mkdir /home/ftp-docs
注意,这时还未指定跟ftp-users关联。
3、修改权限
chmod 750 /home/ftp-docs
750组只能读不能写,要组能写,请改成770或760。
4、指定文件夹归属用户和用户组
chown root:ftp-users /home/ftp-docs
这时,如果远程用户属于ftp-users组,则会共享该目录。
5、添加FTP用户并未他们设置缺省目录
useradd -g ftp-users -d /home/ftp-docs user1
useradd -g ftp-users -d /home/ftp-docs user2
passwd user1
passwd user2
6、拷贝额外那就到/home/ftp-docs目录
7、修改/home/ftp-docs目录下文件权限,对该组用户只读
chown root:ftp-users /home/ftp-docs/*
chmod 740 /home/ftp-docs/*
到这里,用户就可以通过FTP客户端登入服务器并下载文件了。当然了,深入一点,还有下文的VSFTP配置、通讯端口以及防火墙设置等问题。每个环节都可能造成连接访问问题。
四、vsftp配置
vsftp配置是出于安全和功能两种考虑需要而进行的,一般涉及的配置有:
- 匿名处理问题
- 上传下载权限问题
- 账户登录处理问题
- 安全登录问题
- 限速问题
- ....
等等。主要修改/etc/vsftpd.conf这个文件(没发现这个文件?看看有没/etc/vsftpd/vsftpd.conf...)。注意,修改VSFTP配置之后需要重启一下其服务。
常用几个:
1、下面三个是针对匿名用户设置的,一般均关闭掉(#注释)。
#anonymous_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
2、下面这个控制用户上传许可:
write_enable=YES//该选项一般要打开,否则用户无法上传文件
3、下面这个限制用户在其Home目录,不能无限制的“到处逛”:
chroot_local_user=YES//该命令把用户限制在自己的Home目录,这个选项一定要开启
4、如果权限都修改完了,但是发现还是无法正常浏览目录列表(报告打开目录失败、创建文件失败),注意以下两种情况:
A. 该用户文件夹的上级文件夹权限(有关系),查看其Owner及group情况,可以改成755/772/777测试。
B. 注意一下是否存在Selinux设置问题(天缘自己在RedHat上遇到过):
位置:/etc/selinux/config
查看:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
要关闭这个SELINUX选项。如果为enforcing或者premissive,请修改为disabled,然后重启机子。
查看系统当前SELINUX选项命令如下:
sestatus