文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux redhat as 4.6 vsftp 安装

linux redhat as 4.6 vsftp 安装

时间:2010-10-29  来源:jeady

 

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


一、以系统用户访问ftp服务器

1、卸载系统自带的ftp软件(如果有)
[root@test root]# rpm -qa | grep ftp
[root@test root]# rpm -e ftp lftp
[root@test root]# cd /usr/local/src


2. 开始编译与安装
# 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

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

5. 编辑配置文件
[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           # 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_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]# touch /etc/pam.d/vsftpd                 
 
#%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 用户能访问 也可以自由切换工作目录 并且可读写

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

完成

二、以虚拟用户访问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                             
  auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login       #/etc/vsftpd_login指的就是之前建立的虚拟用户数据库     
  account required /lib/security/pam_userdb.so db=/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                                                 # 将用户访问限定在/var/ftp/t1中
 
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t2
 local_root=/var/ftp/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                          # 允许t1、t2、t3访问ftp服务器
t2
t3

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

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

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

完成

 

三、补充:

如果想更改用户类型,比如本来是系统用户访问ftp,现在想要用虚拟用户访问ftp,更改vsftpd.conf中的pam_service_name=vsftpd改为pam_service_name=vsftpd.vu,反之亦然。

四、常见错误

 

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文件中。

相关阅读 更多 +
排行榜 更多 +
宝宝情商养成宝宝巴士

宝宝情商养成宝宝巴士

休闲益智 下载
燥热手机版

燥热手机版

飞行射击 下载
巨人狙击手安卓版

巨人狙击手安卓版

飞行射击 下载