服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 6550|回复: 2

ubuntu下VSFTPD的安装和配置

[复制链接]
dirtysea 发表于 2010-7-11 17:25:57 | 显示全部楼层 |阅读模式
VSFTPD虚拟用户设置
1、安装VSFTPD
#sudo apt-get install vsftpd

2、编辑/etc/vsftpd.conf
anonymous_enable=NO  #禁止匿名用户
local_enable=YES  开启本地用户登陆,这两种模式必开一

3、进行虚拟用户配置
a、首先建立用户名密码文件loguser.txt
格式如下:
-----------------
user_id
password
-----------------

user1
passwd1
user2
passwd2
......

b、生成数据库文件
如果你以前没装过libdb4.6-util或者你不清楚装没装,需先执行下面的命令
#sudo apt-get install db4.6-util
#sudo db4.6_load -T -t hash -f loguser.txt/etc/vsftpd_login.db
最后设置一下数据库文件的访问权限
#sudo chmod 600/etc/vsftpd_login.db
配置PAM文件新建/etc/pam.d/vsftpd.vu内容如下:
auth required/lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.sodb=/etc/vsftpd_login

我们上一步建立的数据库 vsftpd_login在此处被使用
我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的语句pam_service_name=vsftpd.vu来启用的,稍后你将发现。
为虚拟用户创建本地系统用户新建一个系统用户virtual,用户家目录为/home/ftp,用户登录终端设为/bin/false(即使之不能登录系统)
sudo useraddvirtual -d /home/ftp -s /bin/false
sudo chown virtual:virtual /home/ftp

/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=virtual
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd



现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。那么怎么才能完成我们预定的目标呢?
/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 test1 test2

test1文件中的内容如下
local_root=/home/ftp/dbzh1 #只有浏览、下载权限,其他什么都没有
test2文件中的内容如下
anon_umask=000 #这关系到用户上传文件和建立文件夹的权限,否则上传的文件默认是600,不能进行其他操作。
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/dbzh1


至此配置完毕,重启FTP服务即可

问题:
1、Transfer done (but failed to open directory)
是目录权限问题,设置为755即可

2、500 OOPS: could not bind listening IPv4 socket
一般是端口占用,还有就是xinetd和stardlone两种模式冲突
要在/etc/xinetd.d/vsftpd文件中,把disable=no改成YES就行了!
还有就是在/etc/vsftpd.conf文件添加listen=yes这样就改成了
没有/etc/xinetd.d/vsftpd文件
就增加这个文件如下:vi /etc/xinetd.d/vsftpd
service ftp
{
      socket_type   = stream
      wait         = no
      user         = root
      server       = /usr/local/sbin/vsftpd
      server_args   =/etc/vsftpd.conf
      log_on_success += DURATION USERID
      log_on_failure += USERID
      nice          = 10
      disable       = yes
}
server_args请设置你的vsftpd.conf所在目录的完整文件名.

3、500 OOPS: cannot changedirectory:
google好多都是 执行这个就OK
#setsebool ftpd_disable_trans1
#/etc/init.d/vsftpdrestart
但是执行的时候遇到这个问题 Could not change active booleans: Invalid boolean
搜了好久终于解决   setsebool -Pftp_home_dir=1  #好像是因为selinux引起的。
 楼主| dirtysea 发表于 2010-11-9 16:02:48 | 显示全部楼层
ubuntu vsftpd 修改匿名访问目录2009-07-08 08:57给ftp服务 vsftpd 开通匿名访问的权限, 并且访问目录改成自己指定的目录(缺省目录是 /var/ftp)。

编辑 /etc/vsftpd.conf , 允许匿名访问
anonymous_enable=YES

新增一行:
anon_root=/home/xxxx/xxxx      #指定目录


 楼主| dirtysea 发表于 2012-4-24 11:26:51 | 显示全部楼层
vsftpd-2.0.1安装及配置


/etc/init.d/xinetd restart
安装vsftpd:
    Redhat AS5自带有vsftp。折磨了1.5天,才把vsftp搞定。相比windows一的 servU,功能是差不多,只不过servU全是graph操作。
安装: rpm -ivh vsftpd-2.0.5-10.el5.i386.rpm
默认的安装主目录: /var/ftp
vsftpd设置目录: /etc/vsftpd  主要的设置文件为vsftpd.conf
vsftpd日志记录文件:/var/log/xferlog
设置vsftp:
修改一下vsftpd.conf,以允许匿名登陆。
gedit /etc/vsftpd/vsftpd.conf
anonymous_enable=YES  #是否允许匿名登陆
ftp匿名用户:ftp,密码:fpt
例:ftp:192.168.1.2 其实是
ftp://ftp:ftp@192.168.1.2
另外:要给日志目录授权 chmod 777 /var/log
这个问题太重要了,折磨了偶1天。
设置vsftpd本地用户:
local_enable=YES   #是否允许本地用户登陆
write_enable=YES   #可写权限
另外,要将selinux的vsftpd开启
getsebool  ftpd_disable_trans
setsebool -P ftpd_disable_trans 1
设置vsftpd虚拟目录:
例:将/home/bob/incoming作为ftp的目录
  mount -o bind /var/ftp/incoming /home/bob/incoming
更多的参数设置,可参考
http://linux.chinaunix.net/bbs/viewthread.php?tid=885244

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选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。
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_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。
chroot_local_users=YES
#锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
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=/home/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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-29 15:53 , Processed in 0.300231 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表