权限开关
-
3.0版本后, local_root必须是r+x, 切不能用w权限, 而且主配置中需要加入allow_writeable_chroot=YES
1. 目录锁定
1. chroot_local_user=YES/NO # 全局限制,限制用户是否锁定主目录 2. chroot_list_enable=YES/NO # 当1上面配置YES或者NO时,这里的YES或者NO是否开启例外 3. chroot_list_file=/etc/vsftpd/chroot_list # 当2上面配置YES时,chroot_list里的例外用户生效
情况示例:
# 情况1: chroot_local_user=YES chroot_local_user=YES时,开启全局用户锁定主目录,所有ftp用户,限制主目录 chroot_list_enable=YES,时启用例外 chroot_list_file里配置的例外用户,不受限制 # 情况2: chroot_local_user=NO chroot_local_user=NO时,关闭全局用户锁定主目录,所有ftp用户,不限制主目录 chroot_list_enable=YES时,启用例外 chroot_list_file里配置的里外用户,受限制
目录锁定
示例: 本地loan用户锁定到/data/dics_files
1. vsftpd.conf配置
user_config_dir=/etc/vsftpd/user_conf
2. user_conf配置
mkdir -pv /etc/vsftpd/user_conf/loan vim /etc/vsftpd/user_conf/loan // 加入如下 local_root=/data/dics_files chroot_local_user=YES allow_writeable_chroot=YES
常见报错
1. 报错: ls: 登录失败: 500 OOPS: cannot change directory:/data/nfs/dics_files 可能原因: 上级目录没有可读权限 2. 报错: ls: 登录失败: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 可能原因: 没有配置allow_writeable_chroot=YES
虚拟用户
1. 基础信息
-
示例虚拟用户:
loan
-
FTP 根目录:
/data/dics_files
-
虚拟用户映射系统账户:
ftp
-
配置目录:
/etc/vsftpd
-
用户配置目录:
/etc/vsftpd/user_config
-
虚拟用户凭证文件:
/etc/vsftpd/user_config/auth
创建虚拟用户目录并授权
mkdir -p /data/dics_files chown -R ftp:ftp /data/dics_files chmod 755 /data
2. 安装vsftpd
yum install -y vsftpd libdb-utils useradd -s /sbin/nologin ftp
3. 配置认证
创建认证文件
mkdir -p /etc/vsftpd/user_config cat > /etc/vsftpd/user_config/auth <<EOF loan 123456 EOF
生成DB格式认证库
db_load -T -t hash -f /etc/vsftpd/user_config/auth /etc/vsftpd/user_config/auth.db chmod 600 /etc/vsftpd/user_config/auth*
4. 配置PAM
创建 PAM 文件 /etc/pam.d/vsftpd
(如果已有请备份):
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak.$(date +%Y%m%d) cat > /etc/pam.d/vsftpd <<EOF auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user_config/auth account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user_config/auth EOF
5. 配置 vsftpd 主配置文件
listen=YES listen_port=21 anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log chroot_local_user=YES chroot_list_enable=NO pam_service_name=vsftpd user_config_dir=/etc/vsftpd/user_config guest_enable=YES guest_username=ftp virtual_use_local_privs=YES reverse_lookup_enable=NO allow_writeable_chroot=YES # 被动模式设置(可选,适用于防火墙穿透) pasv_enable=YES pasv_min_port=50000 pasv_max_port=50100
防火墙配置:
# 这里的50000到50100是ftp的随机端口,在配置文件里设置上限下限,然后在防火墙里开启这段端口即可,否则会造成访问ftp的各种问题 iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT
6. 配置虚拟用户专属配置文件
local_root=/data/dics_files write_enable=YES download_enable=YES local_umask=022 anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
各种权限配置
虚拟用户权限 1.所有权限 write_enable=YES anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=Yes local_root=/data/user1 2.上传权限 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=NO local_root=/data/user2 3.下载权限 write_enable=NO anon_world_readable_only=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO local_umask=022 download_enable=yes local_root=/data/user3 4.只能删,不能传 virtual_use_local_privs=NO write_enable=YES anon_world_readable_only=NO anon_other_write_enable=YES local_umask=022 download_enable=Yes local_root=/data/user4 5.虚拟用户高级设置 1、virtual_use_local_privs参数 当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限 当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。 当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传 下载 删除 重命名) 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权