Vsftpd 三种用户模式
命令行模式下登录后,执行 help 可以看下能执行的命令有哪些。ls 查看服务器上的文件,!ls 查看本地的文件
匿名用户(不安全)
使用 ftp 或 anonymous 用户登录,而不需要输入密码,默认访问的目录是 /var/ftp
(这个目录的权限不能被设置为 777)
相关配置:
anonymous_enable=YES
anno_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
SELinux 会导致无法上传:
[root@zhpj ~]# getsebool -a | grep ftp
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
tftp_anon_write --> off
tftp_home_dir --> off
[root@zhpj ~]#
需要开启 ftpd_anon_write
和 ftpd_full_access
[root@zhpj ~]# setsebool -P ftpd_anon_write on
[root@zhpj ~]#
[root@zhpj ~]# setsebool -P ftpd_full_access on
[root@zhpj ~]#
本地用户(较不安全)
通过系统本地用户登录,需要输入密码。
相关配置:
local_enable=YES
write_enable=YES
local_umask=022
# 下面两行限制通过 ftp 登录后限制在用户的家目录里(手册里并不建议开启此选项)
#chroot_local_user=YES
#allow_writeable_chroot=YES
ftpusers 是黑名单,user_list 可以是黑名单也可以是白名单。ftpusers 的优化级大于 user_list 的。
[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): root
530 Permission denied.
Login failed.
ftp>
默认 userlist_deny
为 YES,user_list 中的用户禁止登录:
[root@zhpj ~]# cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@zhpj ~]#
[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): zhpj01
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> pwd
257 "/home/zhpj01" is the current directory
ftp>
默认情况下无法下载隐藏文件:
ftp> put anaconda-ks.cfg
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,71,128,75,126).
150 Ok to send data.
226 Transfer complete.
975 bytes sent in 0.000513 secs (1900.58 Kbytes/sec)
ftp>
ftp> get test_tr.txt
local: test_tr.txt remote: test_tr.txt
227 Entering Passive Mode (192,168,71,128,73,171).
150 Opening BINARY mode data connection for test_tr.txt (385 bytes).
226 Transfer complete.
385 bytes received in 0.000456 secs (844.30 Kbytes/sec)
ftp>
ftp> get .local
local: .local remote: .local
227 Entering Passive Mode (192,168,71,128,27,61).
550 Failed to open file.
ftp>
虚拟用户(安全)
用户名和密码保存到数据库文件,将虚拟机用户映射到无法登录系统的用户上。
创建用户列表 vuser.list
,单行是用户名,双行是密码:
[root@zhpj ~]# vim /etc/vsftpd/vuser.list
[root@zhpj ~]# cat /etc/vsftpd/vuser.list
abc
123
def
123
[root@zhpj ~]#
通过 db_load 将明文密码转为加密的:
[root@zhpj ~]# yum install -y libdb-utils
[root@zhpj ~]#
[root@zhpj ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
[root@zhpj ~]#
[root@zhpj ~]# chmod 600 /etc/vsftpd/vuser.db
[root@zhpj ~]#
PAM模块——可插拔认证模块
创建认证配置,并将配置文件名称替换到 vsftpd.conf 文件中(pam_service_name=vsftpd.vu
)
[root@zhpj ~]# vim /etc/pam.d/vsftpd.vu
[root@zhpj ~]#
[root@zhpj ~]# cat /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@zhpj ~]#
修改 vsftpd 的配置文件:
guest_enable=YES
guest_username=www
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vusers.d
#pam_service_name=vsftpd
pam_service_name=vsftpd.vu
创建每个用户的虚拟配置文件:
[root@zhpj ~]# mkdir /etc/vsftpd/vusers.d
[root@zhpj ~]#
[root@zhpj ~]# touch /etc/vsftpd/vusers.d/{abc,def}
[root@zhpj ~]#
[root@zhpj ~]# vim /etc/vsftpd/vusers.d/abc
[root@zhpj ~]# cat /etc/vsftpd/vusers.d/abc
virtual_user_local_privs=YES
local_umask=022
# 给这个虚拟用户设置独立的目录
# local_root=/custom/path
[root@zhpj ~]#
创建虚拟用户映射到的系统用户(此用户禁止登录系统):
[root@zhpj ~]# groupadd -r www && useradd -r -g www -s /sbin/nologin -m www
[root@zhpj ~]#
使用虚拟的 ftpd 用户登录:
[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): abc
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> pwd
257 "/home/www" is the current directory
ftp>
标签:ftp,ftpd,vsftpd,zhpj,etc,用户,Vsftpd,三种,root From: https://www.cnblogs.com/zhpj/p/18391653/vsftpd-three-user-mode-z25mla