一.安装与启动vsftpd
yum -y install vsftpd
/usr/sbin/vsftpd或service vsftpd start
netstat -ntlp
chkconfig --level 35 vsftpd on
二.FTP相关配置文件说明
1.vsftpd.conf文件说明
anonymous_enable=YES 是否允许匿名ftp,如否则选择NO
local_enable=YES 是否允许本地用户登录
write_enable=YES 允许使用任何可以修改文件系统的FTP的指令
local_umask=022 默认的umask码
anon_upload_enable=YES 允许匿名上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件
xferlog_enable=YES 是否记录ftp传输过程
connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)
chown_upload=YES 所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log
xferlog_std_format=YES 是否使用标准的ftp xferlog模式
idle_session_timeout=600 设置默认的断开不活跃session的时间
data_connection_timeout=120 设置数据传输超时时间
nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户,默认是nobody
async_abor_enable=YES 允许使用\"async ABOR\"命令,一般不用,容易出问题
ascii_upload_enable=YES 管控是否可用ASCII 模式上传。默认值为NO
ascii_download_enable=YES 是否使用ascii码方式上传和下载文件
ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息
deny_email_enable=YES 如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录
banned_email_file=/etc/vsftpd.banned_emails 禁止使用匿名用户登陆时作为密码的电子邮件地址
chroot_local_user=YES 在预设的情况下,是否要将使用者限制在自己的家目录之内,如果是YES代表用户默认就会被chroot,如果是NO,则预设是没有chroot。不过,实际还是需要底下的两个参数互相参考才行。为了安全性,这里应该要设定成YES才好
chroot_list_enable=YES 如果启动这项功能,则所有列在chroot_list_file中的使用者不能更改根目录
chroot_list_file=/etc/vsftpd.chroot_list 定义不能更改用户主目录的文件
ls_recurse_enable=YES 是否能使用ls -R命令以防止浪费大量的服务器资源
listen=YES
pam_service_name=vsftpd 定义PAM 所使用的名称,预设为vsftpd
userlist_enable=YES 若启用此选项,userlist_deny选项才被启动
tcp_wrappers=YES 开启tcp_wrappers支持
#local_root=/home/username 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
2.vsftpd.ftpusers文件说明
root //默认情况下,root和它以下的用户是不允许登录FTP服务器的.可以将不允许登录的用户添加到这里来.但切记每个用户都要单独占用一行.
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
3.vsftpd.user_list文件说明
其实它的内容跟上面那个文件内容一样,只是在系统对文件vsftpd.conf 进行检测时,会检测到"userlist_deny=YES",因此这个文件必须存在.
注意:修改前建议使用“cp”命令备份这三个文件,修改完成后需要重启vsftpd服务才能使设置生效。
三.配置实例
不允许匿名登录FTP,只允许系统用户登录,且固定到自己的家目录
为了防止配置过程中出现错误,一般应把原配置文件/etc/vsftpd/vsftpd.conf复制一份到别的目录中,一旦配置后出现问题解决不了,还可以把原配置文件复制回来.
修改文件/etc/vsftpd/vsftpd.conf如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to my FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
touch /var/log/vsftpd.log
touch /var/log/xferlog
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
把要固定在家目录的用户添加到里面
service vsftpd restart
Ps:一定要加上 chroot_local_user=YES
否则通过浏览器登录时会默认在根/下,不仅能访问其他目录,还有读、写权限
Vsftpd虚拟用户的配置
第一步、安装
#cd /etc/yum.repos.d/
# rm -rf *
# wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
# yum clean all
# yum -y install vsftpd
# yum -y install db4-utils
第二步、建立虚拟用户
#vim /etc/vsftpd/vu_list.txt
user1 password1 user2 password2 user3 password4
格式为第一行为用户名名,第二行为密码,然后类推
建立db数据库,同时只有root用户才能读写
# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
# chmod 600 /etc/vsftpd/vu_list.db
配置pam文件
# vim /etc/pam.d/vsftpd.vu (64位系统)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
# vim /etc/pam.d/vsftpd.vu (32位系统)
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
建立虚拟用户对应的系统真实用户
useradd wangxu4 -d /data -s /sbin/nologin
chown wangxu4.wangxu4 -R /data
注:在虚拟主机服务器上用nginx,用户为www,所以我的配置为虚拟用户为www
第三步、修改配置文件
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_file=/var/log/xferlogxferlog_std_format=YESdual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.logascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to FTP service.chroot_local_user=YESlisten=YESlisten_port=2121allow_writeable_chroot=YESuserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=wangxu4pam_service_name=vsftpd.vuuser_config_dir=/etc/vsftpd_vuvirtual_use_local_privs=YES
注释如下:
anonymous_enable=NO
设定不允许匿名访问
local_enable=YES
设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES
设定可以进行写操作。
local_umask=022
设定上传后文件的权限掩码。
anon_upload_enable=NO
禁止匿名用户上传。
anon_mkdir_write_enable=NO
禁止匿名用户建立目录。
dirmessage_enable=YES
设定开启目录标语功能。
xferlog_enable=YES
设定开启日志记录功能。
connect_from_port_20=YES
设定端口20进行数据连接。
chown_uploads=NO
设定禁止上传文件更改宿主。
xferlog_file=/var/log/vsftpd.log
设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_std_format=YES
设定日志使用标准的记录格式。
nopriv_user=vsftpd
设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
async_abor_enable=YES
设定支持异步传输功能。
ascii_upload_enable=YES
ascii_download_enable=YES
设定支持ASCII模式的上传和下载功能。
ftpd_banner=Welcome to Awei FTP servers
设定Vsftpd的登陆标语。
chroot_local_user=YES
禁止本地用户登出自己的FTP主目录。
pam_service_name=vsftpd
设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。
guest_enable=YES
设定启用虚拟用户功能。
guest_username=ftp
指定虚拟用户的宿主用户。
virtual_use_local_privs=YES
设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf
设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的
地方就是这些配置文件名必须和虚拟用户名相同。
第四步、建立日志
因为默认vsftpd的日志文件不存在,需要手工建立,同时赋予权限
# touch /var/log/vsftpd.log
# chown /var/log/vsftpd.log
第五步、建立虚拟用户配置文件
# mkdir /etc/vsftpd_vu/
所有权限
# vim /etc/vsftpd_vu/user1
write_enable=YES anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=Yes local_root=/data/user1
上传权限
# vim /etc/vsftpd_vu/user2
write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=NO local_root=/data/user2
只能下载
# vim /etc/vsftpd_vu/user3
write_enable=NO anon_world_readable_only=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO local_umask=022 download_enable=yes local_root=/data/user3
启动服务
#service vsftpd start
新版本vsftpd一定要加上allow_writeable_chroot=YES,否则登录报500错误