转自:http://www.winzp.org/blog/archives/188
近日热心Web开发,于是在本机安装了64位的ubuntu虚拟机,在copy文件时总是遇到权限问题,于是就想到搭建FTP服务器来解决这个问题。
Linux下的FTP服务器软件很多,PureFTPd是基于MySQL进行用户权限管理的,不必使用系统的用户,所以比较简洁方便,添加用户只需要在数据库中增加一行记录便可。
安装步骤如下:
1、打开终端,使用root账户登录
1
|
su
;
|
2、安装MySQL,PhpMyAdmin和Apache,如果你已经安装过了可以跳过这步。
1
|
apt-get
install
mysql-server mysql-client phpmyadmin apache2
|
3、开始安装PureFTPd
1
|
apt-get
install
pure-ftpd-mysql
|
4、创建ftpgroup和ftpuser
1
2
|
groupadd -g 2001 ftpgroup
useradd
-u 2001 -s
/bin/false
-d
/bin/null
-c
"pureftpd user"
-g ftpgroup ftpuser
|
5、使用如下命令登录mysql
1
|
mysql -u root -p
|
在问及密码时输入安装过程你输入的密码。
6、创建pureftpd数据库和pureftpd用户,脚本如下:
1
2
3
4
|
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO
'pureftpd'
@
'localhost'
IDENTIFIED BY
'ftpdpass'
;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO
'pureftpd'
@
'localhost.localdomain'
IDENTIFIED BY
'ftpdpass'
;
FLUSH PRIVILEGES;
|
7、切换到刚创建的pureftpd数据库:
1
|
USE pureftpd;
|
8、创建ftpd表
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
CREATE TABLE ftpd (
User varchar(16) NOT NULL DEFAULT
''
,
STATUS enum(
'0'
,
'1'
) NOT NULL DEFAULT
'0'
,
Password varchar(64) NOT NULL DEFAULT
''
,
Uid varchar(11) NOT NULL DEFAULT
'-1'
,
Gid varchar(11) NOT NULL DEFAULT
'-1'
,
Dir varchar(128) NOT NULL DEFAULT
''
,
ULBandwidth smallint(5) NOT NULL DEFAULT
'0'
,
DLBandwidth smallint(5) NOT NULL DEFAULT
'0'
,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL DEFAULT
'*'
,
QuotaSize smallint(5) NOT NULL DEFAULT
'0'
,
QuotaFiles int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
|
9、退出mysql
1
|
quit;
|
10、配置PureFTPd。首先在pureftpd文件夹下创建mysql.conf文件,如下:
1
2
3
|
cp
/etc/pure-ftpd/db/mysql
.conf
/etc/pure-ftpd/db/mysql
.conf_orig
cat
/dev/null
>
/etc/pure-ftpd/db/mysql
.conf
vim
/etc/pure-ftpd/db/mysql
.conf
|
11、打开/etc/pure-ftpd/db/mysql.conf,文件内容如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
MYSQLSocket
/var/run/mysqld/mysqld
.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=
"\L"
AND status=
"1"
AND (ipaccess =
"*"
OR ipaccess LIKE
"\R"
)
|
请确保该文件中的用户名和密码正确。
12、创建/etc/pure-ftpd/conf/ChrootEveryone文件
1
|
echo
"yes"
>
/etc/pure-ftpd/conf/ChrootEveryone
|
13、创建 /etc/pure-ftpd/conf/CreateHomeDir文件
1
|
echo
"yes"
>
/etc/pure-ftpd/conf/CreateHomeDir
|
14、创建 /etc/pure-ftpd/conf/DontResolve文件
1
|
echo
"yes"
>
/etc/pure-ftpd/conf/DontResolve
|
15、重启PureFTPd
1
|
/etc/init
.d
/pure-ftpd-mysql
restart
|
16、打开PhpMyAdmin,在浏览器中输入地址:http://localhost/phpmyadmin
17、在ftpd表中添加ftp用户,如下:
1
|
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (
'ivan'
,
'1'
, MD5(
'ivan123'
),
'2001'
,
'2001'
,
'/home/ivan'
,
'100'
,
'100'
,
''
,
'*'
,
'50'
,
'0'
);
|
18、到此即可开始使用搭建好的FTP服务器了。
如果,遇到无法启动FTP服务等问题,请检查每一步是否都正确执行,如按步骤执行FTP服务将可以正常使用。