vsftpd搭建日志
来源:互联网 发布:软件设计师证书 编辑:程序博客网 时间:2024/05/20 22:26
从ftp://vsftpd.beasts.org/users/cevans/下载。 进入vsftpd-2.3.2,编译 google了一下,是因为上面的vsf_findlibs.sh脚本是按照32位系统来寻找lib包的,所以路径可能错误。需要手工修正。 已解决。 奇怪的是64位系统上居然有两个lib,而且都有内容: Anyway,修改vi vsf_findlibs.sh,将这一行:locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";修改为 再次编译: 类似的问题,如上解决。然后再次编译,done! 这是因为是否以standalone形式运行,取决于vsftpd.conf文件中的listen配置。 # When "listen" directive is enabled, vsftpd runs in standalone mode and 同样如果你要支持本地用户登录,那么需要copy源码目录下的vsftpd.pam文件 复制pam验证文件:(多数使用vsftpd的用户在用源代码安装后都会遇到这样的问题:匿名用户可以登录,而本地用户无论怎样设置都无法登录,原因就在于vsftpd采用了PAM验证的方式,需要复制一个验证文件本地用户才能访问。) cp后再次运行上面命令,报如下错误: google搜了一下,这是因为同时指定了xinetd(或者老的inetd)和standalone两种运行方式,端口冲突了。删除/etc/xinetd.d/vsftpd这个文件;然后重新启动xinetd服务器,就可以了。 vsFTPd运行有两种模式,standalone方式和xinetd(inetd)模式。可以在initd.d目录下编写一个启动脚本,这样服务器起来的时候就可以自动运行standalone方式。 sftpd服务器的配置文件为/etc/vsftpd.conf。事实上简单的使用vsftp,并不需要什么配置的,目前我们关系的两项就是: 2.允许本地用户登录并允许其上传文件。 3.将本地用户锁定在主目录中,不允许切换到上一级目录中。 4.禁止某些用户通过ftp登录服务器。 在vsftpd.conf中有三个选项控制: userlist_deny=YES/NO 现在让我们上传一些文件,然后登录看看能不能浏览和下载吧。 我们发现ftp用户的根目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的(如果没有ftp用户这个家目录,当然您要自己建一个) 有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了。没有什么难的。 vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsftpd的文档就明白的了。否则也不能称为最安全的FTP服务器了,对不对? 可以看到非常方便,自动识别出我们的就是64位环境。不需要我们修改编译脚本。不过就是版本稍微老了些。vsftpd搭建日志
1. 下载
2. 编译和安装
[forrest@host vsftpd-2.3.2]$ makegcc -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 formatcollect2: ld returned 1 exit statusmake: *** [vsftpd] Error 1
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.[forrest@host ~]$ ll / | grep libdrwxr-xr-x 11 root root 4096 Sep 2 04:06 libdrwxr-xr-x 7 root root 4096 Sep 2 04:07 lib64[forrest@host ~]$ ll /lib64/ | grep libpamlrwxrwxrwx 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.0lrwxrwxrwx 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.2lrwxrwxrwx 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 libpamlrwxrwxrwx 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.0lrwxrwxrwx 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.2lrwxrwxrwx 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 libdrwxr-xr-x 83 root root 69632 Sep 2 04:07 libdrwxr-xr-x 92 root root 69632 Sep 2 04:08 lib64drwxr-xr-x 11 root root 4096 Sep 7 20:21 libexec[forrest@host usr]$
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]$ makegcc -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 formatcollect2: ld returned 1 exit statusmake: *** [vsftpd] Error 1[forrest@host vsftpd-2.3.2]$
[forrest@host vsftpd-2.3.2]$ make[forrest@host vsftpd-2.3.2]$ sudo make installif [ -x /usr/local/sbin ]; then /install -m 755 vsftpd /usr/local/sbin/vsftpd; /else /install -m 755 vsftpd /usr/sbin/vsftpd; fiif [ -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; fiif [ -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
否则运行时候会报如下错误:[forrest@host usr]$ sudo /usr/local/sbin/vsftpd Password: 500 OOPS: vsftpd: not configured for standalone, must be started from inetd
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES[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
[forrest@host xinetd.d]$ sudo /usr/local/sbin/vsftpd500 OOPS: could not bind listening IPv4 socket
[forrest@host var]$ netstat -ant | grep 21tcp 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 vsftpdvsftpd[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 restartStopping xinetd: [ OK ]Starting xinetd: [ OK ][forrest@host xinetd.d]$ sudo /usr/local/sbin/vsftpd &## Testforrest@ubuntu:~$ ftp 10.249.167.161Connected to 10.249.167.161.220 (vsFTPd 2.3.2)Name (10.249.167.161:forrest): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp>
3. 配置
listen=YES
anonymous_enable=YES
其他常用的vsftpd的配置项如下:
1.禁止匿名用户访问。
anonymous_enable=NO
local_enable=YES
write_enable=YES
要使上述选项生效,必须复制一个pam验证文件到/etc/pam.d,并改名为ftp。当然也可以改为其他名称,但必须修改pam_service_name的值,默认为ftp。
chroot_local_user=YES
如果设置了local_enable=YES,那么所有的用户包括root也能通过ftp登录服务器,出于安全考虑,需要对某些用户进行限制。
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list4. 体验一下吧
Radhat另一个恶心的地方是安装后生成了ftp:ftp用户和用户组,却没有生成ftp用户根目录/var/ftp。因此你需要自己创建一个:[forrest@host ebooks]$ grep ftp /etc/passwdftp:x:14:50:FTP User:/var/ftp:/sbin/nologin这个显示ftp用户的根目录为/var/ftp。[forrest@host ebooks]$ groups ftpftp : ftp[forrest@host ebooks]$ sudo mkdir /var/ftp进入该目录放几个文件,然后用浏览器登录试一下,应该可以正常浏览和下载:[forrest@host init.d]$ cd /var/ftp/[forrest@host ftp]$ lltotal 8drwxr-xr-x 2 root root 4096 Sep 19 17:39 ebooks-rw-r--r-- 1 root root 13 Sep 19 17:26 helloworld.txt
如果我们已经把vsftpd服务器启动好了,但登录测试是会出现类似下面的提示:
500 OOPS: vsftpd: refusing to run with writable anonymous root
这表示ftp用户的根目录的权限不对,应该改过才对:[forrest@host ebooks]$ grep ftp /etc/passwdftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
修正这个错误,应该用下面的办法:[forrest@host ebooks]$ sudo chown root:root /var/ftp[forrest@host ebooks]$ sudo chmod 755 /var/ftp
[forrest@host ~]$ sudo yum install vsftpdPassword: Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfileaddons | 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 ProcessResolving Dependencies--> Running transaction check---> Package vsftpd.x86_64 0:2.0.5-16.el5_5.1 set to be updatedupdates/filelists_db | 2.1 MB 00:00 --> Finished Dependency ResolutionDependencies Resolved============================================================================================================================================================================ Package Arch Version Repository Size============================================================================================================================================================================Installing: vsftpd x86_64 2.0.5-16.el5_5.1 updates 139 kTransaction 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... DoneBuilding dependency tree Reading state information... DoneThe following packages were automatically installed and are no longer required: libparted0Use 'apt-get autoremove' to remove them.The following NEW packages will be installed: vsftpd0 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://tw.archive.ubuntu.com/ubuntu/ lucid-proposed/main vsftpd 2.2.2-3ubuntu7.1 [148kB]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 rebootSetting up vsftpd (2.2.2-3ubuntu7.1) ...Adding user ftp to group ftpvsftpd start/running, process 15835
vsFTPd 服务器初学者指南(欢迎大家参与补充)
- vsftpd搭建日志
- vsftpd服务器的搭建
- 搭建linux vsftpd服务器
- vsftpd 搭建 - 添加用户
- vsftpd 搭建 ftp
- 自己搭建vsftpd(转)
- 快速搭建vsftpd笔记
- vsftpd 搭建 - 添加用户
- vsftpd搭建图文详解
- vsftpd搭建小记录
- vsftpd安装搭建(linux)
- 搭建vsftpd服务器
- openSUSE vsftpd 搭建
- CentOS 搭建 vsftpd
- vsftpd ftp服务器搭建
- ubuntu 14.04 搭建vsftpd
- vsftpd 搭建文件服务器总结
- linux vsftpd 环境搭建
- 单例模式完全剖析
- Apache起不来,报No space left on device: Couldn't create accept lock
- asp导出Excel文档代码
- WEB前端开发中的性能调试工具(简记)
- mknod详解
- vsftpd搭建日志
- MySQL源码分析(1):主要模块及数据流
- linux下查看和添加PATH环境变量
- C/C++学习笔记之sizeof的学习
- 跟着学作图——SAS/GRAPH® for the Timid
- MySQL源码分析(2):Mysql中的内存分配相关
- samba 文件服务器
- poj 1659
- Java Socket 详解