vsftp 安装

 

相关环境:
redhat AS4.6    vsftpd-1.2.0.tar.gz
shell


1、以系统用户访问ftp服务器
数据库

一、卸载系统自带的ftp软件(若是有)
[root@test root]# rpm -qa | grep ftp
[root@test root]# rpm -e ftp lftp
[root@test root]# cd /usr/local/src
浏览器


2. 开始编译与安装 固然也能够yum方式安装
# vsftpd 预设安装的路径为:
# 全部可执行档放置在 /usr/local/sbin 里面;
# man page 放置在 /usr/local/man/man5 与 /usr/local/man/man8
# 若 super daemon 为 xinetd 时,会复制一份启动档案到 /etc/xinetd.d 去!
服务器

[root@test src]# tar -zxvf /root/vsftpd-1.2.0.tar.gz
[root@test src]# cd vsftpd-1.2.0/                                         # 在这个目录下有个 INSTALL 与 README 请务必察看喔!
[root@test vsftpd-1.2.0]# make                       # 编译的过程可能有 warning 的讯息,只要不是 Error 就能够不理他!
[root@test vsftpd-1.2.0]# make install
[root@test vsftpd-1.2.0]# mkdir /etc/ftp
[root@test vsftpd-1.2.0]# cp vsftpd.conf /etc             # 创建主配置文件
[root@test vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd      # 将 PAM 身份认证模块给他放进去系统里面!
[root@test vsftpd-1.2.0]# useradd -M ftp -d /var/ftp            # 创建 ftp 这个使用者以及他的家目录:# 若原本就存在 ftp 这个使用者,那就不须要进行新增!
[root@test vsftpd-1.2.0]# mkdir -p /var/ftp
[root@test vsftpd-1.2.0]# chown root:root /var/ftp             # 更改目录权限
[root@test vsftpd-1.2.0]# chmod 755 /var/ftp
[root@test vsftpd-1.2.0]# mkdir -p /usr/share/empty            # 创建 vsftpd 须要的特殊目录

3. 若是须要移除时:
# 若是想要移除 vsftp 时,能够这样作
[root@test vsftpd-1.2.0]# rm /usr/local/sbin/vsftpd
[root@test vsftpd-1.2.0]# rm /usr/local/man/man5/vsftpd.conf.5
[root@test vsftpd-1.2.0]# rm /usr/local/man/man8/vsftpd.8
[root@test vsftpd-1.2.0]# rm /etc/xinetd.d/vsftpd
[root@test vsftpd-1.2.0]# rm /etc/ftp/vsftpd.conf
session

4. 创建上传目录:
[root@test vsftpd-1.2.0]# cd /root
[root@test ~]# mkdir -p /var/ftp/upload
[root@test ~]# chown ftp /var/ftp/upload
app

5. 编辑配置文件
[root@test root]# more /etc/ftp/vsftpd.conf | grep -v "#" | moresocket

#####系统相关设置
dirmessage_enable=YES            # 显示目录信息
xferlog_enable=YES             # 记录用户的上传下载行为
connect_from_port_20=YES          # 使用20端口传输数据
xferlog_file=/var/log/vsftpd.log       # log文件
idle_session_timeout=600          # 链接超时600s
data_connection_timeout=120         # 数据传输超时120s
use_localtime=YES              # 使用本地时间
xferlog_std_format=YES           # 使用同wu ftp相同的文件格式
pam_service_name=vsftpd           # pam 模块名称
tcp_wrappers=YES              # tcp_wrappers支持
listen_port=21               # ftp 端口
listen=YES                 # 以独立进程启动
max_clients=50               # 最大客户端
max_per_ip=5                # 同一IP最大链接数
ascii_upload_enable=NO           # 不使用ascii格式上传
ascii_download_enable=NO          # 不使用ascii格式下载
nopriv_user=ftp               # 服务运行者为 ftp
write_enable=YES               # 写入权限
ls_recurse_enable=NO                        #禁止用户登录FTP后使用"ls -R"的命令。该命令会对服务器性能形成巨大开销。若是该项被容许,那么挡多用户同时使用该命令时将会对该服务器形成威胁.
tcp

####本地用户访问相关设置
local_enable=YES              # 容许本地用户访问
local_umask=022               # 本地用户上传的文件权限
chroot_list_enable=YES           # 将用户限止在本身的主目录内
chroot_list_file=/etc/ftp/vsftpd.chroot_list  # 限定不能更改目录的用户
userlist_enable=YES             # 指定能登陆的用户
userlist_deny=NO              # 指定不能登陆的用户
userlist_file=/etc/ftp/vsftpd.user_list   # 指定能登陆的用户
local_max_rate=10000            # 本地用户传输速度 10000 bytes/second
ide


####匿名用户访问相关设置
anonymous_enable=NO              # 匿名用户登陆
anon_other_write_enable=NO          # 匿名用户写入权限
anon_mkdir_write_enable=NO          # 匿名用户创建目录权限
anon_upload_enable=NO             # 匿名用户上传数据
deny_email_enable=YES            # 限止某email address 用户使用匿名访问
banned_email_file=/etc/ftp/vsftpd.banned_emails # 禁止登陆的email address
anon_max_rate=3000             # 匿名用户传输速度 3000 bytes/second
工具

####虚拟用户访问相关设置
guest_enable=YES              # 启用虚拟用户
guest_username=vsftp                        # 虚拟用户对应的系统用户名
user_config_dir=/etc/ftp/vsftpd_user_conf   # 虚拟用户的个性配置文件目录

创建相关文件
[root@test root]# touch /etc/ftp/vsftpd.chroot_list   # 此文件内的用户不能更改目录     每行一个用户名


[root@test root]# touch /etc/ftp/vsftpd.user_list     # 只容许此文件内的列出的用户登陆

每行一个用户名


[root@test root]# touch /etc/ftp/vsftpd.banned_emails   # 此文件内的email 不能login

每行一个eamil地址


[root@test root]# vi /etc/pam.d/vsftpd     创建pam文件  注意:若是是64位系统,那么下面的路径就是/lib64/security/   ,固然也能够不写这个路径       
 
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       required     /lib/security/pam_pwdb.so shadow nullok
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_pwdb.so
session    required     /lib/security/pam_pwdb.so

[root@test root]# vi /etc/xinetd.d/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                 = yes          # 关闭xinetd模式启动vsftpd
}

