虚拟用户登陆

1.增加一个与虚拟用户对应的系统用户,不允许登陆

useradd wypftp -s /sbin/nologin

2.创建一个存放虚拟用户账号密码的文件

vim /etc/vsftpd/vsftpd_login

user1          #虚拟用户账号1

hd792310       #虚拟用户密码1

user2          #虚拟用户账号2

hd792310       #虚拟用户密码2

改变密码文件权限,只允许root查看

chmod 600 /etc/vsftpd/vsftpd_login

3.把刚创建的账号密码文件,生成vsftp能识别的库文件

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

注:vsftpd_login和vsftpd_login.db前面必须一致,否则出错。只是后面多个.db

4.创建虚拟用户的目录

mkdir /etc/vsftpd/vsftpd_user_conf

此目录主要是存放虚拟用户的配置文件

创建与虚拟用户同名的配置文件,如:

vim user1  插入以下代码,与vsftpd的配置文件大同小异。

local_root=/home/wypftp/user1

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

local_max_rate=50000

说明:local_root 为该账号的家目录,anonymous_enable 用来限制是否允许匿名账号登陆,若

为 NO 表示不允许匿名账号登陆,write_enable=YES 表示可写,local_umask 指定 umask 值,

anon_upload_enable 是否允许匿名账号上传文件,anon_mkdir_write_enable 是否允许匿名账

号可写。以上为关键配置参数,其他暂时不用关心。创建 user2 账号的步骤和 user1 一样。

5.创建虚拟用户的家目录

mkdir /home/wypftp/user1

chown -R wypftp:wypftp /home/wypftp/ 修改为映射用户的权限

6.配置用户认证的配置文件,默认是以系统用户和密码认证。我们改为虚拟用户认证,关联密码库文件

vim /etc/pam.d/vsftpd   //在最开头添加两行

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

注:我的 Linux 为 32 位系统,所以库文件路径为/lib/security/pam_userdb.so,若你的

系统为 64,那你的库文件是在/lib64/security/pam_userdb.so。

pam_userdb.so是一个用户认证的模块,我们创建密码库文件时,就与它有关。

7.修改全局配置文件/etc/vsftpd.conf

anonymous_enable=YES 改为 anonymous_enable=NO

#anon_upload_enable=YES 改为 anon_upload_enable=NO

#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

最下面再增加:

chroot_local_user=YES    #限定用户家目录,不能出去

guest_enable=YES         #不打开,虚拟用户登录不了

guest_username=wypftp    #映射的虚拟用户

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf #指定虚拟用户的配置文件路径

注意:配置后面不要有多余的空格,否则会报错

8.最后启动 vsftpd 服务

# /etc/init.d/vsftpd start

如果服务启动不了,很有可能是前面的 pure-ftpd 服务还没有关闭。测试过程和前面

pure-ftpd 的一样。另外,如果用户登录不了,请查看一下/var/log/secure 日志。

9.测试

用lftp user1@192.168.1.60

或者浏览器ftp://192.168.1.60

课后答疑:

1.使用vsftpd时,为什么创建虚拟用户还要创建所映射的用户呢?不能直接创建用户吗。创建所映射的用户有什么作用,不太明白!

答:就是为了安全,如果是系统用户,那么就得提供用户的密码,这个密码也可以让它登录到系统里。执行shell命令了。

2.置虚拟用户禁止删除怎么设置啊?

答:貌似不支持,只有控制读写的权限。