Operating System: Red Hat Enterprise Linux Server 7.0 (Maipo)
500 ###权力过大
530 ###认证失败
550 ###无写权限
553 ###权限问题
yum install vsftpd -y ###安装vsftpd服务
systemctl start vsftpd ###启动服务
systemctl stop firewalld ###关闭防火墙
systemctl enable vsftpd ###开机自动启动服务
可通过rpm -qc vsftpd 查出配置文件的目录
/var/ftp ###默认发布目录
/etc/vsftpd ###配置目录
vim /etc/vsftpd/vsftpd.conf ###配置文件
anonymous_enable=YES|NO ###匿名用户登陆限制(YES为默认,即可以登陆)
vim /etc/vsftpd/vsftpd.conf
write_enable=YES ###匿名用户可写权限
anon_upload_enable=YES ###匿名用户上传权限(29行)
chgrp ftp /var/ftp/pub或chown .ftp /var/ftp/pub
chmod 775 /var/ftp/pub
如果不改权限
lftp 172.25.254.156:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd) ###权限报错
anon_root=/dream ###在配置中加入
anon_root=/dream ###把家目录修改注释掉
anon_umask=000 ###在配置中加入
可以发现匿名用户上传的文件权限变为666了
anon_umask=000 ###把默认权限修改注释掉
anon_mkdir_write_enable=YES ###可以创建目录(35行)
可通过man vdftpd.conf查到
anon_world_readable_only=YES|NO ###YES表示用户只能读,设定参数值为NO表示匿名用户可以下载
anon_other_write_enable=YES|NO ###YES后可以删除与更名
chown_uploads=YES ###打开后将会以chown_username设定的用户登陆
chown_username=dream ###匿名用户指定的登陆用户(52行)
chown_upload_mode=0644 ###上传生成的文件权限(优先它的权限)
我们不难可以看出匿名用户以dream的身份登陆
anon_max_rate=102400 ###设置上线为100KB
max_clients=1 ###设置连接数为1
local_enable=NO ###本地用户登陆限制
write_enable=YES ###把本地用户登陆限制改成YES便可以登陆了
local_root=/dream ###此目录有我们之前建好的东西
local_umask=022
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
如果不改变权限会有500报错
修改权限后
用户白名单名单建立
chroot_local_user=YES ###YES时为白名单只有名单中的用户能改变目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户黑名单名单建立
chroot_local_user=NO ###NO时只有名单中的用户不能改变目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户黑名单设定
vim /etc/vsftpd/ftpusers ###用户黑名单
vim /etc/vsftpd/user_list ###用户临时黑名单
用户白名单设定
注意:如果在/etc/vsftpd/user_list中设置dream用户,/etc/vsftpd/ftpusers也设置,用户dream将不能登陆
userlist_deny=NO ###修改配置
/etc/vsftpd/user_list ###此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
[root@ftp ~]# vim /etc/vsftpd/dream ###名字可以任意
[root@ftp ~]# cat /etc/vsftpd/dream
dream1
123
dream2
123
dream3
123
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/dream /etc/vsftpd/dream.db ###加密帐号密码
[root@ftp ~]# ls /etc/vsftpd/
chroot_list dream.db user_list vsftpd_conf_migrate.sh
dream ftpusers vsftpd.conf
我们可以看一下默认的路径,其实我们现在就是在建立这个的过程中
[root@ftp pam.d]# vim /etc/pam.d/dream
[root@ftp pam.d]# cat /etc/pam.d/dream
account required pam_userdb.so db=/etc/vsftpd/dream
auth required pam_userdb.so db=/etc/vsftpd/dream
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=dream ###制定读取的文件为/etc/pam.d/dream
guest_enable=YES ###虚拟用户登陆
guest_username=dream ###登陆虚拟用户时以dream用户身份登陆
如果不可以登陆500报错,表示权限过大执行:chmod u-w /home/dream
可以发现上面的方法登陆的目录都为dream的目录,下面就是家目录的独立的方法介绍
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USE
[root@ftp pam.d]# mkdir -p /ftphome/dream{1..3}/pub
[root@ftp pam.d]# chown .dream -R /ftphome/
[root@ftp pam.d]# chmod g+s /ftphome/ -R ###让自己可以删除自己的建的文件
[root@ftp pam.d]# touch /ftphome/dream1/pub/file1
[root@ftp pam.d]# touch /ftphome/dream2/pub/file2
[root@ftp pam.d]# touch /ftphome/dream3/pub/file3
[root@ftp pam.d]# systemctl restart vsftpd.service
把虚拟用户的权限关了
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
[root@ftp pam.d]# mkdir -p /etc/vsftpd/userconf
[root@ftp pam.d]# vim /etc/vsftpd/userconf/dream1
[root@ftp pam.d]# systemctl restart vsftpd.service
/etc/vsftpd/userconf/dream1中的配置
配置vsftpd.conf
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd ###修改回vsftpd
配置pam.d
[root@ftp pam.d]# vim /etc/pam.d/vsftpd
###这二条要写到上面,下面会报错,required不能进行认证,修改为sufficient
account sufficient pam_userdb.so db=/etc/vsftpd/dream
auth sufficient pam_userdb.so db=/etc/vsftpd/dream
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ft
pusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
这样普通用户和虚拟用户就可以同时进行登陆了!!!