[root@test root]# vsftpd &                              # 启动ftp服务器
[root@test root]# echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local       # 开机自启动

6. 测试

创建测试用户
[root@test root]# useradd -p test1 test1 
[root@test root]# useradd -p test2 test2 
[root@test root]# useradd -p test3 test3

[root@test root]# more /etc/ftp/vsftpd.user_list    # 更改/etc/ftp/vsftpd.user_list内容以下
test2                        # 容许test2 、test3访问ftp服务器
test3

[root@test root]# more /etc/ftp/vsftpd.chroot_list  # 更改/etc/ftp/vsftpd.chroot_list内容以下
test2                                               # 禁止test1 更改主目录

使用ftp工具或是浏览器时行访问,得出的结果应该是:

匿名用户不能访问

test1 用户不能访问
test2 用户能访问 可是只能在自的主目录中 而且可读写
test3 用户能访问 也能够自由切换工做目录 而且可读写

用户的读写权限 需系统文件权限的支持。

完成

2、以虚拟用户访问ftp服务器 (推荐方式)

1. 创建虚拟用户的用户名和密码,
  [root@test root]# vi /etc/ftp/logins.txt       
  t1
  pass1
  t2
  pass2
  t3
  pass3
 

格式以下:
<用户名>
<密 码>
<用户名>
<密 码>

2.创建虚拟用户数据库
  [root@test root]# db_load -T -t hash -f /etc/ftp/logins.txt /etc/ftp/vsftpd_login.db           
[root@test root]# chmod 600 /etc/vsftpd_login.db          # 创建虚拟用户数据库

3.创建pam认证文件,
  [root@test root]# vi /etc/pam.d/vsftpd.vu      注意:若是是64位系统,那么下面的路径就是/lib64/security/ ,固然也能够不写这个路径                          

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login    
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 

#/etc/vsftpd_login指的就是以前创建的虚拟用户数据库      

4.编辑配置文件
  [root@test root]# more /etc/ftp/vsftpd.conf | grep -v "#" | more

#####系统相关设置
dirmessage_enable=YES            # 显示目录信息
xferlog_enable=YES             # 记录用户的上传下载行为
connect_from_port_20=YES          # 使用20端口传输数据
xferlog_file=/var/log/vsftpd.log       # log文件
idle_session_timeout=600          # 链接超时600s
data_connection_timeout=120         # 数据传输超时120s
use_localtime=YES              # 使用本地时间
xferlog_std_format=YES           # 使用同wu ftp相同的文件格式

##############################更改此内容##############################################

pam_service_name=vsftpd.vu         # pam 模块名称   这是咱们以前建的pam文件

######################################################################################


