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