vsftp 配置虚拟用户

        

        VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP(非常安全的FTP) 从此名称可以看出来,编制者的初衷是代码的安全。目前已经被许多大型站点所采用,如:ftp.RedHat.com,ftp.kde.org,ftp.gnome.org.等。


Vsftpd的实现有三种方式
1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问
2、本地用户形式:以/etc/passwd中的用户名为认证方式
3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。


下面我们来看看虚拟用户的配置:

系统环境(执行以下任何一个命令查看系统版本): 

cat /etc/redhat-release
cat /etc/issue

显示: Red Hat Enterprise Linux Server release 6.0 (Santiago)

说明我的系统版本是 RHEL Server release 6.0


一、首先安装相关包

以下都是用yum安装,配置yum源的方法网上有,这里就不说了

1. yum安装vsftp:

yum install vsftpd -y


2. yum安装PAM服务相关部件:

yum install pam* -y


3. yum安装DB4部件包(这里要特别安装一个db4的包,用来支持文件数据库):

yum install db4* -y


二、配置 (vsftp的默认配置在/etc/vsftpd/下)

1. 创建一个保存用户及密码的文件:

cd /etc/vsftpd/ 
touch virtual_user


2. 添加用户一行是用户一行是密码

cd /etc/vsftpd/ && vim  virtual_user

比如: lengyu

          passwd


3. 将virtual_user文本里的账号及密码添加到db4的数据库文件里

db_load -T -t hash -f /etc/vsftpd/virtual_user /etc/vsftpd/virtual_user.db


4. 配置 /etc/pam.d/下的vsftpd,里面的内容全部注释,然后再添加:

sed -ir 's/^/#/g' /etc/pam.d/vsftpd   #将vsftpd里的内容全部注释

echo -n ' 
auth    required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtual_user 
account required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtual_user 
' >> /etc/pam.d/vsftpd                #添加两行内容


5. 创建一个vsftpd服务的用户vsftpd,可以使用-d来指定他的家目录:

useradd -s /sbin/nologin vsftpd
useradd -d /var/ftp/lengyu -s /sbin/nologin lengyu


6. 更改vsftp的配置文件(修改以下):

vim /etc/vsftpd/vsftpd.conf

#不允许匿名访问

anonymous_enable=NO
#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES
#允许写操作
write_enable=YES
#创建或上传后文件的权限掩码
local_umask=022
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户创建目录
anon_mkdir_write_enable=NO
#进入目录时可以显示一些设定的信息,可以通过message_file=.message来设置
dirmessage_enable=YES
#开启日志
xferlog_enable=YES
#主动连接的端口号
connect_from_port_20=YES
#设定禁止上传文件更改宿主
chown_uploads=NO
#日志路径,记得自己创建一下并且对这个文件进行chown  vsftpd.vsftpd /var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#就是格式话日志格式的,你懂得。使用wu ftp软件时设置yes就行
xferlog_std_format=YES
#因为我们把vsftpd的shell设置为nobody 了,所以 这个地方写vsftpd就可以啦!当然或者可以写成系统内的nobody
nopriv_user=vsftpd
#设定支持异步传输功能
async_abor_enable=YES
#设定支持ASCII模式的上传
ascii_upload_enable=YES
#设定支持ASCII模式的上传
ascii_download_enable=YES
#登陆欢迎语
ftpd_banner=Welcome to dongnan FTP service.
#限定在自己的目录内,就比如如果设置成NO,那么当你登陆到ftp的时候,可以访问服务器的其他一些有权限目录。设置为YES后即,锁定你的目录了
chroot_list_enable=YES
#待会要把用户写到这个里面,写到这里的用户乖乖的呆在家目录下吧
chroot_list_file=/etc/vsftpd/chroot_list
#以standalone方式来启动
listen=YES
#/etc/pam.d/下的vsftpd文件
pam_service_name=vsftpd
#在/etc/vsftpd/user_list中的用户将不得使用FTP
userlist_enable=YES
#支援 TCP Wrappers 的防火墙机制
tcp_wrappers=YES
#启用虚拟用户功能
guest_enable=YES
#虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
#虚拟用户个人vsftpd的配置文件存放路径。vsftpd_config是文件夹啊。注意:配置文件名必须和虚拟用户名相同
user_config_dir=/etc/vsftpd/vsftpd_config


7. 创建一个保存虚拟用户配置文件的目录:

mkdir /etc/vsftpd/vsftpd_config/


8. 创建vsftp的日志文件

touch /var/log/vsftpd.log
chmod 600 /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log


9. 创建要将哪些用户固定在家目录的配置文件,将需要固定用户目录的用户名字写进去即可:

touch /etc/vsftpd/chroot_list


10. 编辑用户的配置文件:

cd /etc/vsftpd/vsftpd_config/

cat > lengyu << EOF 

#启用虚拟用户,centos下yes必须为小写字母 
guest_enable=yes 

#映射本地虚拟用户 
guest_username=lengyu

#如果当时创建用户的时候锁定一个目录了,那就可以不写 
local_root=/var/ftp/lengyu

#用户会话空闲后10分钟
idle_session_timeout=600 

#将数据连接空闲2分钟断 
data_connection_timeout=120 

#最大客户端连接数 
max_clients=10 

#每个ip最大连接数 
max_per_ip=5 

#限制上传速率,0为无限制 
local_max_rate=0 

EOF


11. 启动vsftp:

/etc/init.d/vsftpd start


        如果出现 Starting vsftpd for vsftpd:500 OOPS: bad boolvalue in config file for:的话,使用以下命令,再次启动vsftp 即可:

sed -ir 's/[ ]*$//g'  /etc/vsftpd/vsftpd.conf
sed -ir 's/[ ]*$//g'  /etc/vsftpd/vsftpd_config/lengyu


    如需要再添加其他用户,只需编辑virtual_user文件,向里面添加账号密码(一行是账号一行是密码,切记不要将账号和密码放到同一行),然后进入vsftpd_config目录,拷贝一个用户文件重命名成自己用户的文件,编辑-保存,然后再次使用以下命令将用户添加到文件数据库virtual_user.db中;然后直接登录即可,不用重启vsftp。

db_load -T -t hash -f /etc/vsftpd/virtual_user /etc/vsftpd/virtual_user.db


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章