1. 下载
从ftp://vsftpd.beasts.org/users/cevans/
下载。
2. 编译和安装
进入vsftpd-2.3.2,编译
[forrest@host vsftpd-2.3.2]$ make
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
/lib/libpam.so.0: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
google了一下,是因为上面的vsf_findlibs.sh脚本是按照32位系统来寻找lib包的,所以路径可能错误。需要手工修正。
已解决。
I also hit this - the problem is that the lib-finding script vsf_findlibs.sh returns e.g. /lib/libpam.so.0; however if you're on a x86_64 machine, for example, you need /lib64/libpam.so.0. Fixing this up sorted things out for me.
奇怪的是64位系统上居然有两个lib,而且都有内容:
[forrest@host ~]$ ll / | grep lib
drwxr-xr-x 11 root root 4096 Sep 2 04:06 lib
drwxr-xr-x 7 root root 4096 Sep 2 04:07 lib64
[forrest@host ~]$ ll /lib64/ | grep libpam
lrwxrwxrwx 1 root root 17 Mar 8 2010 libpamc.so.0 -> libpamc.so.0.81.0
-rwxr-xr-x 1 root root 11264 Jun 18 2009 libpamc.so.0.81.0
lrwxrwxrwx 1 root root 21 Mar 8 2010 libpam_misc.so.0 -> libpam_misc.so.0.81.2
-rwxr-xr-x 1 root root 13456 Jun 18 2009 libpam_misc.so.0.81.2
lrwxrwxrwx 1 root root 16 Mar 8 2010 libpam.so.0 -> libpam.so.0.81.5
-rwxr-xr-x 1 root root 46800 Jun 18 2009 libpam.so.0.81.5
[forrest@host ~]$ ll /lib/ | grep libpam
lrwxrwxrwx 1 root root 17 Mar 8 2010 libpamc.so.0 -> libpamc.so.0.81.0
-rwxr-xr-x 1 root root 9868 Jun 18 2009 libpamc.so.0.81.0
lrwxrwxrwx 1 root root 21 Mar 8 2010 libpam_misc.so.0 -> libpam_misc.so.0.81.2
-rwxr-xr-x 1 root root 8588 Jun 18 2009 libpam_misc.so.0.81.2
lrwxrwxrwx 1 root root 16 Mar 8 2010 libpam.so.0 -> libpam.so.0.81.5
-rwxr-xr-x 1 root root 43020 Jun 18 2009 libpam.so.0.81.5
[forrest@host usr]$ cd /usr
[forrest@host usr]$ ll | grep lib
drwxr-xr-x 83 root root 69632 Sep 2 04:07 lib
drwxr-xr-x 92 root root 69632 Sep 2 04:08 lib64
drwxr-xr-x 11 root root 4096 Sep 7 20:21 libexec
[forrest@host usr]$
Anyway,修改vi vsf_findlibs.sh,将这一行:locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";修改为
locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
直接跑这个脚本验证一下是不是找对了:
[forrest@host vsftpd-2.3.2]$ ./vsf_findlibs.sh
/lib64/libpam.so.0
-lpam
-ldl
-lnsl
-lresolv
-lutil
/lib/libcap.so.1
再次编译:
[forrest@host vsftpd-2.3.2]$ make
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
/lib/libcap.so.1: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
[forrest@host vsftpd-2.3.2]$
类似的问题,如上解决。然后再次编译,done!
[forrest@host vsftpd-2.3.2]$ make
[forrest@host vsftpd-2.3.2]$ sudo make install
if [ -x /usr/local/sbin ]; then \
install -m 755 vsftpd /usr/local/sbin/vsftpd; \
else \
install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then \
install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
elif [ -x /usr/share/man ]; then \
install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
else \
install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then \
install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
[forrest@host vsftpd-2.3.2]$ sudo cp vsftpd.conf /etc
 |
