您的位置:首页 > 编程语言 > PHP开发

配置 FTP 服务

2015-10-19 13:45 561 查看
在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftp, 我喜欢使用pure-ftpd搭建ftp服务器,因为这个软件比vsftp配置起来更加灵活和安全。

安装pure-ftpd

1.下载

# cd /usr/local/src/

# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.42.tar.bz2
2.解压

# tar jxvf pure-ftpd-1.0.42.tar.bz2

3.安装pure-ftpd

# cd pure-ftpd-1.0.42

# ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits --with-tls

然后遇到一个错误

configure: error: OpenSSL headers not found.

没有发现OpenSSL 然后安装就可以了。

# yum install -y openssl-devel

4.然后make

# make

# make install

配置pure-ftpd

1.修改配置文件

pure-ftpd 编译安装很快就完成了,而且极少有出现错误的时候,下面就该配置它了:

# cd configuration-file/

# mkdir /usr/local/pureftpd/etc

# cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf

# cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl

# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

在启动pure-ftpd之前需要先修改配置文件,配置文件为/usr/local/pureftpd/etc/pure-ftpd.conf, 你可以打开看一下,里面内容很多,如果英文好,可以好好研究一番,这里我直接拷贝过去:

ChrootEveryone yes

BrokenClientsCompatibility no

MaxClientsNumber 50

Daemonize yes

MaxClientsPerIP 8

VerboseLog no

DisplayDotFiles yes

AnonymousOnly no

NoAnonymous no

SyslogFacility ftp

DontResolve yes

MaxIdleTime 15

PureDB /usr/local/pureftpd/etc/pureftpd.pdb

LimitRecursion 3136 8

AnonymousCanCreateDirs no

MaxLoad 4

AntiWarez yes

Umask 133:022

MinUID 100

AllowUserFXP no

AllowAnonymousFXP no

ProhibitDotFilesWrite no

ProhibitDotFilesRead no

AutoRename no

AnonymousCantUpload no

PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid

MaxDiskUsage 99

CustomerProof yes

2.启动 pure-ftpd :

# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L3136:8
-m4 -s -U133:022 -u100 -g/usr/local/pureftpd/var/run/pure-ftpd.pid -k99 -Z

如果是启动成功,会显示一行长长的以Running开头的信息,否则那就是错误信息。

如果你想开机启动 ftpd 需要在/etc/rc.local 中加入:
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

启动了 ftpd 查看端口有时是20,有时是21,有个概念是主动连接,被动连接。

3.建立账号
# mkdir /data/ftp
# useradd www

# chown -R www:www /data/ftp/
# /usr/local/pureftpd/bin/pure-pw useradd test1 -uwww -d /data/ftp/
Password:

Enter it again:

其中,-u将虚拟用户test1与系统用户www关联在一起,也就是说使用test1账号登陆ftp后,会以www的身份来读取文件或下载文件。-d 后边的目录为test1账户的家目录,这样可以使test1只能访问其家目录/data/ftp/。
到这里还未完成,还有最关键的一步,就是创建用户信息数据库文件:
# /usr/local/pureftpd/bin/pure-pw mkdb
然后重启:
# killall pure-ftpd

# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

4.测试 pure-ftpd
测试需要使用的工具叫做lftp, 先安装一下它:

# yum install -y lftp

测试输入命令显示出来表示成功,登陆进去输入个 ? 可以查看所有可用命令:
# lftp test1@127.0.0.1

口令:

lftp test1@127.0.0.1:~> ls

drwxr-xr-x 2 505 www 4096 Oct 19 17:07 .

drwxr-xr-x 2 505 www 4096 Oct 19 17:07 ..

-rw-r--r-- 1 0 0 36 Oct 19 17:07 1.txt

还可以上传和下载文件put、get :
lftp test1@127.0.0.1:~> put 1.sql

477819 bytes transferred

还可以远程的连接:
[root@cent55 ~]# lftp test1@192.168.137.11

口令:

lftp test1@192.168.137.11:~> ls

drwxr-xr-x 2 505 www 4096 Oct 19 17:10 .

