1.检查是否安装vsftpd(服务端),ftp(客户端)。
2.vsftpd相关配置文件:
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。 黑名单
/etc/vsftpd/user_list:userlist_deny=no时,白名单 userlist_deny=yes时,黑名单
3.通过vsftpd.conf配置,实现本地用户登录ftp,并具有读写能力:
(1)建立维护网站内容的ftp 帐号team1 和team2 ,然后设置其密码
[[email protected] ~]# useradd team1
[[email protected] ~]# useradd team2
[[email protected] ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.
2)配置vsftpd.conf 主配置文件并作相应修改
[[email protected] vsftpd]# cp vsftpd.conf.back vsftpd.conf
[[email protected] vsftpd]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录
ocal_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:启用chroot(锁定用户根目录) 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
allow_writeable_chroot=YES :允许锁定的用户有写的权限
保存退出
(3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
[[email protected] vsftpd]# touch /etc/vsftpd/chroot_list
[[email protected] ~]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Nov 10 17:08 /etc/vsftpd/chroot_list
[[email protected] ~]# vim /etc/vsftpd/chroot_list #写入以下内容,一行,一个用户名
team1
team2
(5)修改本地权限
[[email protected] ~]# ll -d /var/www/html/
drwxr-xr-x. 2 root root 4096 Oct 6 2011 /var/www/html/
[[email protected] ~]# chmod -R o+w /var/www/html/
[[email protected] ~]# ll -d /var/www/html/
drwxr-xrwx. 2 root root 4096 Oct 6 2011 /var/www/html/
(6)重启vsftpd 服务使配置生效
service vsftpd restart
4.通过vsftpd.conf配置,实现虚拟用户登录ftp,并具有读写能力:
第1步:创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。 [[email protected] ~]# cd /etc/vsftpd/ [[email protected] vsftpd]# vim vuser.list zhangsan 123456 lisi 123456 用 db _ load 命令用哈希( hash)算法将原始的明文信息文件转换成数据库文件,并且降低 数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件 删除。 [[email protected] vsftpd]# db _ load -T -t hash -f vuser.list vuser.db [[email protected] vsftpd]# file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order) [[email protected] vsftpd]# chmod 600 vuser.db [[email protected] vsftpd]# rm -f vuser.list 第2步:创建一个与虚拟用户对应的系统本地用户,并为该用户指定用户ftp访问的家目录,并且不允许登录: [[email protected] ~]# useradd -d /var/ftproot -s /sbin/nologin virtual [[email protected] ~]# ls -ld /var/ftproot/ drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/ [[email protected] ~]# chmod -Rf 755 /var/ftproot/ 第3步:建立用于支持虚拟用户的 PAM 文件。 [[email protected] ~]# vim /etc/pam.d/vsftpd.vu auth required pam _ userdb.so db=/etc/vsftpd/vuser account required pam _ userdb.so db=/etc/vsftpd/vuser 第4步:在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证 文件的名称修改为 vsftpd.vu [[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous _ enable=NO 2 local _ enable=YES 3 guest _ enable=YES 第 11 章 4 guest _ username=virtual 5 allow _ writeable _ chroot=YES 6 write _ enable=YES 7 local _ umask=022 8 dirmessage _ enable=YES 9 xferlog _ enable=YES 10 connect _ from _ port _ 20=YES 11 xferlog _ std _ format=YES 12 listen=NO 13 listen _ ipv6=YES 14 pam _ service _ name=vsftpd.vu 15 userlist _ enable=YES 16 tcp _ wrappers=YES 第5步:为虚拟用户设置不同的权限。 [[email protected] ~]# mkdir /etc/vsftpd/vusers _ dir/ [[email protected] ~]# cd /etc/vsftpd/vusers _ dir/ [[email protected] vusers _ dir]# touch lisi [[email protected] vusers _ dir]# vim zhangsan anon _ upload _ enable=YES anon _ mkdir _ write _ enable=YES anon _ other _ write _ enable=YES 然后再次修改 vsftpd 主配置文件,通过添加 user _ config _ dir 参数来定义这两个虚拟用户 不同权限的配置文件所存放的路径 [[email protected] ~]# vim /etc/vsftpd/vsftpd.conf anonymous _ enable=NO local _ enable=YES guest _ enable=YES guest _ username=virtual allow _ writeable _ chroot=YES write _ enable=YES local _ umask=022 dirmessage _ enable=YES xferlog _ enable=YES connect _ from _ port _ 20=YES xferlog _ std _ format=YES listen=NO listen _ ipv6=YES pam _ service _ name=vsftpd.vu userlist _ enable=YES tcp _ wrappers=YES user _ config _ dir=/etc/vsftpd/vusers _ dir 重启vsftpd服务 [[email protected] ~]# systemctl restart vsftpd [[email protected] ~]# systemctl enable vsftpd ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi user.target.wants/vsftpd.service 11.2 vsftpd 服务程序 229 第6步:设置 SELinux 域允许策略 [[email protected] ~]# getsebool -a | grep ftp ftp _ home _ dir –> off ftpd _ anon _ write –> off ftpd _ connect _ all _ unreserved –> off ftpd _ connect _ db –> off ftpd _ full _ access –> off ftpd _ use _ cifs –> off ftpd _ use _ fusefs –> off ftpd _ use _ nfs –> off ftpd _ use _ passive _ mode –> off httpd _ can _ connect _ ftp –> off httpd _ enable _ ftp _ server –> off sftpd _ anon _ write –> off sftpd _ enable _ homedirs –> off sftpd _ full _ access –> off sftpd _ write _ ssh _ home –> off tftp _ anon _ write –> off tftp _ home _ dir –> off [[email protected] ~]# setsebool -P ftpd _ full _ access=on