在make install后,一定不要忘记手工将vsftpd.conf文件cp到/etc目录下,否则会找不到这个配置文件的,这个是vsftpd一个非常恶心的地方。 否则运行时候会报如下错误:
[forrest@host usr]$ sudo /usr/local/sbin/vsftpd
Password:
500 OOPS: vsftpd: not configured for standalone, must be started from inetd
这是因为是否以standalone形式运行,取决于vsftpd.conf文件中的listen配置。
# When "listen" directive is enabled, vsftpd runs in standalone mode and # listens on IPv4 sockets. This directive cannot be used in conjunction # with the listen_ipv6 directive. listen=YES
同样如果你要支持本地用户登录,那么需要copy源码目录下的vsftpd.pam文件
复制pam验证文件:(多数使用vsftpd的用户在用源代码安装后都会遇到这样的问题:匿名用户可以登录,而本地用户无论怎样设置都无法登录,原因就在于vsftpd采用了PAM验证的方式,需要复制一个验证文件本地用户才能访问。)
[forrest@host vsftpd-2.3.2]$ find . | grep vsftpd.pam
./EXAMPLE/VIRTUAL_USERS/vsftpd.pam
./RedHat/vsftpd.pam
[forrest@host vsftpd-2.3.2]$ sudo cp RedHat/vsftpd.pam /etc/pam.d/ftp
|
cp后再次运行上面命令,报如下错误:
[forrest@host xinetd.d]$ sudo /usr/local/sbin/vsftpd
500 OOPS: could not bind listening IPv4 socket
google搜了一下,这是因为同时指定了xinetd(或者老的inetd)和standalone两种运行方式,端口冲突了。删除/etc/xinetd.d/vsftpd这个文件;然后重新启动xinetd服务器,就可以了。
[forrest@host var]$ netstat -ant | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
[forrest@host xinetd.d]$ cd /etc/xinetd.d/
[forrest@host xinetd.d]$ ls | grep vsftpd
vsftpd
[forrest@host xinetd.d]$ cat vsftpd
# default: on
# description:
# The vsftpd FTP server serves FTP connections. It uses
# normal, unencrypted usernames and passwords for authentication.
# vsftpd is designed to be secure.
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
disable = no
}
[forrest@host xinetd.d]$ sudo rm vsftpd
[forrest@host xinetd.d]$ sudo /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[forrest@host xinetd.d]$ sudo /usr/local/sbin/vsftpd &
## Test
forrest@ubuntu:~$ ftp 10.249.167.161
Connected to 10.249.167.161.
220 (vsFTPd 2.3.2)
Name (10.249.167.161:forrest): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
 |
vsFTPd运行有两种模式,standalone方式和xinetd(inetd)模式。可以在initd.d目录下编写一个启动脚本,这样服务器起来的时候就可以自动运行standalone方式。
|
3. 配置
sftpd服务器的配置文件为/etc/vsftpd.conf。事实上简单的使用vsftp,并不需要什么配置的,目前我们关系的两项就是:
listen=YES
anonymous_enable=YES
其他常用的vsftpd的配置项如下:
1.禁止匿名用户访问。
anonymous_enable=NO
2.允许本地用户登录并允许其上传文件。
local_enable=YES
write_enable=YES
要使上述选项生效,必须复制一个pam验证文件到/etc/pam.d,并改名为ftp。当然也可以改为其他名称,但必须修改pam_service_name的值,默认为ftp。
3.将本地用户锁定在主目录中,不允许切换到上一级目录中。
chroot_local_user=YES
4.禁止某些用户通过ftp登录服务器。
如果设置了local_enable=YES,那么所有的用户包括root也能通过ftp登录服务器,出于安全考虑,需要对某些用户进行限制。
在vsftpd.conf中有三个选项控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
4. 体验一下吧
现在让我们上传一些文件,然后登录看看能不能浏览和下载吧。
Radhat另一个恶心的地方是安装后生成了ftp:ftp用户和用户组,却没有生成ftp用户根目录/var/ftp。因此你需要自己创建一个:
[forrest@host ebooks]$ grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
这个显示ftp用户的根目录为/var/ftp。
[forrest@host ebooks]$ groups ftp
ftp : ftp
[forrest@host ebooks]$ sudo mkdir /var/ftp
进入该目录放几个文件,然后用浏览器登录试一下,应该可以正常浏览和下载:
[forrest@host init.d]$ cd /var/ftp/
[forrest@host ftp]$ ll
total 8
drwxr-xr-x 2 root root 4096 Sep 19 17:39 ebooks
-rw-r--r-- 1 root root 13 Sep 19 17:26 helloworld.txt
 |
