本文主要讲解pure-ftpd服务器的搭建,以及虚拟用户的添加与使用【虚拟用户没有涉及到MYSQL,如需MYSQL的虚拟用户,请掠过此文】
1、找到最新版本的PureFTPd
去网站http://download.pureftpd.org/pub/pure-ftpd/releases/我们找到最新版本的的下载链接是http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.35.tar.gz
2、下载并安装
# cd /usr/local/src
# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.35.tar.gz
# tar -zxvf pure-ftpd-1.0.35.tar.gz
# cd pure-ftpd-1.0.35
# ./configure --with-puredb --with-everything --with-rfc2640
# make
# make check
# make install
#注:
--with-puredb是启用虚拟用户数据库
--prefix是安装的目标目录
--with-eyerything是安装所有功能
--with-rfc2640,此参数UTF-8,gb2312等异构系统的语言集转换
另外如果需要与mysql连接,修改提示语言等还需要在此指定,例如:
--with-mysql=/opt/mysql
--with-language=simplified-chinese
本文不涉及。
如需了解configure的更多选项请看http://download.pureftpd.org/pub/pure-ftpd/doc/README
软件已经被安装到 /usr/local/sbin/pure-ftpd,我们只需执行以下代码即可启动PureFTPd。
# /usr/local/sbin/pure-ftpd &
#注:此处执行完命令有可能报一个错误: Unable to start a standaloneserver: Addressalready in use [大概意思就是端口被占用了]
解决方案:
切换到root权限,用命令:fuser -n tcp 21 查看,然后kill [pid]掉21端口的进程,继续执行 /usr/local/sbin/pure-ftpd & 此命令,如果依然不行,删除你之前安装过的ftp服务器,重启系统重复以上操作。
3、开机启动PureFTPd
# cp contrib/redhat.init /etc/init.d/pure-ftpd
# chmod 755 /etc/init.d/pure-ftpd
# chkconfig --add pure-ftpd
# chkconfig --level 3 pure-ftpd on
4、配置文件
# cp configuration-file/pure-ftpd.conf /etc
# cp configuration-file/pure-config.pl /usr/local/sbin/pure-config.pl
# chmod 744 /etc/pure-ftpd.conf
# chmod 755 /usr/local/sbin/pure-config.pl
编辑配置文件:[此步可以略过]
# vi /etc/pure-ftpd.conf
设置成以下值:
UnixAuthentication yes
#MinUID 100
UnixAuthentication yes表示系统用户可以登录FTP。
MinUID 100表示用户的ID大于100才能登录,我们注释掉它,任何的用户ID都能登录了。
5、启动和停止PureFTPd
# service pure-ftpd stop
# service pure-ftpd start
# service pure-ftpd restart
6、创建一个ftpgroup组
# groupadd ftpgroup
7、创建一个ftptestuser用户,并把用户添加到ftpgroup组
# useradd ftptestuser -g ftpgroup -s /sbin/nologin
8、为ftptestuser用户设置密码
# passwd ftptestuser
重复输入两次即可
9、创建pure-ftpd虚拟用户
# alias pure-pw=/usr/local/bin/pure-pw
# pure-pw useradd username1 -u 503 -g 503 -d /var/ftpdir
#注:
username1:ftp虚拟用户的用户名
-u 503:创建出来的虚拟用户属于哪个主用户[涉及到权限问题 属主]
-g 503:虚拟用户属于哪一个组[涉及到权限问题 属组]
至于上面的503是怎么来的可以用下面的命令查看
# cat /etc/passwd
之前添加的用户在最后一行,如我的:
ftptestuser:x:503:503::/home/ftptestuser:/sbin/nologin
前面的503意思就是说ftptestuser这个用户的id,后面的503就是此用户所属组的id,此处的id换成你们自己的就行了,
上面的命令运行完毕之后按了回车连续输入两次密码即可{也就是ftp密码}然后继续运行下面的命令
# pure-pw mkdb
# 注:
添加完用户一定要运行pure-pw mkdb命令,意思就是说把新添加的用户添加到数据库文件,然后可以使用下面的命令看下用户是否真的添加成功了
# pure-pw list
显示结果如下:
username1 /var/ftpdir/./
用户名 用户主目录
10、修改主目录权限
首先确认/var/ftpdir目录是否存在,不存在的话使用下面的命令创建
# mkdir /var/ftpdir
接下来修改目录的权限
# chown -R ftptestuser:ftpgroup /var/ftpdir
让ftpdir目录的属主权限变成ftptestuser的,组权限改成ftpgroup组,然后看下是否是正确修改了 ls -l /var 如果正确修改那应该就是下面显示的结果
drwxr-xr-x 2 ftptestuser ftpgroup 4096 2月 22 02:44 ftpdir
之前没修改前应该是 root root
到这就大功告成了,打开你的ftp客户端进行连接测试下看看是否成功了呢~
ip的话你应该知道吧? 不知道的话ifconfig 自己看下
用户名就是之前创建的那个虚拟用户username1
密码就是你自己输入的啦....
登录上去之后自己上传一些文件看看 是否正常,如果之前配置的都正常,在上传上面出现错误的话那就是你的ftpdir目录权限设置有问题了。
下面是我上传的一些东西,可以用命令自己看下权限什么的都对不对,主要的就是权限问题了。
[root@localhost pure-ftpd-1.0.35]# ls -l /var/ftpdir
总用量 4
drwxr-xr-x 2 ftptestuser ftpgroup 4096 2月 22 02:51 Downloads
[root@localhost pure-ftpd-1.0.35]# ls -l /var/ftpdir/Downloads
总用量 13464
-rw-r--r-- 1 ftptestuser ftpgroup 995808 2月 22 02:51 aliedit.exe
-rw-r--r-- 1 ftptestuser ftpgroup 76622 2月 22 02:51 cknebhggccemgcnbidipinkifmmegdel.crx
-rw-r--r-- 1 ftptestuser ftpgroup 9078981 2月 22 02:51 clbhjjdhmgeibgdccjfoliooccomjcab.crx
-rw-r--r-- 1 ftptestuser ftpgroup 1797989 2月 22 02:51 jy_www_wisecleaner_com (1).sql.gz
-rw-r--r-- 1 ftptestuser ftpgroup 1797989 2月 22 02:51 jy_www_wisecleaner_com.sql.gz
-rw-r--r-- 1 ftptestuser ftpgroup 25923 2月 22 02:51 lpkdnfkjhdkcpimadpdcgapffceacjem.crx
-rw-r--r-- 1 ftptestuser ftpgroup 1852 2月 22 02:53 X_GFWList.bak
扩展阅读:
如果在搭建的时候遇到这样的报错信息: 421 Unknown authentication method: puredb:/etc/pureftpd.pdb
一开始我自己搭建的时候也遇到了,然后在国外网站找到的答案,解决方案如下:
Do below. #做以下事情
wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz
tar -zxf pure-ftpd-1.0.21.tar.gz
./configure --with-puredb --with-ftpwho
make check
make
make install
Now make two files. #看看下面两个文件是否都存在不存在的话自己创建下 touch命令创建即可
/etc/pureftpd.pdb
/etc/pureftpd.passwd
Then execute below. #然后执行下面的命令
/usr/local/bin/pure-pw mkdb
/usr/local/sbin/pure-ftpd -A -B -j -lpuredb:/etc/pureftpd.pdb &
You can add virtual users like this: #然后你可以像这样子添加虚拟用户(就是下面的命令)
pure-pw useradd user -u username -d /home/username -m
具体连接:http://www.webhostingtalk.com/archive/index.php/t-686333.html 不明白的可以去看下。
另外这篇文章也很不错,写的很详细,有兴趣的可以去看下:http://dongfengyu.bokee.com/5781058.html