编译装置vsftpd-2.3.4(装备虚拟用户登录)高档使用全攻略[连载之电子商务体系架构]51CTO博客 - 亚美娱乐

编译装置vsftpd-2.3.4(装备虚拟用户登录)高档使用全攻略[连载之电子商务体系架构]51CTO博客

2019年04月02日08时46分18秒 | 作者: 巧兰 | 标签: 用户,装置,编译 | 浏览: 1798

编译装置vsftpd-2.3.4(装备虚拟用户登录)高档运用全攻略[连载之电子商务体系架构]
原文出处:
size="3"> Jimmy Li Blog
作者:Jimmy Li

联络评论、扣扣:柒⑥柒陆叁⑤叁伍
相关博文:
/> centos5.6 (64bit)编译装置vsftpd-2.3.4的装备(两种用户登录)[连载之电子商务体系架构]
[连载之电子商务体系架构]拜访量超越100万的电子商务网站技能架构
  续上一博文,再深化阐明vsftpd装备FTP效劳器,完成更深层次的功用,到达更安全的、高效、高档运用技巧。 本文旨在阐明,体系装置进程中需求留意的当地,关键环节,工具包之间的依存联系,交换相承支撑联系。
具体阐明为啥我要这样操作,并且在操作进程遇到的问题,和相应的解决办法。
  本文关键:
1.完成多虚拟用户。完成多个虚拟宿主用户(本地用户),一个宿主本地用户能够相关多个虚拟用户。
例如,宿主本地用户www,相关多个虚拟用户jimmyli.blog.51cto.com(目录/data/jimmyli.blog.51cto.com),user1(目录/data/user1),…………,N用户(目录N)可自己权限可读写,更改文件、文件夹特点。
2.vsftp手艺编译及装备虚拟用户进程。版别vsftpd-2.3.4,体系Centos32位,64位。
3.虚拟用户权限,独自操控目录\文件的权限,读,写,修正,删去,创立目录\文件。
目录:
一、完好的实例
二、编译装置关键剖析,具体阐明
三、供给参阅
四、重要提示
五、装备文件操作阐明
六、简略装备实例
七、参阅实例
八、常见过错及解决办法
  一、完好的实例:
yum install pam-devel db4-utils
wget
http://www.92csz.com/downloads/vsftpd-2.3.4.tar.gz
tar zxvf vsftpd-2.3.4.tar.gz
cd vsftpd-2.3.4
make && make install
mkdir -p /data/www/user1
chown wwwftp:wwwftp /data/www/user1
useradd -d /data/www -s /sbin/nologin wwwftp
mkdir -p /etc/vsftpd/ vim /etc/vsftpd/vftpuser.txt
jimmyli.blog.51cto.com
123456
user1
password1
格局为榜首行为用户名名,第二行为暗码,然后类推
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
vim /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
vim /etc/vsftpd.conf
local_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu
guest_enable=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pasv_min_port=5000
pasv_max_port=6000
# 约束一切用户都在家目录
chroot_local_user=yes
mkdir -p /etc/vsftpd/vsftpd_user_conf
vim /etc/vsftpd/vsftpd_user_conf/user1
guest_username=wwwftp
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/www/user1
  二、编译装置关键剖析,具体阐明:
(一).装置支撑工具包
首要运用了PAM数据办法的虚拟用户装备
1、首先是装置PAM、db4工具包 yum install pam-devel db4-utils 承认装置DB4部件包:
查看是否装置 db4 db4-utils
rpm -qa|grep db4  运转后呈现下面内容 阐明现已装置能够运用db_load指令(首要是 db4-utils)
[root@gb ~]# rpm -qa|grep db4
db4-utils-4.3.29-10.el5_5.2
db4-java-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
db4-tcl-4.3.29-10.el5_5.2
db4-devel-4.3.29-10.el5_5.2
承认装置PAM效劳相关部件:
查看是否装置pam
rpm -qa|grep pam
[root@gb ~]# rpm -qa|grep pam
pam_smb-1.1.7-7.2.1
pam_pkcs11-0.5.3-23
pam-devel-0.99.6.2-6.el5_5.2
pam_ccreds-3-5
pam_passwdqc-1.0.2-1.2.2
pam-0.99.6.2-6.el5_5.2
pam_krb5-2.2.14-21.el5
1.装置Vsftpd效劳相关部件:
2.承认装置PAM效劳相关部件:
[root@beidou8.com ~]# yum install pam*
开发包,其实不装也没有联系,首要的意图是承认PAM。
3.装置DB4部件包:
这儿要特别装置一个db4的包,用来支撑文件数据库。
[root@beidou8.com ~]# yum install db4*
=
运用yum泛字符查找并装置
yum -y install db4* pam*
Running Transaction
  Updating       : pam_krb5                                                 1/5
  Installing     : db4-tcl                                                  2/5
  Installing     : db4-java                                                 3/5
  Installing     : db4-devel                                                4/5
  Cleanup        : pam_krb5                                                 5/5
