直接进入正题, 我比较习惯用vsftp, 设置相对简单些吧.
系统环境是: CentOS 5.2 x86_64
FTP服务端:vsftpd 本文简单说明服务器虚拟用户配置情况
不编译安装了, 用最简洁的方式, 直接:
# 通过yum直接在线装vsftpd(rpm版本)
yum -y install vsftpd
# 创建系统用户的列表, 一行一个
touch /etc/vsftpd/vsftpd.chroot_list
# 创建vsftp的日志文件
touch /var/log/vsftpd.log
# 创建虚拟用户的配置文件路径目录
mkdir /etc/vsftpd/user_config
# 创建vsftp的系统用户 (假设站点目录在/www/wwwroot/ftpd)
useradd ftpd -d /www/wwwroot/ftpd -s /sbin/nologin
# 把vsftp的系统用户写入vsftpd.chroot_list
echo ‘ftpd’ >> /etc/vsftpd/vsftpd.chroot_list
# 准备工作, 创建passwd.txt, 单行为用户名, 双行为密码
touch /etc/vsftpd/passwd.txt
内容例如:
ftp1
123456
ftp2
456789
# 创建虚拟用户密码认证的数据库文件
db_load -T -t hash -f passwd.txt /etc/vsftpd/user_passwd.db
# 如果提示找不到db_load, 则安装下列包, 如果正常则跳过本步骤
yum -y install db4 db4-tcl db4-utils
查看原文解决方案: http://www.linuxsense.cn/no-db_load-solutions.html
# 直接编辑认证文件
vi /etc/pam.d/vsftpd
# 清空里面的内容或者都注释掉(最前面加#), 添加下面两行
auth required pam_userdb.so db=/etc/vsftpd/user_passwd
account required pam_userdb.so db=/etc/vsftpd/user_passwd
# 编辑vsftp的配置文件
vi /etc/vsftpd/vsftpd.conf
# 添加如下内容 (不一一说明)
listen=YES
background=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log # 日志文件路径, 前面有说到
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to hao32 FTP servers # 登陆后欢迎语, 可以自定义
pam_service_name=vsftpd # 认证文件名, 在位置/etc/pam.d/vsftpd
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list # vsftp系统用户列表, 前面有说到
guest_enable=YES # 允许虚拟用户
guest_username=ftpd # vsftp的系统用户, 前面有说到
user_config_dir=/etc/vsftpd/user_config # vsftp的虚拟用户的配置文件目录, 前面有说到
reverse_lookup_enable=NO # 禁止反解析,解决有时候连接FTP会卡住一会的问题
# 为每个虚拟用户创建配置文件
vi /etc/vsftpd/user_config/ftp1
# 添加如下内容
local_root=/www/wwwroot/ftpd/ftp1
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# 同样的方法建立ftp2, 如果用户多的话, 写入/etc/vsftpd/passwd.txt来生成密码认证的数据库文件, 前面有说到
# 启动vsftp服务器
service vsftpd start
# 验证登陆
主机名: 您服务器的ip地址
用户:ftp1/123456
用户:ftp2/456789
# 一般没有意外就会一切okay, 有意外请在本站留言!
# 说明: /www/wwwroot/ftpd目录的所有文件用户属组都是ftpd, 使用虚拟用户上传的文件用户属组也都是ftpd
# 目的就是为了处理多用户安全的情况, 一个虚拟用户无法跳到同组其他用户下
# good luck!
zwws
配了以后用户正常登录, 但是无法上传文件, 建立文件夹
目录在/var/ftp
全部为ftp.ftp 755
= =!
hao32
回复:kate
http://www.hao32.com/unix-linux/41.html
kate
安装步骤来做的出现:输入用户名 密码 530 Login incorrect.
Chinazz
不知道为什么,按照上面的一步一步做,结果启动不起来 vsftpd
Starting vsftpd for vsftpd: [FAILED]
Jerry
刚才试了一下,确实是这样。
看来我理解错了,多谢哈。
hao32
nopriv_user 指定的用户身份执行处理匿名登录的用户,而对登录的用户就以用户自己的身份执行
Jerry
“nopriv_user=” #以某个用户来运行vsftpd 。
配置文件里的这个参数不知你用过没,在我的机器上好像不起作用,郁闷……(我的vsftpd是yum安装,standalone模式运行的,运行的身份一直是root……)