需求:需要2个ftp用户访问不同的根目录,其他的访问ftp默认目录。

2个用户为:test1、test2

首先安装vsftpd,然后配置文件如下:

vsftpd.conf:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
ftpd_banner=”welcome test Ftp Server.”
pam_service_name=vsftpd  #设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名
userlist_enable=YES
tcp_wrappers=YES
local_root=/home/www/test/upload/
virtual_use_local_privs=YES
guest_enable=YES   #表示是否开启vsftpd虚拟用户的功能,yes表示开启,no表示不开启。
guest_username=www
user_config_dir=/etc/vsftpd/vuser_conf  #指定每个虚拟用户账号配置目录
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40080
pasv_promiscuous=YES
 
创建虚拟用户配置目录:
mkdir /etc/vsftpd/vuser_conf
 
创建虚拟用户文件,把这些用户名和密码存放在一个文件中。该文件内容格式是:用户名占用一行,密码占一行。如下:
[root@localhost vsftpd]# cat /etc/vsftpd/login.txt
test1
testone
test2
testtwo
 

这个文件的虚拟用户和密码的文本文件无法被系统帐号直接调用,所以我们需要使用db_load命令生成db口令数据库文件,命令如下:

db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

为了使服务器能够使用上述生成的数据库文件,对客户端进行身份验证,需要调用系统的PAM模块。PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

我们现在切换到/etc/pam.d/ 目录下,编辑vsfptd文件。如下图:

ftp

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
 

auth是指对用户的用户名口令进行验证。

accout是指对用户的帐户有哪些权限哪些限制进行验证。

再后面的/lib64/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。

注意该函数会根据系统的位数而所在位置不同。

如果是32bit系统,该文件所在位置是/lib/security/pam_userdb.so
如果是64bit系统,该文件所在位置是/lib64/security/pam_userdb.so
 
最后db=/etc/vsftpd/login则指定了验证库函数将到这个指定的数据库中调用数据进行验证。其实该文件指的是/etc/vsftpd/login.db文件。
 
注意:db=/etc/vsftpd/login格式是这样的,去掉.db后缀。
 
PAM配置完毕后,我们现在开始创建虚拟用户与系统用户对应的文件。切换到/etc/vsftpd/vuser_conf目录下,并创建test1文件。注意该文件名称一定要与login.txt中的虚拟用户要对应。比如现在login.txt文件有test1用户,那么在 /etc/vsftpd/vuser_conf目录下创建一个文件名为test1的文件。

[root@localhost vsftpd]# cat /etc/vsftpd/vuser_conf/test1

local_root=/home/www/test1/upload/   #表示使用本地用户登录到ftp时的默认目录
virtual_use_local_privs=YES   #虚拟用户和本地用户有相同的权限
guest_username=www   #表示的是设置FTP对应的系统用户为www
write_enable=YES
anon_umask=022
 
以上配置完毕后,启动vsftpd服务完成。
测试test1、test2 ftp用户均可以正常登录,对应的根目录不同,均有创建和删除、上传权限。
 
ftp虚拟用户,故不需要事先创建系统用户。
 
关于chroot:
    1. chroot_local_user
    2. chroot_list_enable
    3. chroot_list_file

可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生:

(1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.con文件中的chroot_local_ user值置为YES,即             chroot_local_user=YES。

(2)设置指定的用户执行chroot,按照如下方法进行设置:

chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。

 

改变目录底层的属性方法chattr和lsattr

chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多 功能不能实现。同样-D检查压缩文件中的错误的功能,需...

阅读全文

sendmail简单配置与使用

linux邮件服务器现在主流是postfix,配置也比较简单,跟ftp配置一样,这里主要记录下sendmail的简单配置.  1.安装相关的包: yum -y install sendmail sendmai...

阅读全文

域名无法解析简单的排查方法

当域名出现无法解析的情况,可以使用下面的方法进行排查: 首先安装域名排查工具 [root@localhost ~]# yum install -y jwhois 运行如下命令:查看Domain Stat...

阅读全文