Installed:
  db4-devel.i386 0:4.3.29-10.el5_5.2      db4-java.i386 0:4.3.29-10.el5_5.2
  db4-tcl.i386 0:4.3.29-10.el5_5.2
Updated:
  pam_krb5.i386 0:2.2.14-21.el5
=
(二).下载编译装置包,编译,编译装置
1.下载
wget
http://www.92csz.com/downloads/vsftpd-2.3.4.tar.gz
wget http://xiazai.xiazaiba.com/Soft/V/vsftpd-2.3.4.tar.gz
wget http://down1.chinaunix.net/distfiles/vsftpd-2.3.4.tar.gz
wget http://www.92csz.com/downloads/vsftpd-2.3.4.tar.gz
wget http://source.ipfire.org/source-2.x/vsftpd-2.3.4.tar.gz
wget ftp://ftp.pku.edu.cn/open/ftp/vsftpd/vsftpd-2.3.4.tar.gz
wget http://www.baiyuxiong.com/wp-content/uploads/2011/07/vsftpd-2.3.4.tar.gz
上面是现在互联网有用的下载地址,运用我惯用的办法,从资源中找到现在互联网有用的下载的地址。探寻下载地址的办法十分好用,弹无虚发。
http://download.chinaunix.net/download/0001000/19.shtml 2.解压
tar zxvf vsftpd-2.3.4.tar.gz
cd vsftpd-2.3.4
3.树立默许文件夹,编译,装置编译
3A.树立默许文件夹
mkdir -p /usr/local/man/man8 #//装置编译的时分保存的默许文件目录。或许你的体系现已存在此目录,那就不必树立
mkdir -p /usr/local/man/man5 #//装置编译的时分保存的默许文件目录。或许你的体系现已存在此目录,那就不必树立
3B.编译,装置编译
make && make install
cd ../
  三、供给参阅
创立必要的帐号,目录: 
# useradd nobody  //或许你的体系现已存在此帐号,那就不必树立
# mkdir /usr/share/empty  //或许你的体系现已存在此目录,那就不必树立
# mkdir /var/ftp  //或许你的体系现已存在此目录,那就不必树立
# useradd -d /var/ftp ftp  //或许你的体系现已存在此帐号,那就不必树立
# chown root:root /var/ftp
# chmod og-w /var/ftp
请记住,假如你不想让用户在本地登陆,那么你需求把他的登陆SHELL设置成/sbin/nologin,比方以上的nobody和ftp我就设置成/sbin/nologin

touch /etc/vsftpd.user_list
mkdir /etc/vsftpd
touch /etc/vsftpd/chroot_list
echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local
mkdir /var/ftp
touch /etc/vsftpd/userlist.chroot
touch /etc/vsftpd/userlist_deny.chroot
touch /var/log/vsftpd.log
mkdir -p /usr/share/empty
  四、重要提示:
因为这儿树立vsftpd的虚拟用户登录,编译前请一定要确认 支撑PAM认证办法
虚拟用户方法完成(db及mysql方法)
# cd vsftpd-2.3.4  //进入vsftpd-2.0.3的源代码目录
# make clean  //铲除编译环境
# vi builddefs.h  \\持续修正builddefs.h 文件,文件内容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
将以上define VSF_BUILD_PAM行的undef改为define,支撑tcp_wrappers,支撑PAM认证办法,支撑SSL,和匿名用户方法是相同的。 
# make  //直接在vsftpd-2.0.3里用make编译
# ls -l vsftpd
-rwxr-xr-x 1 root root 108300 Sep 27 11:15 vsftpd  //可执行程序已被编译成功

