-
下载安装vsftpd ftp
yum install -y vsftpd ftp
-
启动ftp服务
systemctl start vsftpd.service
-
设置开机自启
systemctl enable vsftpd.service
-
连接
ftp localhost(ip)
quit
-
添加普通用户和密码
id user1
echo 123 | passwd --stdin user1
vsftpd服务配置文件
- /etc/vsftpd/vsftpd.conf 主配置文件
-
/etc/vsftpd/ftpusers
-
/etc/vsftpd/user_list
ftp可以有3种登录用户:
- 匿名用户 ftp:共享数据资源 资源不受限 任何人都可以访问
-
系统普通账号
-
虚拟用户:系统用户有安全隐患,且读取用户和密码速度比较慢,不适合大型ftp服务,虚拟用户登录方式比较安全
vsftp虚拟用户
1. 建立系统账户vuser,用来映射虚拟账户,但是该账户要设置成不允许登录
useradd vuser -d /home/ftp -s /sbin/nologin
建立用户文件目录,且不能终端登录,只用来做虚拟用户的映射
cd /home
chmod 755 ftp/
修改文件目录权限为755,否则无法下载(读取)
2. 建立虚拟用户
cd /etc/vsftpd/
vim vuser.temp
存放虚拟用户名和密码,奇数行为用户名,偶数行为密码,但是该账户是无法被vsftpd认证的,也就是无法直接远程登录(明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式),需要转换成伯 克利db(使用db_load命令 hash算法将明文信息虚拟用户文件转换成db文件),并降低此文件的权限,只有root用户可实行读写。
db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
rm -rf vuser.temp
3. 现在虚拟用户和用于映射的vuser账户都有了,ftp如何能找到虚拟用户文件进行认证呢?
答案是PAM服务,PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。
pam也有自己的配置文件,新建一个用于虚拟用户认证的PAM配置文件vsftpd.vuser
vim /etc/pam.d/vsftpd.vuser
写入下面两行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
auth是进行验证的,account是为用户提供资源的
4. 配置ftp主配置文件,使服务启动时,能够准确找到认证文件。
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES 添加:支持虚拟用户
guest_username=vuser 添加:虚拟用户指定映射账户
allow_writeable_chroot=YES 添加:支持虚拟用户的读写
pam_service_name=vsftpd.vuser 修改
user_config_dir=/etc/vsftpd/vuserconfig 添加:虚拟用户的控制文件路径
5. 配置虚拟用户文件,对不同的登录用户进行分别控制。在vsftpd文件目录下新建一个文件目录vuserconfig
mkdir -p /etc/vsftpd/vuserconfig
cd /etc/vsftpd/vuserconfig/
对不同的用户创建同名的文件,比如对u1用户创建u1文件
touch u1
vim u1
local_root=/home/ftp 虚拟用户登陆后会访问到的目录
write_enable=YES 是否可写
anon_umask=022
anon_world_readable_only=NO 是否只可读
anon_upload_enable=YES 可上传
anon_mkdir_write_enable=YES 可建立目录可写
anon_other_write_enable=YES
download_enable=YES 可下载
保存退出
6. 重启vsftpd服务
systemctl restart vsftpd.service
登录ftp
ftp localhost
U1
密码
ls
get/put…
quit