由于FTP的端口是 两个,一个是固定21端口,还有一个任意端口的数据通道。关键是任意端口很差搞。php
首先在vsftpd的配置文件中设置 任意端口的范围html
[root@localhost root]# vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=30001
pasv_max_port=31000
而后保存退出。java
而后设置iptables防火墙的配置文件linux
[root@localhost root]# vi /etc/sysconfig/iptables
在配置文件的最下面 加入web
-A INPUT -p tcp -m state –state NEW -m tcp –dport 30001:31000 -j ACCEPTshell
而后保存退出。数据库
http://dns.myhusl.com/a/default/2011/0922/18.htmlapache
Vsftp用虚拟用户比较方便控制权限,及方便配置路径及密码管理.
ubuntu
#yum install pam-devel db4-utils
#yum install vsftpd*
#ldd /usr/sbin/vsftpd(等装好vsftpd 后使用此命令查看一下。)
用ldd命令能够看到vsftpd是否加载了pam: l
ibpam.so.0 => /lib/libpam.so.0 #看到此行,表示pam安装成功。
[root@test vsftpd]# grep ^[^#] /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
guest_enable=YES
guest_username=apache #也可用别的
user_config_dir=/etc/vsftpd/user_config_dir
userlist_enable=YES
chroot_local_user=YES
tcp_wrappers=YES
listen_port=21
pasv_min_port=9991
pasv_max_port=9994
三、配置pam文件 (对应的文件是:/etc/vsftpd/vsftpd_login.db 但配置不能带.db后辍
,
不然,ftp链接时,会提示 530 Login incorrect错误,是由于用户密码没生效。我在这纠结了好几个小时
)
#vi /etc/pam.d/vsftpd
#%PAM-1.0
...
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #不能带.db后辍
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #不能带.db后辍
4. 为虚拟用户建立本地系统用户 ,
由于我网站ftp要上传,用户权限想保持一致,因此都用apache,这样上传后不用改用户权限,这样方便.
useradd -d /home/ftp apache
mkdir /home/ftp
chown apache.apache /home/ftp -R
useradd -d /home/ftp vftpuser
mkdir /home/ftp
chown vftpuser.vftpuser /home/ftp -R
5.、生成数据库文件:(生成配置时带.db, !!!但pam.d/vsftpd配置不能带.db)
#vim logins_user.txt
ftp_007
1234567
ftp_004
4321
ftp_008
8321
db_load -T -t hash -f /etc/vsftpd/logins_user.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
6. username 要跟生成的用户名一致
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_007
#管理员权限,拥有全部权限:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp
-------------
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_004
#只能够上传,不可修改和删除:
local_root=/home/ftp/user
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_008
#只能够浏览和下载:
local_root=/home/ftp
anon_world_readable_only=NO
---------------
[root@test ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
#iptables.sh for FTP
iptables -A INPUT -p tcp -s 1.2.3.5/32 -m multiport --dport 21,9991,9992,9993,9994 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-resetvim
vsftp中遇到的问题:200 PORT command successful. Consider using PASV
全部目录权限都改成777
[root@test home]# chmod 777 /home/ftp_all_backup -R
service vsftpd restart 必定要重启一次.
## setsebool -P ftpd_disable_trans 1
----------------
解决vsftpd的530 Login incorrect错误
0 , vi /etc/pam.d/vsftpd 保留 2行试下。 <---
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
一、首先须要在/etc/vsftpd/vsftpd.conf配置文件中启动
pam_service_name=vsftpd
注意:若是没有此项配置,则应该创建此配置项
二、cp Path/RedHat/vsftpd.pam /etc/pam.d/vsftpd 说明:path为vsftp解压缩源文件目录 这是由于咱们RHEL启用了PAM,
所在用到vsftp时须要用到 /etc/pam.d/vsftpd 这个文件(默认源码安装的不会有这个文件),所以除了匿名用户外本地用户没法登陆。
注意:vsftpd这个文件名要求与pam_service_name的值一致,不然无效。
sftpd 530 Login incorrect 错误
星期一, 六月 21st, 2010 | Author: 8liang
在配置vsftpd 的时候,常会遇到530 Login incorrect 错误,大多数的缘由是限制了本地用户的权限。
以centOS 为例,有如下几种解决方法:
1.缺乏了
pam_service_name=vsftpd
把这行加入到vsftpd.conf中就行了。
2.设置Authentication Configuration
setup
把其中的Local authorization is sufficient勾选上就能够了
--------
在Redhat AS4里按照默认方式安装好vsftpd后,按照如下步骤配置:
gedit /etc/vsftpd/vsftpd.conf
在文件中限制匿名用户,作以下设置:
anonymous_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
这样只有在user_list 里面的用户才能够访问ftp。
可是在service vsftpd restart 后,
用ftp localhost 测试,输入正确的用户名和密码以后,
却一直显示
:530 Login incorrect
Login Failed
后来发如今etc下面有个pam.d文件夹
进去打开vsftpd这个文件, 发现里面对以前的用户进行了限制,
将里面对应的限制注释掉,问题解决。
------------
连续配置在3台服务器上安装ftp,都是debian系的发行版
把vsftpd.conf里面的local_enable打开以后,本地用户仍是没法登陆,遇到很是诡异的问题,折腾了好久最后才找到答案debian环境中,vsftpd.conf里面的pam_service_name=vsftpd
要写全绝对路径
相似这样的形式
pam_service_name=/etc/pam.d/vsftpd
这种垃圾问题很是恼火!!
------------------
在vsftp配置文件中开启了匿名用户登陆,匿名用户有anonymous和ftp,
可是在登陆输入密码后报:500 OOPS: vsftpd: refusing to run with writable anonymous root检测配置文件没发现任何问题,
检测默认的ftp目录/var/ftp权限为777,报错应该为权限问题,
尝试chown root:root /var/ftp 而后chmod 755 /var/ftp 后,能够正常登陆,,用户的家目录是不能针对全部用户、用户组、其它用户组彻底开放。
----------------
而后保存退出,新建一个虚拟帐户,useradd ftp1,最后修改/etc/vsftpd/vsftpd.conf文件,在后面加入:
guest_enable=YES
guest_username=ftp1
pam_service_name=vsftpd.vu
保存退出,重启vsftpd服务后测试,输入登录密码后报530 Login incorrect错误,
最终找到解决方法,把vsftpd.uv文件中的/lib/security/去掉,也就是说不用绝对路径,
修改后重启vsftpd服务正常,检测/lib/security/目录确实有pam_userdb.so文件,但不知道为什么在vsftpd.vu中用绝对路径不生效。
-----
配置好vsftpd后,匿名用户能够登,本地用户却提示 530 Login incorrect错误。
找了半天缘由,都没有搞定;后来发现缘由在于,新建本地用户时,用了 -s /bin/false。
删除用户,再新建改为 -s /sbin/nologin 。完整以下:
#groupadd ftpusers
#useradd -d /home/ftp -g ftpusers -s /sbin/nologin upload
#chown -R upload:ftpusers /home/ftp
就能够了。
-----------
3、配置vsftpd.conf
anonymous_enable=NO
local_enable=YES // PAM方式此处好比为YES,否则会报 500 OOPS: vsftpd: both local and anonymous
------------------
=========================================
客户公司要架设两台FTP服务器分别给两个地点的分公司使用,可是这两台服务器都比较老了,一台HP 380G5 ,一台HP 380 G4,因此他们计划用linux,用什么版本他们就没说,因而我计划用CentOS6.2,其实安装和配置vsFTP都很简单,网上也不少了,不过仍是详细记录一下好
环境:CentOS6.0+vsFTP 0:2.2.2-6.el6_2.1
第一步:安装vsftp pam db4
yum install vsftpd pam* db4*-y
========================================================================================
Installed:
db4-cxx.i686 0:4.7.25-16.el6 db4-devel.i686 0:4.7.25-16.el6 db4-devel-static.i686 0:4.7.25-16.el6 db4-java.i686 0:4.7.25-16.el6
db4-tcl.i686 0:4.7.25-16.el6 pam-devel.i686 0:1.1.1-10.el6 pam_ldap.i686 0:185-11.el6 pam_pkcs11.i686 0:0.6.2-11.1.el6
pam_ssh_agent_auth.i686 0:0.9-70.el6_2.2 vsftpd.i686 0:2.2.2-6.el6_2.1
Dependency Installed:
pcsc-lite-libs.i686 0:1.5.2-6.el6
========================================================================================
经过setup对系统服务及防火墙进行配置,而后reboot系统
或者使用命令将vsftp配置为系统服务
chkconfig --level 35 vsftpd on
第二步:配置vsftpd服务的宿主
#useradd vsftpdadmin -s /sbin/nologin
这个vsftpdadmin只是用来替换root的,并不须要登陆
第三步:创建ftp虚拟宿主账户
#useradd ftpuser -s /sbin/nologin
这ftpuser只个虚拟账户的宿主,自己是不用登陆的
第四步:配置vsftpd.conf
更改配置前最好备份一下而后再改
vim /etc/vsftpd/vsftpd.conf
修改下面红色字体的部分为蓝色字体的形式,紫色字体是配置原有的
anonymous_enable=YES --> anonymous_enable=NO //不容许匿名用户访问,默认是容许。
#chroot_list_enable=YES --> chroot_list_enable=YES //不容许FTP用户离开本身主目录,默认是被注释掉的。
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list //若是开启了chroot_list_enable=YES,那么必定要开启这个,这条是锁定登陆用户只能家目录的位置,若是不开启用户登陆时就会报500 OOPS的错。
注意:/etc/vsftp/chroot_list自己是不存在的,这要创建vim /etc/vsftp/chroot_list,而后将账户输入一行一个,保存就能够了
local_enable=YES //容许本地用户访问,默认就是YES,不用改
write_enable=YES //容许写入,默认是YES,不用改
local_umask=022 //上传后文件的权限掩码,不用改
dirmessage_enable=YES //开启目录标语,默认是YES,开不开无所谓,我是默认就行
xferlog_enable=YES //开启日志,默认是YES,不用改
connect_from_port_20=YES //设定链接端口20
xferlog_std_format=YES //设定vsftpd的服务日志保存路径,不用改
(这步后面要有几个操做才能运行,也就是touch这个文件(见第五步),由于它自己不存在,并且还要给文件写入的权限)
#idle_session_timeout=600 --> idle_session_timeout=600 //会话超时,客户端链接到ftp但未操做,默认被注释掉,可根据我的状况修改
#async_abor_enable=YES --> async_abor_enable=YES //支持异步传输功能,默认是注释掉的,去掉注释
#ascii_upload_enable=YES --> ascii_upload_enable=YES //支持ASCII模式的下载功能,默认是注释掉的,去掉注释
#ascii_download_enable=YES --> ascii_download_enable=YES //支持ASCII模式的上传功能,默认是注释掉的,去掉注释
#ftpd_banner=Welcome to blah FTP service //FTP的登陆欢迎语,自己是被注释掉的,去不去都行
#chroot_local_user=YES --> chroot_local_user=YES //禁止本地用户登出本身的FTP主目录,自己被注释掉,去掉注释
pam_service_name=vsftpd //设定pam服务下vsftpdd的验证配置文件名,不用改
userlist_enable=YES //拒绝登陆用户名单,不用改
TCP_wrappers=YES //限制主机对VSFTP服务器的访问,不用改(经过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)
增长
guest_enable=YES //设定启用虚拟用户功能。
guest_username=ftpuser //指定虚拟用户的宿主用户。
virtual_use_local_privs=YES //设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf //设定虚拟用户我的Vsftp的配置文件存放路径
第五步:创建日志文件
#touch /var/log/vsftpd.log //日志文件
#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log //属于vsftpdadmin这个宿主
第六步:创建虚拟用户文件
#mkdir /etc/vsftpd/vconf/
#touch /etc/vsftpd/vconf/vir_user
第七步:创建虚拟用户
#vim /etc/vsftpd/vconf/vir_user
virtualuser //用户名
12345678 //密码
注意:第一行用户名,第二行是上一行用户名的密码,其余人的以此类推
第八步:生成数据库
#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
第九步:设置数据库文件的访问权限
#chmod 600 /etc/vsftpd/vconf/vir_user.db
#chmod 600 /etc/vsftpd/vconf/vir_user
第十步:修改/etc/pam.d/vsftpd内容
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
第十步:建立用户的配置文件
注意:用户配置文件的名字要和建立的“虚拟用户”名字对应
#touch /etc/vsftpd/vconf/virtualuser
#vim /etc/vsftpd/vconf/virtualuser
输入:
local_root=/home/virtualuser //虚拟用户的我的目录路径
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s,我设定的是10M
第十一步:创建虚拟用户目录
若是不创建虚拟用户的我的目录,那么全部的虚拟用户登陆后所在的目录都是同一个目录下
# mkdir /home/virtualuser
# chown ftpuser.ftpuser ./virtualuser
# chmod 600 /home/virtualuser
配置就此完成,若是想增长新的用户,只要按照上面的第七步、第十步进行就能够了。
遇到的问题 问题
其实这回遇到的问题很少。
1,450:读取目录列表失败
在配置完第一台vsftp后(上面的配置就是)再用一样的过程作第二台,完成后用客户端和浏览器死活没法登陆报错:
450:读取目录列表失败
只有在命令提示符和Termin下经过ftp 192.168.88.30后ls没有问题
对比了以前的配置,每一步都没错,难到是PASV问题,因而在vsftpd.conf加上了一句pasv_enable=NO,而后……没而后了,一切都正常了
二、中文乱码
这个是老生常谈的问题,好象也一直没有什么好的解决办法,网上也有提出改i18n,不过客户提出不用改,他们公司主要都是英文档,也我也省事了,不过仍是当个问题记录吧
三、500 OOPS:cannot change directory:/home/pmfile
新建用户后登陆报错,刚开始觉得是selinux的问题,后来一想不对,其余的账号都没事,确定刚才己关闭了selinux,那么就是权限问题了,果真是刚才忘了把权限给虚拟ftp宿主权限了:chown -R ftpuser.ftpuser /home/publicfile
四、530错误:Login incorrect.
这是一个让我觉的搞笑的问题,第二台vsftp服务我用本身的本上的客户端(FileZilla)登陆没问题,而客户用他的本登陆就不行,用的软件都同样,不一样的是我用的是Ubuntu,他用的是win7,但在win7的命令提示符下他却也能登陆也能ls,不是权限问题,不是pam问题,这两块都着手试过,结果发现是客户在终端输入的密码错误,以前我还一再问他到底有没有输错密码,他也十分确定的说没有,结果……
五、外网没法登陆,550错误,错误: 读取目录列表失败
这个问题非常挠头,在作完第二台服务器后让客户先从内网登陆,一切都很正常,而从外网登陆时就会出现“550 Permission denied.”“错误: 链接超时”“错误: 读取目录列表失败”,难到是权限?
试来试去什么PASV、什么权限更改全作了(这一步是我着实不想作的,要是登陆用户权限有问题内网也该没法登陆),最后让客户的网管带我去查了一下他们路由器的配置,我才发现他们的内网映射没有开放TCP20端口,开放后就OK了
本文出自 “青瞳” 博客,请务必保留此出处http://icedot.blog.51cto.com/61369/772452
==============================================
http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/
vsftpd做为FTP服务器,在Linux系统中是很是经常使用的。下面咱们介绍如何在centos系统上安装vsftp。
什么是vsftpd
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特色是小巧轻快,安全易用。
vsftpd 的名字表明”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
安装vsftpd
一、以管理员(root)身份执行如下命令
二、设置开机启动vsftpd ftp服务
三、启动vsftpd服务
管理vsftpd相关命令:
中止vsftpd: service vsftpd stop
重启vsftpd: service vsftpd restart
配置防火墙
打开/etc/sysconfig/iptables文件
- vi /etc/sysconfig/iptables
在REJECT行以前添加以下代码
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和关闭文件,重启防火墙
配置vsftpd服务器
默认的配置文件是/etc/vsftpd/vsftpd.conf,你能够用文本编辑器打开。
- vi /etc/vsftpd/vsftpd.conf
添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登陆SSH的权限,并限制其访问其它目录。
1、修改/etc/vsftpd/vsftpd.conf
将底下三行
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd.chroot_list
改成
- chroot_list_enable=YES
- # (default follows)
- chroot_list_file=/etc/vsftpd/chroot_list
三、增长用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登陆SSH权限。
- useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser
四、设置用户口令
五、编辑文件chroot_list:
- vi /etc/vsftpd/chroot_list
内容为ftp用户名,每一个用户占一行,如:
peter
john
六、从新启动vsftpd
另外,若是以为之后管理ftp用户名嫌麻烦,可使用centos官方发布的脚本管理。地址以下:
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users
出现的错误
一、500 OOPS: cannot change directory
解决方法:http://www.centos.bz/2011/10/ftp-500-oops-cannot-change-directory/
转载请注明《文章来源:
http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/》
若有疑问,欢迎加入CentOS论坛。
或者QQ群:177361427(验证信息:www.centos.bz)。
如须要付费技术支持,请点击这里。
http://bbs.chinaunix.net/thread-2271338-1-1.html
vsftpd.ftpusers 与 vsftpd.user_list
vsftpd的配置文件有三个,分别是 /etc/vsftpd/vsftpd.conf /etc/vsftpd.ftpusers /etc/vsftpd.user_list 其中,/etc/vsftpd/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。/etc/vsftpd.user_list中指定的用户默认状况(即在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=YES)下也不能访问FTP服务器,当在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=NO时,仅仅容许/etc/vsftpd.user_list中指定的用户访问FTP服务器。 |
http://bbs.chinaunix.net/thread-315257-1-1.html
看了很多站上的相关的设置文章, 感受这点说的都不是很明白, 尤为对初学者 现作一点补充:
若是设置为 chroot_local_user=YES chroot_list_enable=YES(这行能够没有, 也能够有) chroot_list_file=/etc/vsftpd.chroot_list 那么, 凡是加在文件vsftpd.chroot_list中的用户都是不受限止的用户 即, 能够浏览其主目录的上级目录.
因此, 若是不但愿某用户可以浏览其主目录上级目录中的内容,能够如上设置, 而后在 文件vsftpd.chroot_list中不添加该用户便可(此时, 在该文件中的用户都是能够浏览其主目录以外的目录的). 或者, 设置以下 chroot_local_user=NO chroot_list_enable=YES(这行必需要有, 不然文件vsftpd.chroot_list不会起做用) chroot_list_file=/etc/vsftpd.chroot_list 而后把全部不但愿有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list(此时, 在该文件中的用户都是不能够浏览其主目录以外的目录的) 中便可(一行一个用户名). |
http://bbs.chinaunix.net/thread-2186779-1-1.html
anon_root=/var/ftp 修改就能够了 |
http://biyoung.blogspot.com/2006/11/vsftpd.html
vsftpd用户权限设置
今天配置vsftp实现三个用户的不一样权限:
a.upload用户,能够上传下载,能够新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;
b.download用户,只能下载;
c.admin用户 ,管理员,能够上传,能够下载,能够新建文件夹,能够删除和更改文件和文件夹名。
配置文件
download内容 :
anon_world_readable_only=NO
upload内容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
admin内容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES (使能够续传上传的文件)
vsftpd上传文件权限设置
除本地用户外的其余用户属性配置函数
anon_umask=022 (最后的权限是rwxrwxrwx-022=rwxr-xr-x)
五、VSFTPD的设置选项
VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每一个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还能够给特定用户设定我的配置文件,具体介绍见后。
VSFTPD包中所带的vsftpd.conf文件配置比较简单,并且很是偏执狂的(文档自称:-))。咱们能够根据实际状况对其进行一些设置,以使得VSFTPD更加可用。
5.一、链接选项
本部分主要是一些与创建FTP连接相关的选项。
5.1.一、监听地址与控制端口
listen_address=ip address
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪一个IP地址上监听FTP请求,即在哪一个IP地址上提供FTP服务。对于只有一个IP地址的主机,不须要使用此参数。对于多址主机,不设置此参数,则监听全部IP地址。默认值为无。
listen_port=port_value
指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效。
5.1.二、FTP模式与数据端口
FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是通常形式的FTP。这两种FTP在创建控制链接时操做是同样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)创建控制连接,并经过此连接进行传输操做指令。它们的区别在于使用数据传输端口(ftp-data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。PASV FTP这种作法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定二者之间的数据传输端口更为方便一些。
port_enable=YES|NO
若是你要在数据链接时取消PORT模式时,设此选项为NO。默认值为YES。
connetc_from_port_20=YES|NO
控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的vsftpd.conf文件中此参数设为YES。
ftp_data_port=port number
设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。
port_promiscuous=YES|NO
默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能链接到客户端上。当心打开此选项。
pasv_enable=YES|NO
YES,容许数据传输时使用PASV模式。NO,不容许使用PASV模式。默认值为YES。
pasv_min_port=port number
pasv_max_port=port number
设定在PASV模式下,创建数据传输所可使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,好比50000-60000,将有助于安全性的提升。
pasv_promiscuous=YES|NO
此选项激活时,将关闭PASV模式的安全检查。该检查确保数据链接和控制链接是来自同一个IP地址。当心打开此选项。此选项惟一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。
pasv_address=
此选项为一个数字IP地址,做为PASV命令的响应。默认值为none,即地址是从呼入的链接套接字(incoming connectd socket)中获取。
5.1.3 ASCII模式
默认状况下,VSFTPD是禁止使用ASCII传输模式。即便FTP客户端使用asc命令,指明要使用ASCII模式,可是,VSFTPD表面上接受了asc命令,而在实际传输文件时,仍是使用二进制方式。下面选项控制VSFTPD是否使用ASCII传输模式。
ascii_upload_enable=YES|NO
控制是否容许使用ascii模式上传文件,YES容许,NO不容许,默认为NO。
ascii_download_enable=YES|NO
控制是否容许使用ascii模式下载文件,YES容许,NO不容许,默认为NO。
5.二、性能与负载控制
5.2.一、超时选项
idle_session_timeout=
空闲(发呆)用户会话的超时时间,如果超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。
data_connection_timeout=
空闲的数据链接的超时时间。默认值为300 秒。
accept_timeout=numerical value
接受创建联机的超时设定,单位为秒。默认值为60。
connect_timeout=numerical value
响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断链接,并在中断1分钟后自动激活链接。
5.2.2 负载控制
max_clients=numerical value
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发链接数,当超过此链接数时,服务器拒绝客户端链接。默认值为0,表示不限最大链接数。
�
max_per_ip=numerical value
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每一个IP地址最大的并发链接数目。超过这个数目将会拒绝链接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。
anon_max_rate=value
设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。
local_max_rate=value
设定用户的最大数据传输速度value,以Bytes/s为单位。默认无。此选项对全部的用户都生效。此外,也能够在用户我的配置文件中使用此选项,以指定特定用户可得到的最大数据传输速率。
步骤以下:
①在vsftpd.conf中指定用户我的配置文件所在的目录,如:
user_config_dir=/etc/vsftpd/userconf
②生成/etc/vsftpd/userconf目录。
③用户我的配置文件是在该目录下,与特定用户同名的文件,如:
/etc/vsftpd/userconf/xiaowang
④在用户的我的配置文件中设置local_max_rate参数,如:
local_max_rate=80000
以上步骤设定FTP用户xiaowang的最大数据传输速度为80KBytes/s。
VSFTPD 对于速度控制的变化范围大概在80%到120%之间。好比咱们限制最高速度为100KBytes/s, 但实际的速度可能在80KBytes/s 到120KBytes/s 之间。固然,如果线路带宽不足时,速率天然会低于此限制。
5.3 用户选项
VSFTPD的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。
5.3.一、匿名用户
anonymous_enable=YES|NO
控制是否容许匿名用户登陆,YES容许,NO不容许,默认值为YES。
ftp_username=
匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。
no_anon_password=YES|NO
控制匿名用户登入时是否须要密码,YES不须要,NO须要。默认值为NO。
deny_email_enable=YES|NO
此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登陆的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登陆时,被拒绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数
banned_email_file=/etc/vsftpd.banned_emails
指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。
anon_root=
设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。
anon_world_readable_only=YES|NO
控制是否只容许匿名用户下载可阅读文档。YES,只容许匿名用户下载可阅读的文件。NO,容许匿名用户浏览整个服务器的文件系统。默认值为YES。
anon_upload_enable=YES|NO
控制是否容许匿名用户上传文件,YES容许,NO不容许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还须要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。
anon_mkdir_write_enable=YES|NO
控制是否容许匿名用户建立新目录,YES容许,NO不容许,默认是不设值,即为NO。固然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。
anon_other_write_enable=YES|NO
控制匿名用户是否拥有除了上传和新建目录以外的其余权限,如删除、改名等。YES拥有,NO不拥有,默认值为NO。
chown_uploads=YES|NO
是否修改匿名用户所上传文件的全部权。YES,匿名用户所上传的文件的全部权将改成另一个不一样的用户全部,用户由chown_username参数指定。此选项默认值为NO。
chown_username=whoever
指定拥有匿名用户上传文件全部权的用户。此参数与chown_uploads联用。不推荐使用root用户。
5.3.二、本地用户
在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有帐号的用户。VSFTPD中称此类用户为本地用户(local users),等同于其余FTP服务器中的real用户。
local_enable=YES|NO
控制vsftpd所在的系统的用户是否能够登陆vsftpd。默认值为YES。
local_root=
定义全部本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。
user_config_dir=
定义用户我的配置文件所在的目录。用户的我的配置文件为该目录下的同名文件。我的配置文件的格式与vsftpd.conf格式相同。例如定义user_config_dir=/etc/vsftpd/userconf,而且主机上有用户xiaowang,lisi,那咱们能够在user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。
5.3.三、虚拟用户
guest_enable=YES|NO
如果启动这项功能,全部的非匿名登入者都视为guest。默认值为关闭。
guest_username=
定义VSFTPD的guest用户在系统中的用户名。默认值为ftp。
5.四、安全措施
5.4.一、用户登陆控制
pam_service_name=vsftpd
指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。
/etc/vsftpd.ftpusers
VSFTPD禁止列在此文件中的用户登陆FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。
userlist_enable=YES|NO
此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登陆FTP服务器时,该用户在提示输入密码以前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。
userlist_file=/etc/vsftpd.user_list
指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。
userlist_deny=YES|NO
决定禁止仍是只容许由userlist_file指定文件中的用户登陆FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登陆,同时也不向这些用户发出输入口令的提示。NO,只容许在文件中的用户登陆FTP服务器。
tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。
5.4.二、目录访问控制
chroot_list_enable=YES|NO
锁定某些用户在自家目录中。即当这些用户登陆后,不能够转到系统的其余目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。一般该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
chroot_local_users=YES|NO
将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的做用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。所以,只有在确实了解的状况下,才能够打开此参数。默认值为NO。
passwd_chroot_enable
当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置能够在每一个用户的基础上指定。每一个用户的容器来源于/etc/passwd中每一个用户的自家目录字段。默认值为NO。
5.4.三、文件操做控制
hide_ids=YES|NO
是否隐藏文件的全部者和组信息。YES,当用户使用"ls -al"之类的指令时,在目录列表中全部文件的拥有者和组信息都显示为ftp。默认值为NO。
ls_recurse_enable=YES|NO
YES,容许使用"ls -R" 指令。这个选项有一个小的安全风险,由于在一个大型FTP站点的根目录下使用"ls -R"会消耗大量系统资源。默认值为NO。
write_enable=YES|NO
控制是否容许使用任何能够修改文件系统的FTP 的指令,好比STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。
secure_chroot_dir=
这选项指向一个空目录,而且ftp用户对此目录无写权限。当vsftpd不须要访问文件系统时,这个目录将被做为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。
5.4.四、新增文件权限设定
anon_umask=
匿名用户新增文件的umask 数值。默认值为077。
file_open_mode=
上传档案的权限,与chmod 所使用的数值相同。若是但愿上传的文件能够执行,设此值为0777。默认值为0666。
local_umask=
本地用户新增档案时的umask 数值。默认值为077。不过,其余大多数的FTP服务器都是使用022。若是您的用户但愿的话,能够修改成022。在自带的配置文件中此项就设为了022。
5.五、提示信息
ftpd_banner=login banner string
此参数定义了login banner string(登陆欢迎语字符串)。用户能够自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来的欢迎词。
banner_file=/directory/vsftpd_banner_file
此项指定一个文本文件,当使用者登入时,会显示此该文件的内容,一般为欢迎话语或是说明。默认值为无。与ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。
dirmessage_enable=YES|MO
控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,如果有,则会出现此文档的内容,一般这个档案会放置欢迎话语,或是对该目录的说明。
message_file=
此选项,仅在dirmessage_enable选项激活方生效。默认值为.message。
5.六、日志设置
xferlog_enable=YES|NO
控制是否启用一个日志文件,用于详细记录上传和下载。该日志文件由xferlog_file选项指定。默认值为NO,但简单配置文件中激活此选项。
xferlog_file=
这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。
xferlog_std_format=YES|NO
控制日志文件是否使用xferlog的标准格式,如同wu-ftpd同样。使用xferlog格式,能够从新使用已经存在的传输统计生成器。然而,默认的日志格式更为可读性。默认值为NO,但自带的配置文件中激活了此选项。
log_ftp_protocol=YES|NO
当此选项激活后,全部的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。
5.七、其余设置
setproctitle_enable=YES|NO
YES,VSFTPD将在系统进程列表中显示每一个会话(session)的状态。也就是说,进程报告将显示每一个vsftpd会话在作什么(挂起、下载等),如用ps -ef|grep ftp。出于安全的目的,能够考虑将此选项关闭。NO,进程报告只显示一个vsftpd进程在运行。默认值为NO。
text_userdb_names=YES|No
当使用者登入后使用ls -al 之类指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该档案拥有者的名称。如果但愿出现拥有者的名称,则将此功能开启。默认值为NO。
user_localtime=YES|NO
默认为NO。YES,VSFTPD显示目录列表时使用你本地时区的时间。默认是显示GMT时间。一样,由ftp命令“MDTM”返回的时间值也受此选项影响。
check_shell=YES|NO
此选项仅对不使用PAM方式的VSFTPD生效。当此选项关闭后,当本地用户登陆时,VSFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。
nopriv_user=
指定一个用户,当VSFTPD不想要什么权限时,使用此用户身份。这用户最好是一个专用的用户,而不是用户nobody。在大多数的机器上,nobody用户被用于大量重要的事情。默认值为nobody。
pam_service_name=
指明VSFTPD使用用PAM验证服务时的PAM配置文件名。默认值为ftp。
##########################################################
vi /etc/vsftpd.conf
listen_port=28888
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=368282
最近作助教,须要搭建一个ftp服务器。需求以下:须要一个stu、teacher、admin和匿名用户anon,
其中 anon能够自由的到特定的目录里下载东东;
stu则能够到特定的目录里上传东东;
而tearcher,则能够对特定的目录里上传、下载东东;
admin则能够对stu、teacher的数据进行统一的管理。
另外,作为系统上已经有的本地用户则能够登陆本身的home目录。
针对上面的需求,ftp须要开通对匿名用户、本地用户、及虚拟用户的支持。而且特别对虚拟用户中的(stu、teacher、admin)分别授予不一样的权限。
下面就vsftpd支持三类用户加以说明:
1.匿名用户,也就是不须要输入密码就可登陆ftp服务器的用户,这个用户名一般是ftp或anonymous; 与匿名用户有关的设置多以 anon_选项开头。
2.本地用户,也就是你Linux系统上可登陆到系统的用户,这些用户是在系统上实实在在存在的用户。一般会有本身的home,shell等。与本地用户有关的设置多以local_开头或包含local_的选项。
3.虚拟用户,只对ftp有效的用户。这些用户不能够登陆Linux系统,只能够登陆ftp服务器。其实就是一个本地用户映射成多个只对ftp服务器有效的虚拟用户。虚拟用户能够有本身的ftp配置文件,所以一般利用虚拟用户来对ftp系统的不一样用户制定不一样的权限,以达到安全控制的目的。与虚拟用户有关的设置以guest_开头。
若是你只是想用ftp实现对本身的共享,你能够开启本地用户;
若是你想对不少人共享,那你能够用匿名用户;
若是你须要针对不一样的用户群给予不一样的权限,那你就要设置更复杂的虚拟用户了。
闲话少叙,开始安装vsftpd服务器。而对于全新安装的vsftpd,它是默认支持本地用户登陆的,并且匿名用户是没法使用的。因此我先要在安装以后,开启匿名登陆。
1. 安装vsftpd:
代码:
sudo apt-get install vsftpd
如今你就能够用你Ubuntu的用户名和密码登陆ftp服务器了,登陆目录是用户对应的Home目录。
能够在终端测试一下,输入用户名和密码,蓝色是须要输入的:
引用:
ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.2)
Name (localhost:crazier):
crazier
331 Please specify the password.
Password:
230 Login successful.
默认的/etc/vsftdp.conf中有效的选项以下:
代码:
cat /etc/vsftpd.conf | grep -v '^#'
代码:
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
各选项的意义是:
引用:
listen: vsftpd将以独立模式运行,由vsftpd本身监听和处理IPv4端口的链接请求
anonymous_enable: 不容许匿名访问
local_enable: 容许本地用户访问,即系统上已经有的用户能够直接登陆
dirmessage_enable: 是否激活目录欢迎信息功能。 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息。默认状况下,欢迎信息是经过该目录下的.message文件得到的。此文件保存自定义的欢迎信息,由用户本身创建
use_localtime: 是否使用本地时间,默认是使用GMT时间,和中国的标准时间大概相差8个小时
xferlog_enable: 让系统自动维护上传和下载的日志文件,默认状况该日志文件为/var/log/vsftpd.log
connect_from_port_20: 是否采用ftp的默认端口来控制和传送数据
secure_chroot_dir: 这个选项必须指定一个空的资料夹且任何登入者都不能有写入的权限,当vsftpd不须要file system 的权限时,就会将使用者限制在此资料夹中。
pam_service_name: 设置PAM外挂模块提供的认证服务所使用的配置文件名,该文件是在/etc/pam.d/目录下查询的。
rsa_cert_file: 指定SSL中RSA认证证书的位置
2.咱们先来开通匿名用户:
由于vsftpd的匿名用户的登陆目录默认是ftp的home目录,因此咱们先看看Ubuntu系统里的ftp用户的Home目录是什么?
引用:
cat /etc/passwd | grep ftp
ftp:x:117:125:ftp daemon,,,:
/srv/ftp:/bin/false
能够看到ftp的home是
/srv/ftp,可是/srv/ftp这个目录并不我想放文件的地方,我要放在/var/ftp/anon ,因此在这里须要修改一个ftp的home目录。
引用:
sudo usermod -d /var/ftp/anon ftp
cat /etc/passwd | grep ftp
ftp:x:117:125:ftp daemon,,,:
/var/ftp/anon:/bin/false
要开启匿名用户须要添加下面几项:
引用:
chroot_local_user=YES #把本地用户限制在本身的home文件夹中,这样子登陆以后就不能访问本身home以外的文件了,这样子是出于安全上的考虑
anonymous_enable=YES #开启匿名访问
anon_root=/var/ftp/anon #指定匿名登陆后的根文件夹,也就是对于匿名用户,会把/var/ftp/anon映射为它的根目录,
执行修改前先备份一下文件:
代码:
sudo cp /etc/vsftpd.conf{,.bak}
完整的vsftpd.conf文件以下:
引用:
cat /etc/vsftpd.conf | grep -v '^#'
listen=YES
local_enable=YES
chroot_local_user=YES
anonymous_enable=YES
anon_root=/var/ftp/anon
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
pam_service_name=vsftpd
secure_chroot_dir=/var/run/vsftpd/empty
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
到如今为止,你能够作一下测试 :
代码:
ftp localhost
输入你的Ubuntu用户名,而后再输入密码就能够登陆到ftp服务器了,默认的是用户名对应的home目录里了。这个是本地用户登陆。
或者在用户名里,你还能够直接输入ftp或anonymous,不用输入密码就能够匿名登陆了。
3. 创建本地虚拟用户
就像上面的分析的,我须要三个用户stu、teacher、admin,分别赋予不一样的权限,那咱们就要开始创建虚拟用户了。咱们要先在系统上建创建一个真实的用户(guest),以供ftp的虚拟用户进行映射。可是为了安全其间,咱们要让这个新建的用户并不能登陆Ubuntu,这样子咱们就能够把ftp的用户和ubuntu系统的用户分隔开来了,即便你ftp的密码丢了,也不会对你的系统形成太大的影响 。
而创建虚拟用户主要与下面两项相关(在vsftpd.conf里加上下面两句):
代码:
guest_enable=YES #开启虚拟用户
guest_username=guest #把虚拟用户映射到哪一个本地用户上,这个是能够自定义的,我取guest.
建立本地没法登陆的用户:
代码:
sudo useradd guest -d /var/ftp -s /bin/nologin
其中 -s /bin/nologin是为禁止使用guest登陆ubuntu
接着新建guest的登陆目录:
代码:
sudo mkdir /var/ftp/guest
再作一些发票的准备,建立虚拟用户的文件夹:
代码:
sudo mkdir -p /var/ftp/anon /var/ftp/admin /var/ftp/teacher /var/ftp/stu
修改目录权限,让/var/ftp目录的属主是guest,要否则会登陆不上的。
代码:
sudo chown guest:guest -R /var/ftp
4.创建ftp虚拟用户及认证文件
4.1新建一些必要的配置文件
在ubuntu中,vsftpd的全部的配置文件都是直接放在/etc目录下面的,这样子不方便管理,还有备份的时候也不方便,因此我就再建一个文件夹,专门来放那些配置文件:
代码:
sudo mkdir /etc/vsftpd
新建虚拟用户的配置文件:
代码:
sudo touch /etc/vsftpd/stu /etc/vsftpd/admin /etc/vsftpd/teacher
4. 2 创建用户数据库ftpguests
由于咱们要用ftp虚拟用户登陆ftp服务器,这些ftp虚拟用户又是映射到前面新建的guest本地用户的,可是虚拟用户又不归Ubuntu系统管理,它们不是用useradd命令生成的。而是须要咱们专门创建一个存放这些虚拟用户及它们密码的数据库ftpguests。这个数据库的格式是一行放用户名,一行对应它的密码,一个数据库文件中能够存放多个用户名及其密码。
ftpguests文件内容以下
cat ftpguests :
引用:
stu
stu_passwd
teacher
teacher_passwd
admin
admin_passwd
4.3生成用户数据库ftpguests.db:
安装数据库生成工具db-util:
代码:
sudo apt-get install db-util
把上一步创建的用户文件生成数据库,并放到/etc/vsftpd/文件夹中:
代码:
sudo db_load -T -t hash -f ftpguests /etc/vsftpd/ftpguests.db
修改用户数据库的权限
代码:
sudo chmod 600 /etc/vsftpd/ftpguests.db
4.4修改pam认证文件:
vsftpd借助PAM认证工具来帮忙认证了,咱们的本地用户登陆ftp也是须要PAM来帮忙的。安装vsftpd的时候,它会有/etc/pam.d/目录里生成一个认证的配置文件:
vsftpd ,而以前的vsftpd.conf里的选项 pam_service_name=vsftpd 指的正是PAM使用/etc/pam.d/下的vsftpd配置文件来认证。
先备份一下 /etc/pam.d/vsftpd
代码:
sudo cp /etc/pam.d/vsftpd{,bak}
而后在/etc/pam.d/vsftpd的
第一行处添加下面的内容,
代码:
auth sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
account sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
说明:
上面的内容必定要放在第一行,要否则不能同时支持虚拟用户和本地用户的,这一步是关键。上面的/etc/vsftpd/ftpguests文件指的就是咱们刚刚生成的用户数据库。另外,这里选择sufficient而不是required的缘由是,sufficient表示充分条件,可让vsftpd同时支持虚拟用户和本地用户。
添加后的/etc/pam.d/vsftpd的文件是这样子的:
引用:
# Standard behaviour for ftpd(8).
auth sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
account sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so
4.5创建每一个虚拟用户的配置文件
为每一个虚拟用户(stu、teacher、admin)创建它们各自的配置文件,以便对不一样的用户进行不一样的权限分配。能够理解成虚拟用户的配置文件是对vsftpd.conf的扩展,vsftpd.conf是对全局的控制,而每一个虚拟用户的配置文件则是方便进行更精细、更个性的控制。
stu用户的配置文件:只能在本身的home目录下进行上传操做,而且不能下载,不能查看其它用户上传的内容,也不能修改。
引用:
cat /etc/vsftpd/stu | grep -v '^#'
local_root=/var/ftp/stu
write_enable=YES #能够进行写操做,是下面设置的基础
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES #能够建立文件夹
download_enable=NO #不能下载
teacher用户的配置文件:能够在本身的home目录里上传、下载文件,也可对文件夹重命名,拥有全部权限
引用:
cat /etc/vsftpd/teacher | grep -v '^#'
local_root=/var/ftp/teacher
anon_world_readable_only=NO #对文件夹是否有读的权限,为YES时,没有读的权限,为NO时,能够查看文件夹内有哪些文件
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES #能够对文件夹进行修改
admin用户的配置文件:能够对teacher,stu进行任何操做。它与teacher是不一样在于local_root指定的文件夹包含了stu和teacher的home目录
引用:
cat /etc/vsftpd/admin | grep -v '^#'
local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
4.6全局配置文件/etc/vsftpd.conf:
如今再一次修改vsftpd.conf,该文件的内容为:
cat /etc/vsftpd.conf | grep -v '^#'
代码:
listen=YES
anonymous_enable=YES
local_enable=YES
local_root=/home/crazier #把本地用户的登陆目录限制在/home/crazier,这个根据你本身的要求进行修改
anon_root=/var/ftp/anon #把匿名用户限制在/var/ftp/anon目录里
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES #为了安全期间,开启用户的监牢限制
guest_enable=YES #开启vsftpd对虚拟用户的支持
guest_username=guest #把虚拟用户映射到本地用户guest,这个值取决于 (第3步: 创建本地虚拟用户)中的值
user_config_dir=/etc/vsftpd #指定虚拟用户的配置文件全部的目录,确保/etc/vsftpd文件夹里有(第4.5步:创建每一个虚拟用户的配置文件)中生成的stu teacher、 admin 文件
pam_service_name=vsftpd #指定PAM使用的配置文件,在/etc/pam.d文件夹里
secure_chroot_dir=/var/run/vsftpd/empty
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
到如今为止,已经能够经过匿名、本地、虚拟用户访问ftp服务器了。其中有一些是我本身的理解,有那么点意思,可是不必定正宗,若是如什么不对的地方,还但愿可以指出来。
PS: 我们 ubuntu坛子里的帖子还真很差写,光搞这些个格式花了一天时间。还要很耐心呀,不知道有什么好办法没有。
引用:
关于vsftpd同时使用系统用户和虚拟用户验证
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=658533
鳥哥的 Linux 私房菜 FTP 伺服器
http://linux.vbird.org/linux_server/0410vsftpd.php#theory_who
Vsftpd虚拟用户设置
http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE
玩转vsftpd服务器的四大高级配置
http://os.51cto.com/art/201008/221633.htm
Vsftpd
http://wiki.ubuntu.org.cn/Vsftpd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################
http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE
Vsftpd虚拟用户设置
首先咱们假定你已经安装了vsftpd,并在/home/vsftpd 目录下创建了如下3个子目录
下面,咱们要建3个虚拟用户,密码分别是用户名后加"00"
使得
- 用户db1 的主目录为 dbzh1 ,在该目录下只有只读权限
- 用户db2 的主目录为 dbzh2,在该目录下只有只读权限
- 用户db3 的主目录为 dbzh3 ,在该目录下拥有全部权限
[编辑]建立虚拟用户数据库
[编辑]建立文本文件loguser.txt
格式以下:
user_id
password
因而,咱们/home/loguser.txt文件的内容为
cd /home 切换到/home目录
sudo touch /home/loguser.txt 建立帐户和密码文件
sudo gedit /home/loguser.txt
而后将下面的帐户文件字符粘帖入loguser.txt中,注意一行一行输入。
注意:奇数行为帐户名,偶数行为密码。也就是1.3.5.等行为用户名,2.4.6行为密码
db1
db100
db2
db200
db3
db300
[编辑]生成数据库
若是你之前没装过libdb4.6-util 或者你不清楚装没装,需先执行下面的命令
sudo apt-get install db4.6-util
而后,咱们执行
sudo db4.6_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
最后设置一下数据库文件的访问权限
sudo chmod 600 /etc/vsftpd_login.db
[编辑]配置PAM文件
编辑文件/etc/pam.d/vsftpd.vu 将如下内容增长的原文件前面两行:
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
- 咱们上一步创建的数据库 vsftpd_login 在此处被使用
- 咱们创建的虚拟用户将采用PAM进行验证,这是经过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的,稍后你将发现。
[编辑]为虚拟用户建立本地系统用户
新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登陆终端设为/bin/false(即便之不能登陆系统)
sudo useradd vsftpd -d /home/vsftpd -s /bin/false
sudo chown vsftpd:vsftpd /home/vsftpd
/etc/vsftpd.conf
根据须要建立/etc/vsftpd.conf,通常要确保含有如下设置:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
如今为止,咱们的3个用户均可以工做了,但是它们的根目录如今都是/home/vsftpd,权限也都同样。 那么怎么才能完成咱们预约的目标呢?
[编辑]/etc/vsftpd_user_conf
在上面的配置中,有这么一行
user_config_dir=/etc/vsftpd_user_conf
如今,咱们要把各个用户的配置文件放到目录/etc/vsftpd_user_conf中
sudo mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
sudo touch db1 db2 db3
db1文件中的内容以下
local_root=/home/vsftpd/dbzh1
一样,db2文件中的内容
local_root=/home/vsftpd/dbzh2
那么,db3的内容呢? 其实也很简单
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/dbzh3
这里要注意不能有空格,否则登陆的时候会提示出错。
若是有空格,在登陆时,终端会提示:
500 OOPS: bad bool value in config file for: guest_enable Login failed.
或者
500 OOPS: bad bool value in config file for: anon_upload_enable Login failed.
等等之类的错误的布尔值提示
由于你的那个YES/NO 布尔值(bool value)后边加了一个空格,即:
anon_world_readable_only=NO空格
正确的格式应该是:
anon_world_readable_only=NO(无空格)!!!!!!
注意,NO后边的空格,要用退格键将其删除。
[编辑]能成?
重启vsftpd咱们就能够看到效果了^_^
/etc/init.d/vsftpd start|restart
500 OOPS: cannot change directory:
linux打开ftp遇到的问题 500 OOPS: cannot change directory:
google好多都是 执行这个就OK setsebool ftpd_disable_trans 1 service vsftpd restart
可是执行的时候遇到这个问题 Could not change active booleans: Invalid boolean
搜了很久终于解决
setsebool -P ftp_home_dir=1
############################################################
配置管理虚拟用户:
http://os.51cto.com/art/201002/184610.htm
CentOS vsftpd更新了不少版本更新,我本人认为CentOS vsftpd很好使的文件系统,在此向你们推荐。现在技术不断更新,各类使用文件都已经淘汰。我认为仍是有很不错的如CentOS vsftpd值得你们来运用。
制做虚拟用户数据库文件
1.先创建虚拟用户名单文件:[root@KcentOS5 ~]# touch /etc/vsftpd/virtusers创建了一个虚拟用户名单文件,这个文件就是来记录CentOS vsftpd虚拟用户的用户名和口令的数据文件,我这里给它命名为virtusers。为了不文件的混乱,我把这个名单文件就放置在/etc/vsftpd/下。
2.编辑虚拟用户名单文件:
- [root@KcentOS5 ~]# vi /etc/vsftpd/virtusers
- download
- 1234
- upload
- 5678
- admin
- 9012
CentOS vsftpd编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“一行用户名,一行口令”。
3.生成虚拟用户数据文件:
[root@KcentOS5 ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db设定PAM验证文件,并指定虚拟用户数据库文件进行读取在/etc/pam.d/vsftpd的文件头部加入如下信息(在后面加入无效)
- auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
- account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
虚拟用户的配置
local_root=/var/www/html指定虚拟用户的具体主路径。
anonymous_enable=NO设定不容许匿名用户访问。
write_enable=YES设定容许写操做。
local_umask=022设定上传文件权限掩码。
anon_upload_enable=NO设定不容许匿名用户上传。
anon_mkdir_write_enable=NO设定不容许匿名用户创建目录。
idle_session_timeout=600设定空闲链接超时时间。
data_connection_timeout=120设定单次连续传输最大时间。
max_clients=10设定并发客户端访问个数。
max_per_ip=5设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件。
local_max_rate=50000设定该用户的最大传输速率,单位b/s。
这里将原CentOS vsftpd.conf配置文件通过简化后保存做为虚拟用户配置文件的模版。这里将并不须要指定太多的配置内容,主要的框架和限制交由CentOS vsftpd的主配置文件CentOS vsftpd.conf来定义,即虚拟用户配置文件当中没有提到的配置项目将参考主配置文件中的设定。
而在这里做为虚拟用户的配置文件模版只须要留一些和用户流量控制,访问方式控制的配置项目就能够了。这里的关键项是local_root这个配置,用来指定这个虚拟用户的FTP主路径。
[b][color=Red]这里有一个最主要的问题,就是目录的宿主和宿主用户不是虚拟用户,咱们设置了目录后还只能下载,不能上传和下载,若是想上传就要使用chown的命令chmod o+w /var/www/html/ o是指其它的用户,w是写的权限[/[/color]b]
http://wsvirtual.blog.51cto.com/100332/213931/
1.创建虚拟用户口令库
vi /etc/vsftpd/logins.txt
在里面写用户名和口令,奇数行用户名,偶数行口令,例如:
user01
666666
user02
666666
2.生成vsftpd的认证文件
首先安装认证软件
yum install db4
生成认证文件命令: db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
3.更改文件权限
chmod 600 /etc/vsftpd/vsftpd_login.db vsftpd_login.db只对root用户可读写(安全起见)
4.创建虚拟用户所需的PAM配置文件
vi /etc/pam.d/vsftpd.vu 在里面写下面的内容 (新建)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
保存退出.
vsftpd_login 是认证文件去掉.db
5.创建虚拟用户及所要访问的目录并设置相应权限
groupadd ftpd
useradd -g ftpd -d /www -s /sbin/nologin -M ftpd 宿主目录home/ftpsite 账号:virtual
chmod 700 /homegtpstie/ 宿主目录的权限设为700
vsftpd服务器中的全部虚拟用户账号登录后都在 /www下
新建虚拟用户也不必定非得放在/www下,放在其余目录也行,只要文件宿主都是ftpd.ftpd就行.
6.设置vsftpd.conf配置文件
vi /etc/vsftpd/vsftpd.conf 最后面加上
guest_enable=YES 激活虚拟用户
guest_username=ftpd 虚拟用户在linux里的用户名
pam_service_name=vsftpd.vu 判断虚拟用户的数据文件
user_config_dir=/etc/vsftpd_user_conf 虚拟用户指定的配置文件所在地址 (vsftpd_user_conf是文件夹)
virtual_use_local_privs=YES 设置为 YES 时,虚拟用户使用与本地用户相同权限,设置为 NO 时,虚拟用户使用与匿名用户相同权限 (必须开启)
7.为不一样的虚拟用户设置不一样的权限
1)为虚拟用户设置主配置文件
在vsftpd.conf配置文件中,添加user_config_dir项,并设置保存的目录
user_config_dir=/etc/vsftpd_user_conf
2)创建配置文件目录 (上面指定了目录,如今尚未建呢)
mkdir /etc/vsftpd_user_conf
3)为每一个不一样的虚拟用户创建不一样的配置文件
在/etc/vsftpd_user_conf目录中能够为每一个虚拟用户创建单独的配置文件,配置文件名称和用户名相同。
local_root=/data/userspace 设置虚拟用户登陆后的主目录
anon_world_readable_only=NO 具备浏览FTP目录和下载权限
anon_upload_enable=YES 具备上传文件权限
anon_mkdir_write_enable=YES 具备创建和删除目录的权利
anon_other_write_enable=YES 具备文件更名和删除文件的权利
最后重启vsftpd
设置文件和文件夹上传后的权限
vi /etc/vsftpd/vsftpd.conf
local_umask=022
file_open_mode=0644
开启目录访问控制
chroot_list_enable=YES 锁定某些用户在自家目录中。即当这些用户登陆后,不能够转到系统的其余目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。一般该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
要建立/etc/vsftpd/chroot_list这个文件,而后把要锁定在自家目录的用户名都写上去,一行一个用户名.
最后重启vsftpd
简述PAM原理
若是你已经对pam有所了解,请跳过,我知道的可能还不如你多。你不感兴趣也请跳过,由于不看这个也可配置。
用户 <-> vsftpd <-> PAM模块 <-> 用户和密码数据库
vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM。你们对于PAM,也许有些陌生,可是一直在用。所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模 块(不知道这样翻译对不对)。看见plug这个关键字,就知道是很灵活的。
如今几乎全部daemon程序通常都是用PAM来进行认证的,包括telnet/sshd/imapd,甚至你的login,都是用PAM
PAM的最大好处是灵活。它无论你的用户和密码用什么数据格式存储(数据库也好,一般用的密码文件也好),只要有相应的PAM模块就能够存储。好比说,你们不只能够用vsftpd + PgSQL作用户登录 验证,只要你喜欢你还能够用MySQL,Oracle,LDAP数据库存储用户数据,只要有相应的PAM就能够。全部的daemon均可以用一个后台数据库来作用户验证登录,包括telnet/sshd等等。
1.系统版本为centos6.0,直接用yum来安装vsftpd
[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安装软件和vsftpd
2.[root@localhost ~]#chkconfig vsftpd on//开机2345启动vsftpd服务
3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//备份一下vsftpd.conf为vsftpd.conf.1
4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#号重定向到/etc/vsftpd/vsftpd.conf文件中。
5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf内容以下:
anonymous_enable=NO#设定不容许匿名访问
local_enable=YES#设定本地用户能够访问。注:如使用虚拟宿主用户,在该项目设定为NO的状况下全部虚拟用户将没法访问。
#chroot_list_enable=YES #使用户不能离开主目录我这句是没加入的加入就登陆不了不知道为何?
write_enable=YES
local_umask=022//生成掩码为022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log#设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必需要手动touch出来
xferlog_std_format=YES
ascii_upload_enable=YES #容许使用ASCII模式上传
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。
listen=YES
guest_enable=YES#设定启用虚拟用户功能
guest_username=vritual#指定虚拟用户的宿主用户。-RHEL/CentOS中已经有内置的ftp用户了我这里是本身建立的vritual
pam_service_name=vsftpd#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
user_config_dir=/etc/vsftpd/vuser_conf#设定虚拟用户我的vsftp的RHEL/CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
virtual_use_local_privs=YES
6.建立vsftpd密码文件
[root@localhost ~]#vi /etc/vsftpd/vsftpd.login.txt//一行为用户名另一行为密码。
zhh
123456
user1
user1
user2
user2
user3
user3
user4
user4
user5
user5
7.[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd.login.txt /etc/vsftpd/vsftpd.login.db//生成vsftpd.login.db文件chmod 700权限。
8.[root@localhost ~]#vi /etc/pam.d/vsftpd//这个文件最前面添加vsftpd.login最好添加在最前面。
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第一句
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第二句
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
~
9.[root@localhost ~]#mkdir /etc/vsftpd/vuser_conf/ //建立vuser_conf文件夹
10.[root@localhost ~]#vi /etc/vsftpd/vuser_conf/zhh//建立虚拟用户个性RHEL/CentOS FTP服务文件
local_root=/home/ftpsite/zhh//虚拟用户的根目录(根据实际修改)
write_enable=YES可写
anon_umask=022掩码
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
11.[root@localhost ~]#useradd -d /home/ftpsite/ -s /sbin/nologin vritual //创建虚拟帐号
12.[root@localhost ~]#touch /var/log/vsftpd.log
13.[root@localhost ~]# service vsftpd start//启动vsftpd服务
14.[root@localhost ftp]# ftp localhost//登陆ftp
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): zhh
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir zhh
257 "/home/ftpsite/zhh" created
15.常见问题:
553 Could not create file
通常都是SELinux的问题,设置SELinux的一个值,重启服务器便可。
setsebool -P ftpd_disable_trans 1
service vsftpd restart
500 OOPS: bad bool value in config file for: write_enable
注意你的CentOS FTP服务文件中保证每一行最后没有任何空格,通常出错就是在多余的空格上。
虚拟用户上传后默认权限为:600,用户没法下载文件
在配置文件中添加或修改anon_umask项的值。如anon_umask=022或000
使用命令添加ftp用户
添加ftp用户,命令格式:
#adduser -d /目录路径 -g ftp -s /sbin/nologin 用户名
如何把账号ftp默认的路径/var/ftp更改到别处?或者是,个人linux全部的目录都放在/根分区,由于空间紧张,我可否把ftp这个用户的默认路径放到别的分区??
对于ftp这个用户的管理,咱们应该查看/etc/passwd ,而后修改ftp用户那行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
好比咱们想把ftp用户的家目录改成,则要把相似上一行改成
ftp:x:14:50:FTP User:/在这里修改就好了/ftp:/sbin/nologin
而后咱们要创建ftp用户的新的家目录。
疑问:
建立chroot list,将ftp用户加入其中://这个起到什么做用不清楚因此没添加。
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list
16.最后为了方便你们本身写了一个shell给你们加上附件,若是不符合要求能够本身自行修改参数。
#!/bin/sh
yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp
chkconfig vsftpd on
cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1
cp -rf /root/ftp/vsftpd.conf /etc/vsftpd
cp -rf /root/ftp/vsftpd /etc/pam.d/
cp -rf /root/ftp/vuser_conf /etc/vsftpd
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user1
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user2
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user3
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user4
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user5
db_load -T -t hash -f /root/ftp/vsftpd.login.txt /root/ftp/vsftpd.login.db
mv /root/ftp/vsftpd.login.db /etc/vsftpd/
useradd -d /home/ftpsite vritual
service vsftpd start
ftp localhost
#######################各类错误解决###################################
http://www.oschina.net/question/12_8202
CentOS配置vsftpd遇到550错误的解决办法
安装vsftpd很简单:yum install vsftpd
启动vsftpd也很简单:service vsftpd start
默认状况下用root是没法链接的,你能够建立一个非root账户登陆,可是登陆是能够登陆,却没有办法建立或是上传文件。有人说,能够把 SELinux关掉,但是这样未免也有点尺度太大了,实际上是SELinux里的设置问题,只要修改相应的配置就能够了。
发现问题的方法:
# getsebool -a | grep ftp
allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off
将红色字体部分的值改为on就能够了,设置的方法以下:
# setsebool -P ftp_home_dir 1
而后就能够上传文件,作你想作的事情了。
转自:http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/
http://sonice.blog.51cto.com/994545/218123/
vsftpd正常设置
但登录后不能建立,也不能删除提示550错误
解决办法能够关掉selinux=disable
[root@host]# vi /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 - SELinux is fully disabled.
SELINUX=disabled
#把这里改为disable
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
-------------------------------------------------------------------------------------
若是在想不重启系统的状况下关掉SELINUX,能够输入命令:
setenforce 0
http://www.oschina.net/question/13403_24332?sort=default&p=2#answers
[root@umboyserver vsftpd]# setsebool allow_ftpd_full_access 1
[root@umboyserver vsftpd]# setsebool allow_ftpd_use_cifs 1
[root@umboyserver vsftpd]# setsebool allow_ftpd_use_nfs 1
[root@umboyserver vsftpd]# setsebool ftp_home_dir 1
[root@umboyserver vsftpd]# setsebool httpd_enable_ftp_server 1
[root@umboyserver vsftpd]# setsebool tftp_anon_write 1
[root@umboyserver vsftpd]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@umboyserver vsftpd]# getsebool -a|grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> on
allow_ftpd_use_nfs --> on
ftp_home_dir --> on
httpd_enable_ftp_server --> on
tftp_anon_write --> on
http://blog.linuxnotes.cn/?p=755
配置以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=30999
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
anon_world_readable_only=NO
|
[root@test etc]# cat /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
启动成功后浏览目录,下载都正常,惟独上传文件不行。
提示:553 Could not create file
网上大多文章只说关闭SELINUX就能够解决,但个人问题依旧。最后查到,在虚拟用户virtual的家目录新建一个0777权限的目录,上传至这个文件夹下面一切正常,也不知道什么缘由。
参考信息以下:
Following are the common errors you will encounter when setting anonymous vsftp-2.0.5
4) error: need to access to a designated dir for anonymous ftp
Set following:
anon_root=/var/www/html/docs
5) error: 500 OOPS: vsftpd: refusing to run with writable anonymous root
sympton:
[root@localhost ~]# ftp 70.234.256.239
Connected to 70.234.256.239.
220 Welcome to My FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (70.234.256.239:root): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
Reason:
Change attribute of ftp directory from
drwxrwxrwx 3 root root 4096 Jun 13 18:42 docs
To
dr-xr-xr-x 3 root root 4096 Jun 13 18:42 docs
6) error: 553 Could not create file.
Sympton:
ftp> put t.txt
local: t.txt remote: t.txt
227 Entering Passive Mode (192,168,1,103,245,163)
553 Could not create file.
Reason:
You need to create a sub dir under ftp dir with 0777 attribute as
drwxrwxrwx 2 ftp ftp 4096 Jun 15 00:40 pub
7) error: anonymously uploaded file has attribute (mask) 0600,
these files could not be downloaded
rw——- 3 root root 4096 Jun 13 18:42 t.txt
Reason:
anon_umask=0133 does not take effect in the code.
In the file “postlogin.c”, make following changes:
//vsf_sysutil_fchmod(new_file_fd, 0600); //jwei removes
vsf_sysutil_fchmod(new_file_fd, 0777^tunable_anon_umask); //jwei adds
recompile and cp to /usr/local/sbin/vsftpd
error: 425 Security: Bad IP connecting.
ftp>ls
425 Security: Bad IP connecting.
Reason:
Set following:
pasv_promiscuous=YES
http://www.apoyl.com/?p=15
vsftpd有三种访问方式:匿名用户,本地用户和虚拟用户
我采用的 匿名用户 环境虚拟机 Centos
错误表述: [2010-12-16 15:14:49] 553 Could not create file.
错误:> [2010-12-16 15:14:49] 拒绝访问。
能下载,不能上传!
服务器的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
另外还有文件夹权限开成777
也重启的vsftpd服务器
MD还有出现上面错误!
眼睛吹了风疼啊,改天再看了!
日志信息 »
该日志于2010-12-16 09:12由 凹凸曼 发表在
Vsftpd,
问题集分类下, 通告目前不可用,你能够至底部留下评论。
http://hi.baidu.com/%DC%BD%C0%B3%B5%D9/blog/item/d845684739331f3286947376.html
用ftp工具上传文件的时候,老是出现553 Could not create file这样的错误
修改/etc/vsftpd.conf
write_enable=YES
你的ftp用户都使用同一个主目录吗?
假设是/home/ftp
这个目录的权限应该是770,owner是root,group是ftp
chmod 770 /home/ftp
chown root:ftp /home/ftp
配置说明 vi /etc/vsftpd.conf
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口令
no_anon_password=YES
#匿名用户主目录
anon_root=(none)
#接受本地用户
local_enable=YES
#本地用户主目录
local_root=(none)
#若是匿名用户须要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登陆
deny_email_enable=YES
#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登陆
check_shell=YES
#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES
#若为YES,则userlist_file中的用户将不能登陆,为NO则只有userlist_file的用户能够登陆
userlist_deny=NO
#若是和chroot_local_user一块儿开启,那么用户锁定的目录来自/etc/passwd每一个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下)
passwd_chroot_enable=NO
#定义匿名登入的使用者名称。默认值为ftp。
ftp_username=FTP
#################用户权限控制###############
#能够上传(全局控制).
write_enable=YES
#本地用户上传文件的umask
local_umask=022
#上传文件的权限配合umask使用
#file_open_mode=0666
#匿名用户能够上传
anon_upload_enable=NO
#匿名用户能够建目录
anon_mkdir_write_enable=NO
匿名用户其它的写权利(更改权限?)
anon_other_write_enable=NO
若是设为YES,匿名登入者会被容许下载可阅读的档案。默认值为YES。
anon_world_readable_only=YES
#若是开启,那么全部非匿名登录的用户名都会被切换成guest_username指定的用户名
#guest_enable=NO
全部匿名上传的文件的所属用户将会被更改为chown_username
chown_uploads=YES
匿名上传文件所属用户名
chown_username=lightwiter
#若是启动这项功能,则全部列在chroot_list_file之中的使用者不能更改根目录
chroot_list_enable=YES
#容许使用"async ABOR"命令,通常不用,容易出问题
async_abor_enable=YES
管控是否可用ASCII 模式上传。默认值为NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下载。默认值为NO。
ascii_download_enable=YES
#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不须要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超时设置##################
#空闲链接超时
idle_session_timeout=600
#数据传输超时
data_connection_timeout=120
#PAVS请求超时
ACCEPT_TIMEOUT=60
#PROT模式链接超时
connect_timeout=60
################服务器功能选项###############
#开启日记功能
xferlog_enable=YES
#使用标准格式
xferlog_std_format=YES
#当xferlog_std_format关闭且本选项开启时,记录全部ftp请求和回复,当调试比较有用.
#log_ftp_protocol=NO
#容许使用pasv模式
pasv_enable=YES
#关闭安全检查,当心呀.
#pasv_promiscuous+NO
#容许使用port模式
#port_enable=YES
#关闭安全检查
#prot_promiscuous
#开启tcp_wrappers支持
tcp_wrappers=YES
#定义PAM 所使用的名称,预设为vsftpd。
pam_service_name=vsftpd
#当服务器运行于最底层时使用的用户名
nopriv_user=nobody
#使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)
pasv_address=(none)
#################服务器性能选项##############
#是否能使用ls -R命令以防止浪费大量的服务器资源
#ls_recurse_enable=YES
#是否使用单进程模式
#one_process_model
#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式
listen=YES
#当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。如果但愿出现拥有者的名称,则将此功能开启。
text_userdb_names=NO
#显示目录清单时是用本地时间仍是GMT时间,能够经过mdtm命令来达到同样的效果
use_localtime=NO
#测试平台优化
#use_sendfile=YES
################信息类设置################
#login时显示欢迎信息.若是设置了banner_file则此设置无效
ftpd_banner=欢迎来到湖南三辰Fake-Ta FTP 网站.
#容许为目录配置显示信息,显示每一个目录下面的message_file文件的内容
dirmessage_enable=YES
#显示会话状态信息,关!
#setproctitle_enable=YES
############## 文件定义 ##################
#定义不能更改用户主目录的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定义限制/容许用户登陆的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定义登陆信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用户登录时做为密码的电子邮件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目录信息文件
message_file=.message
############## 目录定义 #################
#定义用户配置文件的目录
user_config_dir=/etc/vsftpd/userconf
#定义本地用户登录的根目录,注意定义根目录能够是相对路径也能够是绝对路径.相对路径是针对用户家目录来讲的.
local_root=webdisk #此项设置每一个用户登录后其根目录为/home/username/webdisk
#匿名用户登录后的根目录
anon_root=/var/ftp
#############用户链接选项#################
#可接受的最大client数目
max_clients=100
#每一个ip的最大client数目
max_per_ip=5
#使用标准的20端口来链接ftp
connect_from_port_20=YES
#绑定到某个IP,其它IP不能访问
listen_address=192.168.0.2
#绑定到某个端口
#listen_port=2121
#数据传输端口
#ftp_data_port=2020
#pasv链接模式时可使用port 范围的上界,0 表示任意。默认值为0。
pasv_max_port=0
#pasv链接模式时可使用port 范围的下界,0 表示任意。默认值为0。
pasv_min_port=0
##############数据传输选项#################
#匿名用户的传输比率(b/s)
anon_max_rate=51200
#本地用户的传输比率(b/s)
local_max_rate=5120000
########################################
别外,若是要对每一个用户进行单独的控制,只须要在user_config_dir中创建username文件,内容为数据传输和用户权利里面设置我的的合适的选项,用户自定义文件一样适合用pam支持的虚拟用户
附: FTP 数字代码的意义
110 从新启动标记应答。
120 服务在多久时间内ready。
125 数据链路埠开启,准备传送。
150 文件状态正常,开启数据链接端口。
200 命令执行成功。
202 命令执行失败。
211 系统状态或是系统求助响应。
212 目录的状态。
213 文件的状态。
214 求助的讯息。
215 名称系统类型。
220 新的联机服务ready。
221 服务的控制链接埠关闭,能够注销。
225 数据连结开启,但无传输动做。
226 关闭数据链接端口,请求的文件操做成功。
227 进入passive mode。
230 使用者登入。
250 请求的文件操做完成。
257 显示目前的路径名称。
331 用户名称正确,须要密码。
332 登入时须要帐号信息。
350 请求的操做须要进一部的命令。
421 没法提供服务,关闭控制连结。
425 没法开启数据链路。
426 关闭联机,终止传输。
450 请求的操做未执行。
451 命令终止:有本地的错误。
452 未执行命令:磁盘空间不足。
500 格式错误,没法识别命令。
501 参数语法错误。
502 命令执行失败。
503 命令顺序错误。
504 命令所接的参数不正确。
530 未登入。
532 储存文件须要帐户登入。
550 未执行请求的操做。
551 请求的命令终止,类型未知。
552 请求的文件终止,储存位溢出。
553 未执行请求的的命令,名称不正确。
个人vsftpd 配置(待写)
今天使用 本地用户 出现一样的问题
下面配置内容摘自:http://blog.chinaunix.net/u3/108023/showart_2156262.html
FTP用户通常是不能登陆系统的,这也是为了安全。在系统中,没有权限登陆系统的用户通常也被称之为虚拟用户;虚拟用户也是要写进/etc
/passwd中;这只是一种虚拟用户的方法,但说实在的并非真正的虚拟用户,只是把他登陆SHELL的权限去掉了,因此他没有能力登陆系统;
若是咱们想把beinan这个用户目录定位在/opt/beinan这个目录中,而且不能登陆系统;咱们应该以下操做
[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
其实这仍是不够的,还要改一下配置文件vsFTPd.conf ,以确保本地虚拟用户能有读写权限;
local_enable=YES
write_enable=YES
local_umask=022