虚拟用户登陆
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.置虚拟用户禁止删除怎么设置啊?
答:貌似不支持,只有控制读写的权限。