配置 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 上操作。
安装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 上操作。
相关文章推荐
- php curl post
- 帝国备份王放到空间以后打开index.php显示空白页,解决办法。
- ATPDraw v5.7 1CD电力电路仿真模拟软件
- ATPDraw v5.7 1CD电力电路仿真模拟软件
- SAE php读取MySQL
- 搭建php环境,更换织梦服务器
- php使用curl提交xml数据
- PHPExcel(1.8.0) 帮助代码
- phpmyadin安装配置
- php中文的解决
- 小心,apc可能导致php-fpm罢工!
- PHP判断一个string 是否是json string
- PHP学习(wampServer+PhpStorm+XDebug)——环境相关配置参考(下)
- 七牛 PHP 文件管理
- PHP学习(wampServer+PhpStorm+XDebug)——环境相关配置参考(上)
- php+mysql分页原理
- php调用另一php页面
- TP YII CI框架对比
- zend studio 12.5.1破解
- PHP 实现的将图片转换为TXT