新建总虚拟账户virtusers,
修改用户家目录 usermod -d /var/ftp/ virtusers
修改/opt/vsftp/passwd
需要 生成虚拟用户数据文件
db_load -T -t hash -f /opt/vsftp/passwd /opt/vsftp/passwd.db
需要注意的是,以后对虚拟用户的增删操作完之后需要再次执行上述命令,使其生成新的数据文件
然后重新启动vsftpd
=============================================================
限制用户登录权限:
userlist_enable=YES
然后把需要限制的用户添加进文件/etc/vsftpd/user_list当中去。
=============================================================
新建用户并限制访问的目录文件夹:
https://zhidao.baidu.com/question/2205911713706365028.html (好像说反了,没在文件 /etc/vsftpd/chroot_list里面设置的用户名才会限制访问目录)
(1)用户ftptest为useradd创建的用户,相关设置,限制访问默认目录,及访问的默认目录
chroot_local_user=YES #(修改为NO以后,虚拟账户就不限制切换上下级目录了)
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
local_root=/var/ftp/pub
anon_root=/var/ftp/pub[root@smcweb01 ~]# cat /etc/vsftpd/chroot_list
user2
[root@smcweb01 ~]#
(2)虚拟用户test,相关配置,及访问的默认目录
在这个文件内设置:/etc/vsftpd/vconf/test
/opt/vsftp/passwd
设置PAM验证文件,并制定虚拟用户数据库文件进行读取: /etc/pam.d/vsftpd
#####64位系统配置
auth sufficient /lib64/security/pam_userdb.so db=/opt/vsftp/passwd
account sufficient /lib64/security/pam_userdb.so db=/opt/vsftp/passwd
=============================================================
我的vsftpd.conf设置内容如下:::::::
# grep -v '^#' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=3600
nopriv_user=vsftpd
async_abor_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
local_root=/var/ftp/pub
anon_root=/var/ftp/pub
ls_recurse_enable=NO
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=virtusers
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
reverse_lookup_enable=NO
=============================================================
CentOS7搭建FTP服务器
以下操作均要以ROOT身份进行。
一、设置用户账号。
#创建用于登陆的FTP的账号
useradd myftp -s /sbin/nologin -U
#修改myftp密码
passwd myftp
二、修改vsftpd的主要配置文件。
#修改/etc/vsftpd/vsftpd.conf 文件,确认以下内容是否一致:
#允许用账号密码的方式登陆
local_enable=YES
#允许文件的写入操作
write_enable=YES
#连接的超时时间设定
idle_session_timeout=600
data_connection_timeout=120
#所有登陆的用户都作为nobody身份,更安全。
nopriv_user=nobody
#以下内容默认是没有,添加进vsftpd.conf 文件的最后
#使用被动模式连接
pasv_enable=YES#被动模式超时时间
accept_timeout=60#被动模式所使用的端口范围
pasv_min_port=65400
pasv_max_port=65410#启动并指定开放的用户列表
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
#监听的端口
listen_port=21
listen=YES
#开放用户账号登陆
guest_enable=YES
guest_username=ftp#限制用户的上传下载速度,0为不限制,单位: bytes/秒
local_max_rate=0#限制登陆用户的到默认的位置,默认为/var/ftp文件夹
chroot_local_user=YESchroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#进入文件夹后提示的欢迎内容,如果没有/etc/vsftpd/welcome.txt这个文件就自己新建一个,随便写点东西进去。
dirmessage_enable=YES
banner_file=/etc/vsftpd/welcome.txt
#使用pam托管的账号
pam_service_name=vsftpd
#允许上传等写入操作anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
三、创建必须的文件
检查下/etc/vsftpd/目录里是否有以下3个文件,如果没有就建个空的。
chroot_list 这个一般是没有的,建个空的吧
user_list 这个一般默认就存在,里面存放允许登陆的账号,一行一个账号名,如果不想让某个账号登陆ftp,那么这里就别填那个账号进来。
ftpusers 这个一般默认就存在,里面存放禁止登陆的账号,一行一个账号名。
PS:user_list和ftpusers功能差不多的,可以只用user_list 这个来管理,把 ftpusers 里面内容都删掉。
四、允许第一步创建的账号名myftp登陆。
在/etc/vsftpd/user_list 添加一行内容是myftp
查验一下/etc/vsftpd/ftpusers是否有myftp,如果有,就要删掉,不然就被禁止登陆了。
五、创建用于ftp的文件夹
mkdir -p /var/ftp
六、创建允许ftp用户操作的文件夹
mkdir -p /var/ftp/share
chmod 777 /var/ftp/share
七、防火墙开放相关的端口,并重启防火墙,输入以下指令,一行一行运行:
firewall-cmd --permanent --zone=public --add-port=20/tcp
firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp
firewall-cmd --permanent --zone=trusted --add-port=20/tcp
firewall-cmd --permanent --zone=trusted --add-port=21/tcp
firewall-cmd --permanent --zone=trusted --add-port=65400-65410/tcp
systemctl restart firewalld.service
#可以通过以下指定查看端口是否已添加进去
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=trusted --list-ports
八、selinux开放相关权限,并重启selinux:
setsebool -P ftpd_full_access 1
setenforce 0
setenforce 1
#可以通过以下指令查看ftpd_full_access 是否为ON状态
getsebool -a|grep ftpd_full_access
九、启动ftp服务
systemctl restart vsftpd.service
#如果想开机启动ftp还要运行以下指令:
systemctl enable vsftpd.service
十、现在可以尝试用ftp账号登陆了,可以参考下图,登陆时间可能需要几秒,如果登陆不了就重启服务器再试下吧。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
更改ftp访问的共享文件夹
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可:
加入如下几行:
local_root=/var/www/html
chroot_local_user=YES
anon_root=/var/www/html
注:local_root 针对系统用户;anon_root 针对匿名用户。
重新启动服务:
service vsftpd restart
任何一个用户ftp登录到这个服务器上都会chroot到/var/www/html目录下。
=======================================================
问题:用户不能上传文件?注意修改文件目录权限 chmod 777 就可以了
=======================================================