`
kingsz1
  • 浏览: 156981 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CentOS 5.5 安装记录 - (6) vsftpd 及虚拟用户

阅读更多
一般的配置小文件可以用 psftp 来上传,而虚拟主机的文件数量多而且大,用 psftp 显然很不方便。这里我们来配置 vsftp 作为 FTP 服务器,并设置为虚拟用户登录,还设定某用户对于特定的虚拟主机目录,来管理虚拟主机的内容。

参考资料:
http://centosforserver.blogspot.com/2010/02/virtual-hosting-with-vsftpd-and-mysql.html

http://blog.csdn.net/wl3115/archive/2010/06/19/5680059.aspx

http://www.howtoforge.com/virtual-hosting-with-vsftpd-and-mysql-on-debian-lenny

http://www.noobgrinder.com/index.php?option=com_content&view=article&id=2:provisioning-a-lamp-server-appliance-for-virtual-hosting&catid=1:security&Itemid=9


1. 安装 vsfptd 和 pam-mysql

yum install vsftpd pam_mysql

要说明的是 pam-mysql 是从 EPEL repo 取得。如果还未配置 epel repo,则需先安装和配置 epel repo.

2. 建立MySQL数据库和表 管理用户和密码

我们使用 phpmyadmin. 在浏览器打开 http://192.168.99.44/phpmyadmin 然后以 root 用户登录。

登录后,在页面的左上方有5个图标,中间的那个就是 Query Window,点这个图标:


一个小窗口就弹出来:


在这个窗口就可以输入(或粘贴) SQL 语句,然后点 GO 来执行这些语句。

(1)建数据库
把下面的SQL语句放到小窗口,然后按 GO:

CREATE DATABASE vsftpd;
GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpdpassword';
FLUSH PRIVILEGES;

这里所建立的数据库名是 vsftpd, 用户名 vsftpd 密码 vsftpdpassword

(2)建虚拟用户表
把下面的SQL语句放到小窗口,然后按 GO:

USE vsftpd;
CREATE TABLE accounts (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
username VARCHAR(30) NOT NULL ,
pass VARCHAR(50) NOT NULL ,
UNIQUE (username)
) ENGINE = MYISAM ;

这里所建立的表名是 accounts, 有2列:username 和 pass

(3)插入一个虚拟用户
把下面的SQL语句放到小窗口,然后按 GO:

USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('user1', md5('abc123'));

这里所插入的虚拟用户名是 user1, 密码 abc123


3. 配置 vsftpd

(1)建立一个系统用户用于管理 vsftpd

useradd -G users -s /sbin/nologin -d /home/vsftpd  vsftpd

这里 添加一个用户vsftpd 属于 users 组,其指定目录是 /home/vsftpd
以后所添加的虚拟用户其用户目录缺省就存放于 /home/vsftpd 之下。

(2)修改 配置文件 vsftpd.conf
先备份:
cp -v /etc/vsftpd/vsftpd.conf   /etc/vsftpd/vsftpd.conf-orig

然后删除它:
rm /etc/vsftpd/vsftpd.conf


在 Win XP 机器用 Notapad++,复制粘贴一下内容:
# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES

# if you want to LOG vsftpd activity then uncomment this log_ftp_protocol
# log_ftp_protocol=YES

connect_from_port_20=YES

# uncomment xferlog_file and xferlog_std_format if you DIDN'T use the line above
# with log_ftp_protocol - it must be excluding each other
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# xferlog_std_format Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
# xferlog_std_format=YES

#
# You may change the default value for timing out an idle session (in seconds).
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection (in seconds).
#data_connection_timeout=120
#
# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd

chroot_local_user=YES

listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf


记得点击 EOL Conversion 选 Unix Format:



然后保存文件为 vsftpd.conf 放在桌面上。
打开 psftp 把 vsftpd.conf 上传到 /etc/vsftpd



(3)建立单个用户配置目录 user_config_dir

mkdir /etc/vsftpd/vsftpd_user_conf

以后某个虚拟用户如果不采用缺省配置的话,其个别配置文件仅存放于这个目录。配置文件的文件名 与 虚拟用户的用户名 一样。

(4)配置 PAM-MySQL

PAM-MySQL 用于从 MySQL 取得虚拟用户的用户名和密码。

先备份:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd-orig

删除配置文件:
rm /etc/pam.d/vsftpd

用 Notepad++ 建立一个新文件,贴上 一下内容:
#%PAM-1.0
session     optional     pam_keyinit.so     force revoke
auth required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3
account required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3


这里 passwd=vsftpdpassword 是建立数据库所设的密码,需要安装实际的密码来修改。

记得点击 Notepad++ 菜单 Edit -> EOL Conversion 选 Unix Format. 保存类型 Save as type 是 All file *.* (没有扩展名), 文件名为 vsftpd,存于桌面即可。

用 psftp 把文件 vsftpd 上传到 /etc/pam.d



(5)建立虚拟用户目录

# mkdir /home/vsftpd/user1
# chown vsftpd:users /home/vsftpd/user1


虚拟用户的目录放于 /home/vsftpd 之下,目录名与用户名一致。

(6)启用 vsftpd

基本配置已经完成。现在设定 vsftpd 在系统启动时启用:
# chkconfig --levels 235 vsftpd on


启用:
# /etc/init.d/vsftpd start


(7)测试

在 Win XP 机器,打开 Fizilla FTP Client, 输入 Centos 机器地址 192.168.99.44, 用户名 user1 密码 abc123, 点连接,即可登陆 vsftpd, 可上传文件和下载文件。

4. 一般使用

完成 vsftpd 配置后,以后添加虚拟用户,需要做2步工作:

(1)在数据库 添加一个记录:用户名和密码,推荐在 phpmyadmin 下操作,也可以直接在命令行操作。

例如, 添加用户 userX 密码为 xyz123 :

USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('userX', md5('xyz123'));


(2)在 /home/vsftpd 建立一个虚拟用户目录:
mkdir /home/vsftpd/userX
chown vsftpd:users /home/vsftpd/userX



5. 虚拟用户管理虚拟主机目录

虚拟主机的目录一般会使用域名做目录名,或IP地址做目录名。我们这里尝试建立一个vsftpd 虚拟用户 对应 特定的 虚拟主机目录 (即 虚拟用户 的用户目录不再 /home/vsftpd 之下)。

需求:
(i) 虚拟用户 用户名 user2 密码 abc123
(ii) 虚拟主机的目录 /home/virtwww/192.168.99.7

步骤:

(1)在数据库添加一行用户记录:

USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('user2', md5('abc123'));


(2)建立 单用户配置文件

单用户配置文件 (Per User Configuration File) 仅对单个用户有效,文件名与用户名同名,存放于 /etc/vsftpd/vsftpd_user_conf 下。

把一下内容复制粘贴到 Notepad++ 里:

dirlist_enable=YES
download_enable=YES
# full path to the directory where 'user2' will have access, change to your needs
local_root=/home/virtwww/192.168.99.7
write_enable=YES


这里 假定虚拟用户 user2 登陆后定位于 /home/virtwww/192.168.99.7 目录。

记得点击 Notepad++ 菜单 Edit -> EOL Conversion 选 Unix Format. 保存类型 Save as type 是 All file *.* (没有扩展名), 文件名为 user2,存于桌面即可。

用 psftp 把 user2 文件上传到 /etc/vsftpd/vsftpd_user_conf



(3)设定虚拟主机目录和访问权限

我们在前面已经建立了 /home/virtwww/192.168.99.7 目录了。如果没有,就先建立这个目录:

# mkdir /home/virtwww/192.168.99.7


设定访问权限:

# chmod 775 /home/virtwww/192.168.99.7
# chown vsftpd:users /home/virtwww/192.168.99.7


全部设置完成。现在可以用 FileZilla FTP Client 登陆, 用户名 user2 密码 abc123, 登陆后就是 /home/virtwww/192.168.99.7 目录。往这个虚拟主机目录上传网页文件和图片,然后在浏览器就可以访问这些页面和图片。


[附注:]

(1)FTP服务器虚拟用户配置的资料很多,一般以 proftpd, vsftpd 和 pureftpd 为主。我安装网上的 vsftpd 教程,一次就安装成功。

其实 我试过按照以下的资料设置 proftpd :
http://www.campworld.net/thewiki/pmwiki.php/LinuxServersCentOS/Cent5VirtWebServer

安装过程挺顺利的,完成后可登录,可自动建立虚拟用户目录,但去不能上传文件,甚至不能列表。

(2)其他的 vsftpd 配置资料,各有特色,值得参考:

http://ubuntuforums.org/showthread.php?t=518293

http://www.cyberciti.biz/tips/centos-redhat-vsftpd-ftp-with-virtual-users.html

http://howto.gumph.org/content/setup-virtual-users-and-directories-in-vsftpd/


(3)用脚本建立虚拟用户目录的资料:

http://feixiang123.blog.51cto.com/285543/75839

http://www.productionmonkeys.net/guides/ftp-server/vsftpd

http://ft23.pmenier.net/docext/vsftpd/vsftpd.txt


http://www.debiantutorials.com/installing-vsftpd-with-mysql-backend/

Little Script to create user automatic….

#!/usr/bin/perl
# Script to Add New Virtual FTP Users & Create a FTP Dir
# # Version 0.1 – Thomas Stewart Buchanan – 15/02/2010
use strict;
use warnings;
use DBI;

# MYSQL VARIABLES
my $database = “DBI:mysql:vsftpd”;
my $tablename = “accounts”;
my $user = “vsftpd”;
my $pw = “ftpuserpass”;

# GATHER USER DETAILS
print “Enter the name of the new FTP user:\n”;
chomp(my $inUser = );
print “Please now enter a password for user $inUser:\n”;
chomp(my $inPw = );
print “Thankyou \n”;

# PERL MYSQL CONNECT
my $dbh = DBI->connect($database, $user, $pw) || die “Could not connect to database: $DBI::errstr”;

# MYSQL QUERY TO INSERT User
my $queryInsertUser = $dbh->do(”INSERT INTO $tablename (username, pass) VALUES(’$inUser’, PASSWORD(’$inPw’))”);

# DISCONNECTS FROM DATABASE
$dbh->disconnect || warn “Disconnection failed: $DBI::errstr”;

# CREATES USER DIR
mkdir (”/home/vsftpd/$inUser”) || print $!;

# Sets ownership of the ftp dirs
my $chown = system(”chown -R vsftpd:nogroup /home/vsftpd”);

exit;


先收录了,以后慢慢学习。

:-
  • 大小: 22 KB
  • 大小: 38.4 KB
  • 大小: 25.2 KB
  • 大小: 1.8 KB
  • 大小: 1.8 KB
  • 大小: 2.4 KB
分享到:
评论

相关推荐

    CentOS-5.5-i386-bin-DVD

    在使用"CentOS-5.5-i386-bin-DVD.torrent"这个种子文件时,用户可以利用BitTorrent客户端来下载完整的CentOS 5.5安装DVD镜像。这个镜像包含了一整套操作系统所需的软件包和工具,包括系统内核、基本实用程序、开发...

    centos 5.5+Vsftpd-2.3.4

    centos 5.5+Vsftpd-2.3.4安装详细过程 本文将详细介绍CentOS 5.5下安装Vsftpd 2.3.4的步骤,包括下载最新版本、安装前准备、解压安装、编译vsftpd、配置vsftpd等。 一、下载最新版本 Vsftpd是目前最流行的FTP...

    CentOS 5.5安装全过程

    **CentOS 5.5安装全过程** CentOS是一款基于Linux的开源操作系统,它与Red Hat Enterprise Linux (RHEL)有着极高的兼容性。CentOS 5.5是该系列的一个重要版本,发布于2010年,为用户提供了一个稳定且可靠的服务器...

    MariaDB-5.5.68的RPM包

    sudo yum install MariaDB-5.5.68-centos6-i686-server.rpm MariaDB-5.5.68-centos6-i686-client.rpm ... ``` 安装完成后,需要配置MariaDB服务,包括设置root用户的密码、启动服务、并确保在系统启动时自动启动。...

    centos5.5安装apache-2.2.22并配置反向代理

    这个软件就是通过apache反向代理方式实现效果,项目使用tomcat发布,apache代理服务至tomcat,这里tomcat的配置就列出来了

    CentOS5.5下jdk-1_5_0_08的安装及配置

    ### CentOS 5.5 下 JDK-1_5_0_08 的安装与配置 #### 知识点一:卸载原有 Java 环境 在安装新的 Java 环境之前,通常需要先检查并卸载系统上已有的 Java 环境,避免版本冲突。以下是具体步骤: 1. **检查已安装的 ...

    Centos5.5下Qt的安装配置

    CentOS 5.5 下 Qt 的安装配置 在 CentOS 5.5 平台下安装 Qt 需要经过多个步骤,每个步骤都需要注意一些重要细节。本文将详细讲解 CentOS 5.5 下 Qt 的安装配置过程。 一、安装软件列表 在开始安装 Qt 之前,需要...

    CentOS-5.5-x86_64-bin-DVD-1of2 ISO镜像

    CentOS-5.5-x86_64-bin-DVD-1of2 ISO 镜像,附件为百度云下载链接

    centos 5.5 32位 下载地址

    具体到“CentOS-5.5-i386-bin-DVD.torrent”这个文件,它是一个使用BitTorrent协议分发的ISO镜像。BitTorrent是一种点对点(P2P)文件分享协议,允许大量用户同时下载和上传数据,从而减轻服务器负担并提高下载速度...

    centos5.5安装mysql5.5

    集合网上资料和自身实际安装整理的centos5.5安装mysql5.5,文档中有5.5和5.6的下载地载,如果安装5.6还需要找一点资料。

    Linux CentOS5.5 web配置

    本文将深入探讨CentOS5.5下的Web配置方法,包括基本配置、路径设置、访问控制、用户认证以及虚拟主机的配置等关键知识点。 #### 二、基础配置 ##### 2.1 配置文件位置 在CentOS5.5中,Apache Web服务器的主要配置...

    centos 6 安装 mantisbt-1.2.8 -- centos 7 安装 mantisbt-2.12.0.zip

    内容: 1、centos 6 安装 mantisbt-1.2.8 ; 2、 centos 7 安装 mantisbt-2.12.0.zip 3、mantisbt-2.12.0.tar.gz包; 4、MySQL-5.5.59-1.el7.x86_64.rpm-bundle.tar包

    centos5.5安装oracle10g

    centos5.5安装oracle10g: 自己写的文档,学习用的,供大家参考

    CentOS 5.5 FTP设置

    通过上述步骤,我们已经在CentOS 5.5上成功安装并配置了vsftpd FTP服务。需要注意的是,实际部署过程中还需要根据具体需求进一步调整配置文件中的各项参数,以确保服务的安全性和稳定性。此外,考虑到CentOS 5.5已...

    CentOS5.5命令行安装64位

    ### CentOS5.5命令行安装Oracle 10g详尽指南 #### 一、环境准备与验证 在开始安装Oracle 10g之前,确保满足以下条件: 1. **操作系统**:CentOS 5.5(64位) 2. **内存**:Oracle至少需要512MB的RAM,推荐更多 3....

    centos5.5 32 64位下载地址

    对于需要运行CentOS 5.5但不希望在物理机上安装的情况,可以利用虚拟化技术,如VMware、VirtualBox等,在现代操作系统上创建一个虚拟环境来运行旧版CentOS。 知识点6:兼容性问题 使用旧版CentOS可能遇到的挑战包括...

    centos7.6离线安装docker-ce-19.03、nvidia-docker2

    离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...

    Centos5.5下安装LAMP完整版

    本文将深入解析如何在CentOS 5.5环境下安装LAMP堆栈,以及相关组件的配置细节。 ### 一、系统环境准备 首先,确保你的系统是CentOS 5.5,这是一个基于Linux内核的开源操作系统。此版本发布于2010年,虽然现在已经...

    centOS 5.5 虚拟机 安装 教程 word 版

    centos 5.5 虚拟机安装截图教程,可能安装过程中会因虚拟机版本和centos的版本区别有所不同,但是基本思路应该没变,希望对大家有用,我没资源分了,大家支持下让人赚点分吧,谢谢各位了

Global site tag (gtag.js) - Google Analytics