vsftpd配置虚拟用户

FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。

访问ftp时,报错:vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()解决方法
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
可以用命令去除用户主目录的写权限,如:chmod a-w /home/user

安装vsftpd
yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl
yum -y install vsftpd

建立Vsftpd服务的宿主用户
useradd vsftpd -M -s /sbin/nologin
建立Vsftpd虚拟宿主用户
useradd ftpvload -M -s /sbin/nologin

修改vsftpd.conf配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #设定不允许匿名访问
local_enable=YES #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
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 #设定端口20进行数据连接。
chown_uploads=NO #设定禁止上传文件更改宿主。
xferlog_file=/var/log/vsftpd.log #设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_std_format=YES #设定日志使用标准的记录格式。
async_abor_enable=YES #设定支持异步传输功能。
ascii_upload_enable=YES
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。
ftpd_banner=This Vsftp server supports virtual users _ #设定Vsftpd的登陆标语。
chroot_list_enable=NO #禁止用户登出自己的FTP主目录。
ls_recurse_enable=NO #禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么当多用户同时使用该命令时将会对该服务器造成威胁。
listen=YES #设定该Vsftpd服务工作在StandAlone模式下。
pam_service_name=vsftpd #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
userlist_enable=YES #设定userlist_file中的用户将不得使用FTP。
tcp_wrappers=YES #设定支持TCP Wrappers
#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
guest_enable=YES #设定启用虚拟用户功能。
guest_username=ftpvload #指定虚拟用户的宿主用户。
virtual_use_local_privs=YES #设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf #设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

建立Vsftpd的日志文件,并更该属主为Vsftpd的服务宿主用户:
touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log

创建虚拟用户配置文件存放路径
mkdir /etc/vsftpd/vconf/ -pv
制作虚拟用户数据库文件
touch /etc/vsftpd/virtusers
新建一个测试用虚拟用户
vim /etc/vsftpd/virtusers
编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。
test #用户名
test1234 #用户密码
生成虚拟用户数据文件:
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

编辑Vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上)
vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

规划好虚拟用户的主路径:
mkdir /var/ftp/virtual
建立测试用户的FTP用户目录:
mkdir /var/ftp/virtual/test1
更改虚拟用户的主目录的属主为虚拟宿主用户:
chown -R ftpvload.ftpvload /var/ftp/virtual/

建立虚拟用户配置文件模版:
vi /etc/vsftpd/vconf/vconf.tmp
local_root=/var/ftp/virtual/test1 #指定虚拟用户的具体主路径
anonymous_enable=NO #设定不允许匿名用户访问
write_enable=YES #设定允许写操作
local_umask=022 #设定上传文件权限掩码
anon_upload_enable=NO #设定不允许匿名用户上传
anon_mkdir_write_enable=NO #设定不允许匿名用户建立目录
idle_session_timeout=600 #设定空闲连接超时时间
data_connection_timeout=120 #设定单次连续传输最大时间
max_clients=10 #设定并发客户端访问个数
max_per_ip=5 #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000 #设定该用户的最大传输速率,单位b/s

测试用户复制配置模板
cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test

测试配置
ftp 127.0.0.1

你可能感兴趣的:(vsftpd配置虚拟用户)