返回列表 回复 发帖

vsftpd安装配置

首先下载vsftpd
  wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.2.2.tar.gz
[root@localhost ftp]# ls
vsftpd-2.2.2.tar.gz
[root@localhost ftp]# tar zxvf vsftpd-2.2.2.tar.gz  
[root@localhost ftp]#cd vsftpd-2.2.2
[root@localhost vsftpd-2.2.2]#vi builddefs.h
默认选项:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
我们通过上面的可以看到,ftp验证是通过pam方式来验证的,这是一种虚拟用户登录ftp的验证方式。如果您采用了默认的方式安编译,会出现系统账号登录不到ftp的情况,但匿名ftp是能登录的。。

其实vsftpd把pam验证虚拟用户登录,也是一个安全的手段,通过pam方式,本地用户是没有办法登录到ftp上。事实上增强了系统的安全。

但如果我们只是想通过实际存在的系统帐号 nologin 方式来登录ftp ,采用他的默认的配置文件是不行的。我们要重新定义vsftpd 的配置文件 builddefs.h 。

改他的配置文件 builddefs.h中的一行
修改后:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#undef VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
下面我们开始 make && make install
但安装过程中,我遇到了两个错误,但不会太难,根据提示找错误就OK了
[root@localhost vsftpd-2.2.2]#cp vsftpd.conf /etc
然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行
listen=yes
vsFTPd服务器的运行;
[root@localhost ~]# /usr/local/sbin/vsftpd &
vsFTPd服务器是否运行起来;
我们可以通过pgrep vsftpd 来查看vsftpd是否运行起来;
[root@localhost vsftpd-2.2.2]# pgrep vsftpd
19159
关闭Vsftpd
[root@localhost ~]# pkill vsftpd
[root@localhost ~]# pgrep vsftpd    #查看
如果我们已经把vsFTPd服务器启动好了,但登录测试是会出现类似下面的提示;
500 OOPS: vsftpd: refusing to run with writable anonymous root
这表示ftp用户的家目录的权限不对,应该改过才对;
[root@localhost vsftpd-2.2.2]# more /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
winson:x:500:50::/data1/ftp:/sbin/nologin
我们发现ftp用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;如果没有ftp用户这个家目录,当然您要自己建一个;
如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;
[root@localhost ~]# chown  root:root /var/ftp
[root@localhost ~]# chmod  755 /var/ftp
测试:
[root@localhost vsftpd-2.2.2]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.2.2)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,153,80).
150 Here comes the directory listing.
226 Directory send OK.
有人可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?
vsftpd.conf是vsFTPd服务器的配置文件,此文件一般是/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf ,以系统为准吧。。
vsftpd.conf 这个配置文件并不包括所有您想实现的功能,有些功能的实现,我们要自己动手来解决,我们要学会查vsFTPd的文档和FAQ等,虽然是英文的,但都是比较简单的
注意:完配置文件后,一定要重启vsFTPd服务器才能生效,切记
修改关于匿名上传,其实也比较简单,首先我们要修改一下vsftpd.conf ,此文件位于 /etc/目录下,可能是/etc/vsftpd.conf,也可能是/etc/vsftpd/vsftpd.conf文件。以您的系统环境为准;
首先:我们要改一下vsftpd.conf,确保有以下几行;
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

其次:在ftp用户家目录的下建一个文件夹,并修改其权限为完全开放;
ftp用户的家目录在哪?我们前面已经说了,要通过/etc/passwd来查看;也可以通过finger ftp来查看;
[root@localhost vsftpd-2.2.2]# finger ftp
Login: ftp                              Name: FTP User
Directory: /var/ftp                     Shell: /sbin/nologin
这说明ftp用户的家目录在/var/ftp ,我们要在这个目录下建一个目录,然后把他的权限设置为任何用户可读可写可执行就行了;一般的情况下,在发行版中,有一个/var/ftp/pub的目录,如果没有,您也可以自己建一个;把配置文件改好后,只要把/var/ftp下的任何一个目录的权限打开,都可以用来匿名上传和下载;
比如您想让匿名用户上传和下载都在/var/ftp/pub,就可以把/var/ftp/pub的权限打开,如果没有这个目录,您要自己建一个;
[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod 777 /var/ftp/pub
关于添加本地用户及打开读写权限示例;
FTP用户一般是不能登录系统的,这也是为了安全。在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;
如果我们想把winson这个用户目录定位在/data1/ftp这个目录中,并且不能登录系统;我们应该如下操作
[root@localhost ~]# adduser -d /data1/ftp -g ftp -s /sbin/nologin winson
[root@localhost ~]# passwd winson
Changing password for user winson.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
这还是不够的,还要改一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限;
local_enable=YES
write_enable=YES
local_umask=022
让我们测试一下
[root@localhost vsftpd-2.2.2]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.2.2)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): winson
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,140,41).
150 Here comes the directory listing.
drwxr-x--x    8 1000     1000         4096 Mar 08 14:59 vsftpd-2.2.2
-rw-r--r--    1 0        0          185562 Mar 08 08:50 vsftpd-2.2.2.tar.gz
226 Directory send OK.
临渊羡鱼不如退而结网苦练内功!
返回列表