设为首页 收藏本站
查看: 683|回复: 0

[经验分享] CentOS 5.5 安装记录

[复制链接]

尚未签到

发表于 2016-5-12 09:52:06 | 显示全部楼层 |阅读模式
一般的配置小文件可以用 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,点这个图标:
DSC0000.png
一个小窗口就弹出来:
DSC0001.png
在这个窗口就可以输入(或粘贴) 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:
DSC0002.png
然后保存文件为 vsftpd.conf 放在桌面上。
打开 psftp 把 vsftpd.conf 上传到 /etc/vsftpd
DSC0003.png
(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
DSC0004.png
(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
DSC0005.png
(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.iyunv.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;


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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-215943-1-1.html 上篇帖子: CentOS+Nginx+PHP+Mysql+安全指南全环境搭建笔记 下篇帖子: 基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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