我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
本地用户登录:使用系统用户登录,在/etc/passwd中。
虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。
FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。
使用vsftpd搭建FTP服务,并使用虚拟用户登录
1、安装vsftpd
使用yum工具安装vsftpd包,如下所示:
yum -y install vsftpd db4-utils
db4-utils包用来生成密码库文件
2、建立账号
vsftpd默认可以支持使用系统账号体系登录,但那样不太安全,所以建议使用虚拟账号登录。
建立虚拟登录账号
useradd virftp -s /sbin/nologin
建立与虚拟账号相关的文件
vim /etc/vsftpd/vsftpd_login
//内容如下
zpy //用户名
1qaz@WSX? //密码
chmod 600 /etc/vsftpd/vsftpd_login
//修改文件权限,提升安全级别
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
//生成vsftpd密文密码
mkdir /etc/vsftpd/vsftpd_user_conf
//建立与虚拟账号相关的目录以及配置文件
3、创建与用户对应的配置文件
cd /etc/vsftpd/vsftpd_user_conf
vim zpy
//每个用户都有一个自己的配置文件,文件名与用户名一致,具体内容如下:
local_root=/data/ftp //zpy用户的家目录
anonymous_enable=NO //禁用匿名登陆
write_enable=YES //可写
local_umask=022 //指定umask
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
mkdir /data/ftp
//创建zpy家目录
touch /data/ftp/test1.txt
//创建文件用来测试
chown -R virftp.virftp /data/ftp
vim /etc/pam.d/vsftpd
//在开头添加如下两行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
4、修改vsftpd的主配文件/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
//修改如下内容(新添加的内容后面一定不能有空格,前车之鉴):
anonymous_enable=NO
再添加如下内容:
chroot_local_user=YES //将所有用户限制在主目录
guest_enable=YES //开启虚拟用户
guest_username=virftp //虚拟用户所映射的本地用户
virtual_use_local_privs=YES //使虚拟用户拥有和本地用户一样的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf //定义用户配置文件的目录
allow_writeable_chroot=YES
5、启动vsftpd并测试
systemctl start vsftpd
systemctl enable vsftpd
用其他主机下载lftp测试
yum -y install lftp
lftp zpy@10.1.13.14
Password:
lftp zpy@10.1.13.14:~>ls
-rw-r--r-- 1 1003 1003 0 Dec 25 05:08 test1.txt
网友评论