500 OOPS: vsftpd: refusing to run with writable anonymous root 如果我们已经把vsftpd服务器启动好了,但登录测试是会出现类似下面的提示: 500 OOPS: vsftpd: refusing to run with writable anonymous root 这表示ftp用户的根目录的权限不对,应该改过才对:
[forrest@host ebooks]$ grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
我们发现ftp用户的根目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的(如果没有ftp用户这个家目录,当然您要自己建一个) 修正这个错误,应该用下面的办法:
[forrest@host ebooks]$ sudo chown root:root /var/ftp
[forrest@host ebooks]$ sudo chmod 755 /var/ftp
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了。没有什么难的。
vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsftpd的文档就明白的了。否则也不能称为最安全的FTP服务器了,对不对?
|
 |
使用发行版提供的软件来安装
[forrest@host ~]$ sudo yum install vsftpd
Password:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
addons | 951 B 00:00
base | 2.1 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
updates/primary_db | 661 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.0.5-16.el5_5.1 set to be updated
updates/filelists_db | 2.1 MB 00:00
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================
Installing:
vsftpd x86_64 2.0.5-16.el5_5.1 updates 139 k
Transaction Summary
============================================================================================================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
forrest@ubuntu:/etc$ sudo apt-get install vsftpd
sudo: unable to resolve host ubuntu
[sudo] password for forrest:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libparted0
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
vsftpd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 148kB of archives.
After this operation, 492kB of additional disk space will be used.
Get:1 http:Fetched 148kB in 0s (222kB/s)
Preconfiguring packages ...
Selecting previously deselected package vsftpd.
(Reading database ... 218180 files and directories currently installed.)
Unpacking vsftpd (from .../vsftpd_2.2.2-3ubuntu7.1_amd64.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Setting up vsftpd (2.2.2-3ubuntu7.1) ...
Adding user ftp to group ftp
vsftpd start/running, process 15835
可以看到非常方便,自动识别出我们的就是64位环境。不需要我们修改编译脚本。不过就是版本稍微老了些。
|
分享到:
相关推荐
### CentOS 7.4 中使用 Vsftpd 搭建 FTP 服务器 #### 一、安装与启动 FTP 服务 1. **查询 vsftpd 是否已预装:** - 使用 `rpm -q vsftpd` 命令来确认系统是否已经安装了 vsftpd。如果该命令返回 “package vsftpd...
### Linux vsftpd搭建步骤详解 #### 一、vsftpd简介 vsftpd (Very Secure FTP Daemon) 是一个在Linux环境下广泛使用的FTP服务器程序。它不仅提供了强大的安全性,还支持虚拟用户,允许管理员通过非系统账户的方式...
"安装vsftpd搭建ftp服务器" FTP(File Transfer Protocol)服务器是一种允许用户在网络上传输文件的服务器。vsftpd是一个功能强大且稳定的FTP服务器软件,本文将指导您如何安装和配置vsftpd以搭建FTP服务器。 安装...
本教程将深入探讨如何在Linux环境中使用vsftpd和nginx搭建一个稳定的FTP服务,以实现文件的上传功能。 首先,我们要了解vsftpd的基本概念。vsftpd代表“非常安全的FTP守护进程”,它的设计重点在于安全性,提供了...
【FTP服务器搭建详解:以vsftpd在Linux系统中的配置为中心】 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在Linux服务器环境中,vsftpd(Very Secure FTP Daemon)是一个广泛使用的...
"vsftpd+ssl搭建加密传输的安全FTP服务器" 本文将指导读者如何使用vsftpd和SSL/TLS加密协议搭建一个安全的FTP服务器,以确保数据在传输过程中的安全性。本文将从安装vsftpd和SSL/TLS证书开始,到vsftpd用户配置、...
7. **监控和维护**:定期检查VSFTPD的日志文件,位于`/var/log/vsftpd.log`,以确保服务稳定运行,及时发现和解决可能的问题。 文档`在GM8180音视频服务器建立FTP 服务器的方法指导.doc`可能提供了针对特定硬件平台...
【vsftpd-3.0.2.tar.gz】是一个针对Linux系统的开源FTP服务器软件——vsftpd(Very Secure FTP Daemon)的源代码压缩包。...正确配置和使用vsftpd,可以帮助你搭建一个高效、安全的FTP服务器,满足各种文件传输需求。
在Linux环境中搭建FTP(File Transfer Protocol)服务是管理文件传输、共享和访问的重要方式之一。其中,vsftpd(Very Secure FTP Daemon)因其出色的安全性和性能,成为了最流行的FTP服务器软件之一。本文将详细...
【vsftpd-3.0源码】是一个用于Linux系统的FTP服务器软件的源代码包,其核心...通过深入学习和理解`vsftpd-3.0`源码,开发者不仅能搭建和管理安全的FTP服务器,还可以为系统集成、自动化部署和定制化开发打下坚实基础。
2. **目标**:搭建一个功能完善的 vsftpd 服务,支持本地用户登录及基本的文件上传下载操作。 #### 三、安装 vsftpd 在 CentOS 5.5 系统中安装 vsftpd 及其相关的包,具体步骤如下: ```bash # 安装 vsftpd yum -...
在IT行业中,FTP(File Transfer Protocol)是一种广泛用于在互联网上进行文件传输的标准协议。而VSFTPD(Very Secure FTP Daemon...通过这种方式,你可以搭建一个公开、安全的FTP服务器,供用户方便地分享和上传文件。
### vsftpd服务器初学者指南 #### 一、vsFTPd简介与当前FTP标准 vsFTPd是一款专为Linux系统设计的小型且高效的安全FTP服务器软件。它以其轻量级的特点受...希望本文能帮助大家快速上手vsFTPd,搭建自己的FTP服务器。
7. **日志记录和监控**:了解如何配置VSFTPD的日志记录,并使用工具(如`tail`和`logrotate`)来监控和管理日志文件,以便追踪和解决问题。 8. **问题排查**:教程可能还会涵盖常见的错误和问题,如连接失败、权限...
标题与描述均聚焦于“CentOS vsftpd配置解析及实例”,这暗示着文章将深入探讨如何在CentOS操作系统上配置vsftpd(Very Secure FTP Daemon),以搭建一个功能全面的FTP服务器。以下是对该主题的详细分析: ### 1. ...
5. **日志监控**:定期查看`/var/log/vsftpd.log`日志,监控异常活动。 总的来说,`vsftpd-1.2.1.tar`是Linux环境中建立安全FTP服务的重要工具,通过理解其特性和配置,系统管理员可以搭建出符合安全标准的FTP...
xferlog_file=/var/log/vsftpd.log # 日志文件路径 idle_session_timeout=600 # 空闲会话超时时间 data_connection_timeout=120 # 数据连接超时时间 accept_timeout=60 # 接受连接超时时间 connect_timeout=60 # ...
本文将详细介绍如何使用VSFTPD搭建FTP服务器,并探讨其配置与安全特性。 首先,安装VSFTPD是搭建FTP服务器的第一步。在大多数Linux发行版中,可以通过包管理器进行安装,例如在Ubuntu或Debian上使用`sudo apt-get ...
如果遇到任何问题,日志文件`/var/log/messages`或`/var/log/vsftpd.log`通常会提供有用的错误信息。 **6. 安全考虑** 运行FTP服务器时,安全是至关重要的。应确保只有授权用户可以访问,并且所有传输都是加密的。...