源码装置默许不支撑tcp_wrappers和ssl
需求修正builddefs.h
/*默许值如下:*/
#undef VSF_BUILD_TCPWRAPPERS  /*是否支撑TCP WRAPPERS*/
#define VSF_BUILD_PAM  /*是否支撑自定义虚拟用户登录*/
#undef VSF_BUILD_SSL  /*是否支撑SSL传输*/
/*支撑则将对应项设为define,不然设为undef*/
怎么查看vsftpd是否支撑PAM认证办法?
查看编译的vsftpd二进制文件是否加载了pam
ldd vsftpd
如下:
        linux-gate.so.1 =>  (0x00393000)
        libwrap.so.0 => /lib/libwrap.so.0 (0x00969000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00af7000)
        libpam.so.0 => /lib/libpam.so.0 (0x00b9d000)
        libdl.so.2 => /lib/libdl.so.2 (0x00947000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x00106000)
        libutil.so.1 => /lib/libutil.so.1 (0x041a1000)
        libcap.so.1 => /lib/libcap.so.1 (0x00b12000)
        libc.so.6 => /lib/libc.so.6 (0x007ec000)
        libaudit.so.0 => /lib/libaudit.so.0 (0x00b82000)
        /lib/ld-linux.so.2 (0x007c8000)
看到libpam.so.0 => /lib/libpam.so.0 (0x00fc4000)表明已成功加载pam认证模块

五、装备文件操作阐明
1.树立虚拟用户对应的体系实在用户
useradd -d /data/www -s /sbin/nologin wwwftp
/data/www是用户的默许home目录;不想让用户在本地登陆,那么你需求把他的登陆SHELL设置成/sbin/nologin
useradd -d /home/vftpsite -s /sbin/nologin vftpuser
2.树立db数据库,一同只要root用户才干读写
#vim /etc/vsftpd/vftpuser.txt
jimmyli.blog.51cto.com
123456
user1
password1
格局为榜首行为用户名名,第二行为暗码,然后类推
树立db数据库,一同只要root用户才干读写
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
3.装备pam文件
(32位体系)
vim /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
vim /etc/pam.d/vsftpd.vu (64位体系) auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
cat /etc/pam.d/vsftpd
留意:上面的/etc/vsftpd/vsftpd_login 与 树立的 /etc/vsftpd/vsftpd_login.db 是对应联系。 4.默许的装备文件方位
vim /etc/vsftpd.conf
  六、简略装备实例:
/etc/vsftpd.conf
=
local_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu guest_enable=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pasv_min_port=5000
pasv_max_port=6000
=touch user1 user2
vim /etc/vsftpd/vsftpd_user_conf/user1
guest_username=wwwftp
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/www/user1
=
vim /etc/vsftpd/vsftpd_user_conf/user2
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/vftpsite/jimmyli.blog.51cto.com
=
中止vsftpd进程
pkill vsftpd
发动vsftp
/usr/local/sbin/vsftpd &
  七、参阅实例
vsftpd.conf 装备参阅阐明:

# 以独立的FTP效劳运转
listen=yes
# 答应本地用户登录
local_enable=YES
# 本地用户的写权限
write_enable=YES
# 运用FTP的本地文件权限,默许为077
# 一般设置为022
local_umask=022
# 切换目录时
# 是否显示目录下.message的内容
dirmessage_enable=YES
# 激活上传/下载的日志
xferlog_enable=YES
# 启用FTP数据端口的数据衔接
connect_from_port_20=YES
pam_service_name=vsftpd
tcp_wrappers=YES
# 用userlist来约束用户拜访
#userlist_enable=yes
one_process_model=NO #无阐明 # 答应匿名登录
anonymous_enable=NO
guest_enable=YES #发动vsftpd的虚拟用户功用
guest_username=wwwftp
user_config_dir=/etc/vsftpd_user_config
user_sub_token=$USER

八、常见过错及解决办法
登录过错1:
500 OOPS: cannot locate user entry:wwwftp
当guest_username=wwwftp装备时,体系没有树立wwwftp体系账号导致过错。
解决办法:创立账号
登录过错2:
500 OOPS: cannot change directory:/data/www
当装备文件设置了local_root=/data/www/,但体系没有树立文件夹
解决办法:创立目录
登录过错3:
装备文件敞开虚拟用户登陆,但用户无法登陆:
[右] USER adminftp
[右] 331 Please specify the password.
[右] PASS (躲藏)
[右] 530 Login incorrect.
[右] 衔接失利
解决办法:查看VSFTP编译装置的时分,时分支撑pam,有无加载了pam。
登录过错4:
独自用户未指定用户home目录时分,默许转到的目录为“/var/ftp/”
解决办法:树立默许目录
请重视连载续篇,欢迎朋友一同沟通,评论。扣扣:柒⑥柒陆叁⑤叁伍。
[End]
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章