tcp_wrappers=YES              # tcp_wrappers支持
listen_port=21               # ftp 端口
listen=YES                 # 以独立进程启动
max_clients=50               # 最大客户端
max_per_ip=5                # 同一IP最大链接数
ascii_upload_enable=NO           # 不使用ascii格式上传
ascii_download_enable=NO          # 不使用ascii格式下载
nopriv_user=ftp               # 服务运行者为 ftp
write_enable=YES               # 写入权限
ls_recurse_enable=NO                        #禁止用户登录FTP后使用"ls -R"的命令。该命令会对服务器性能形成巨大开销。若是该项被容许,那么挡多用户同时使用该命令时将会对该服务器形成威胁.

####本地用户访问相关设置
local_enable=YES              # 容许本地用户访问
local_umask=022               # 本地用户上传的文件权限
chroot_list_enable=YES           # 将用户限止在本身的主目录内
chroot_list_file=/etc/ftp/vsftpd.chroot_list  # 限定不能更改目录的用户
userlist_enable=YES             # 指定能登陆的用户
userlist_deny=NO              # 指定不能登陆的用户
userlist_file=/etc/ftp/vsftpd.user_list   # 指定能登陆的用户
local_max_rate=10000          # 本地用户传输速度 10000 bytes/second


####匿名用户访问相关设置
anonymous_enable=NO              # 匿名用户登陆
anon_world_readable_only=NO                 # 匿名只读
anon_other_write_enable=NO          # 匿名用户写入权限
anon_mkdir_write_enable=NO          # 匿名用户创建目录权限
anon_upload_enable=NO             # 匿名用户上传数据
deny_email_enable=YES            # 限止某email address 用户使用匿名访问
banned_email_file=/etc/ftp/vsftpd.banned_emails # 禁止登陆的email address
anon_max_rate=3000             # 匿名用户传输速度 3000 bytes/second


####################添加如下内容###########################
####虚拟用户访问相关设置
guest_enable=YES              # 启用虚拟用户
guest_username=ftpvu                        # 虚拟用户对应的系统用户名
user_config_dir=/etc/ftp/vsftpd_user_conf   # 虚拟用户的个性配置文件目录
###########################################################

5.创建相关文件
 [root@test root]# mkdir /etc/ftp/vsftpd_user_conf     # 虚拟用户的个性配置文件目录
 [root@test root]# useradd -d /var/ftp -s /sbin/nologin -g ftp ftpvu    # 虚拟用户对应的系统用户名
 [root@test root]# chown ftpvu.ftp /var/ftp
 [root@test root]# mkdir -pv /var/ftp/t1  /var/ftp/t2 /var/ftp/t3    # 创建各虚拟用户的主目录
 
6.为各用户单独设置访问权限
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t1
 local_root=/var/ftp/t1           # 将用户t1访问限定在/var/ftp/t1中
 
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t2
 local_root=/var/ftp/t2           # 将用户t2访问限定在/var/ftp/t2中 
 anon_other_write_enable=YES      # 写入权限
 anon_mkdir_write_enable=YES      # 创建目录权限
 anon_upload_enable=YES           # 用户上传数据
 
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t3
 anon_other_write_enable=YES      # 写入权限
 anon_mkdir_write_enable=YES      # 创建目录权限
 anon_upload_enable=YES           # 用户上传数据
 
[root@test root]# more /etc/ftp/vsftpd.user_list   # 更改/etc/ftp/vsftpd.user_list内容以下
t1                   # 容许t一、t二、t3访问ftp服务器
t2
t3

[root@test root]# more /etc/ftp/vsftpd.chroot_list  # 更改/etc/ftp/vsftpd.chroot_list内容以下
t1                    # 禁止t一、t2更改主目录
t2

7.测试
使用ftp工具或是浏览器时行访问,得出的结果应该是:

匿名用户不能访问
t1   用户能访问,只读权限,只能在主目录(/var/ftp/t1)里活动
t2   用户能访问,读写权限,只能在主目录(/var/ftp/t2)里活动
t3   用户能访问,读写权限,能在/var/ftp里活动,可切换目录

完成

 

3、常见错误 

1.   ftp登录时候,500 cannot locate user****

缘由:多是用户名有问题
注意看 logins.txt文件和
vsftpd.conf里guest_username有没有错,好比多个空格!

2.   530 login failed 
pam验证错误,检查下/etc/pam.d/***配置文件,看看是否是指向正确的位置
 

3.   登录后533 cannot create file
缘由,guest_username对目标文件夹没有权限

4.   530 permission denied
缘由,看一下有没有权限访问目录,还有用户有没有加到/etc/ftp/vsftpd.user_list文件中。

 

4、补充:

 

若是想更改用户类型,好比原本是系统用户访问ftp,如今想要用虚拟用户访问ftp,更改vsftpd.conf中的pam_service_name=vsftpd 改成 pam_service_name=vsftpd.vu, 反之亦然。

相关文章
相关标签/搜索