drwxr-xr-x 2 505 www 4096 Oct 19 17:10 ..

-rw-r--r-- 1 505 www 477819 Oct 13 17:46 1.sql

-rw-r--r-- 1 0 0 36 Oct 19 17:07 1.txt

5.FTP的应用
创建 test2 账号
# /usr/local/pureftpd/bin/pure-pw useradd test2 -uwww -d /tmp

显示 FTP 全部账号
# /usr/local/pureftpd/bin/pure-pw list

test1 /data/ftp/./

test2 /tmp/./

删除 test2 账号。
# /usr/local/pureftpd/bin/pure-pw userdel test2

使用 vsftpd 搭建 ftp 服务
vsftpd是系统默认自带的FTP服务软件,比较常用。
1.安装 vsftpd
# yum install -y vsftpd db4-utils

这里安装了两个软件包, 同时也会把依赖的包安装上。其中 db4-utils
包用来生成密码库文件。
2.建立账号
vsftpd 默认可以支持使用系统账号体系登录,但那样不安全,建议使用虚拟账号体系登录。
首先建立与虚拟账号相关联的账号系统:
# useradd virftp -s /sbin/nologin

接着建立与虚拟账户相关的文件:
# vim /etc/vsftpd/vsftpd_login

test1

410520

test2

123456

保存,因为你设置的账号是明文的,不安全,为了提升安全,建议更改文件权限:
# chmod 600 /etc/vsftpd/vsftpd_login

vsftpd使用的密码文件不是明文的,需要生成对应的库文件,这一步必须要做。
# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

最后建立与虚拟账号相关的目录以及配置文件:
# mkdir /etc/vsftpd/vsftpd_user_conf

# cd /etc/vsftpd/vsftpd_user_conf

3.创建和用户对应的配置文件
用户的配置文件是单独存在的,每个用户都有一个自己的配置文件。
# vim test1

local_root=/home/virftp/test1

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=50000

其中,local_root为test1的账号家目录,anonymous_enable用来限制是否允许匿名账号登录(若为NO表示不允许匿名账号登录),write_enable=YES
表示可写,local_umask指定umask值,anon_upload_enable表示是否允许匿名账号上传文件,anon_mkdir_write_enable表示是否允许匿名账号可写。以上为关键配置参数,其他参数暂时不用关心。
然后创建test1目录:
# mkdir /home/virftp/test1

# chown -R virftp:virftp /home/virftp/

# vim /etc/pam.d/vsftpd

然后在 #%PAM-1.0
加入两行。
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

这里的Linux系统为32位,所以库文件路径为/lib/security/pam_userab.so
(64位系统的库文件路径为 /lib64/security/pam_userdb.so)
4.修改全局配置文件 /etc/vsftpd/vsftpd.conf
修改用户的配置文件后还不可以用,还需要修改vsftpd的一些全局配置文件。
首先编辑 vsftpd.conf 文件:
# vim /etc/vsftpd/vsftpd.conf

修改一下内容:

anonymous_enable=YES 改为 anonymous_enable=NO
#anon_upload_enable=YES 改为 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

然后在文件末尾增加:

chroot_local_user=YES
guest_enable=YES

guest_username=virftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

保存,其中
guest_username=virftp 是不可少的。

然后启动 vsftpd 服务,执行如下命令:
# /etc/init.d/vsftpd start

测试:
# cd /home/virftp/test1/

# vim 1.txt
//写入以下内容

/home/vsftpd/test1/1.txt

111111111

222222222

333333333

# lftp test1@127.0.0.1

口令:

lftp test1@127.0.0.1:~> ls

-rw-r--r-- 1 0 0 55 Oct 20 07:20 1.txt

如果你在 /etc/vsftpd/vsftpd_login 中又增加了一个账户和密码:

还需要用 db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db 命令

还要在 /etc/vsftpd/vsftpd_user_conf 创建用户的配置文件。

还要在 /home/virftp/ 下创建那个用户的目录,再改用户和组权限。

注:本操作在CentOS 6.3 上操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: