centos6.5
vsftpd
安装vsftp软件包yum -y install vsftpdchkconfig vsftpd on
系统安全设置2.1 vi /etc/sysconfig/iptables(如果防火墙关闭,省略此步)-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT2.2 关闭selinux
重启服务service iptables reloadservice vsftpd reload++++++++++++++++++++
几点总结✔建议使用主动模式✔安装完vsftpd,会创建一个账户,ftp账户✔ftp账户家目录在 / var/ftp目录✔ftp账户家目录权限是755
创建上传目录cd /var/ftpmkdir upoadchown ftp. uploadchmod 755 upload
修改配置文件vsftpd.conf(确保如下字段行是取消注释的)anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES(匿名账户可以有删除的权限)
编辑配置文件vsftpd.conf#以下行注释anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES#以下行取消注释<禁锢用户在自己家目录>chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
增加虚拟账号useradd -d /data/ftpdata -s /sbin/nologin dbftppasswd dbftp请确认/data/ftpdata所有者所有组为dbftp
编辑chroot_listvi /etc/vsftp/chroot_list默认此文件不存在内容为刚刚创建的虚拟用户名,每个用户占一行dbftp
只允许特定账户登录系统添加一个用户也默认有ftp的登陆权限编辑配置文件vsftpd.conf文件最后添加两行userlist_deny=NOuserlist_file=/etc/vsftpd/user_list然后修改/etc/vsftpd/user_list文件,把允许登录的账户添加进去
vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账户分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式
安装依赖包yum install db4 db4-utils -y
创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码)vim /etc/vsftpd/virtual.users user1123user2456
生成虚拟用户认证的db文件db_load -T -t hash -f /etc/vsftpd/virtual.users /etc/vsftpd/vsftpd.login.db chmod 600 /etc/vsftpd/vsftpd.login.db
配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义)vim /etc/pam.d/vsftpd.pamauth required pam_userdb.so db=/etc/vsftpd/vsftpd.login account required pam_userdb.so db=/etc/vsftpd/vsftpd.login
配置vsftpd.conf,如下anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to blah FTP service.chroot_local_user=YESlisten=YESuserlist_enable=YESpam_service_name=vsftpd.pamguest_username=ftp guest_enable=YESuser_sub_token=$USERlocal_root=/var/ftp/virtual/$USERtcp_wrappers=YES
创建相应的虚拟用户目录,用于虚拟用户访问ftp服务所用到的默认目录mkdir -p /var/ftp/virtual/{user1,user2} chown ftp.ftp /var/ftp/virtual/{user1,user2} touch /var/ftp/virtual/user1/user1.txttouch /var/ftp/virtual/user2/user2.txt
经过上面配置,实现了如下功能✔可以创建很多虚拟账户且仅能访问ftp上各自虚拟家目录✔所有虚拟账户都可以上传、删除、创建、下载、重命名家目录里的文件或目录缺点是:所有虚拟账户权限都是统一的,现实里需求总是多变的,假如我想不同虚拟账户有不同的权限如何实现,见下文
基于上面我们创建两个用户user1和user2。我想user1具有全部权限,而user2尽具有上传权限。我们从基于虚拟账户统一认证第6步开始修改,1-5步不变。
配置vsftpd.conf,如下anonymous_enable=NOlocal_enable=YESlocal_umask=022anon_umask=022xferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to blah FTP service.chroot_local_user=YESlisten=YESuserlist_enable=YESpam_service_name=vsftpd.pamguest_username=ftp guest_enable=YESuser_config_dir=/etc/vsftpd/vsftpd_user_conftcp_wrappers=YES
mkdir -p /etc/vsftpd/vsftpd_user_conf在conf里创建 刚才用户名的配置文件 配置文件名要与用户名一样user1要有所有全部权限vi user1local_root=/opt/vsftp/user1write_enable=yesdownload_enable=yesanon_upload_enable=yesanon_mkdir_write_enable=yesanon_other_write_enable=yesanon_world_readable_only=noidle_session_timeout=600data_connection_timeout=120max_clients=2max_per_ip=3local_max_rate=512000user2只有上传和下载权限local_root=/opt/vsftp/user2write_enable=YESdownload_enable=yesanon_upload_enable=yesanon_other_write_enable=noanon_mkdir_write_enable=noanon_world_readable_only=no
更改虚拟用户目录权限为配置文件指定映射账户mkdir -p /opt/vsftp/{user1,user2}cd /optchown -R ftp. vsftp
经过上面配置,实现了如下功能✔不同用户具有不同的权限✔几个重要参数总结write_enable=YES (写权限)anon_mkdir_write_enable=YES (新建目录权限)anon_upload_enable=YES(上传权限)anon_other_write_enable=YES(删除/重命名的权限)
匿名上传的文件是禁止删除的