天天看点

3年后,基于mysql控制vsftp的用户认证机制

以前也做过,没有做记录,这次来个总结。

参考

<a href="http://nmshuishui.blog.51cto.com/1850554/1390942" target="_blank">http://nmshuishui.blog.51cto.com/1850554/1390942</a>

<a href="http://wangfeng7399.blog.51cto.com/3518031/1382881" target="_blank">http://wangfeng7399.blog.51cto.com/3518031/1382881</a>

<a href="http://ilanni.blog.51cto.com/526870/1391020" target="_blank">http://ilanni.blog.51cto.com/526870/1391020</a>

<code>yum -y </code><code>install</code> <code>vsftpd mysql-server mysql-devel pam_mysql</code>

<code>SET PASSWORD FOR </code><code>'root'</code><code>@</code><code>'localhost'</code> <code>= PASSWORD(</code><code>'xx'</code><code>);</code>

<code>create database vsftpd;</code>

<code>grant all on vsftpd.* to vsftpd@localhost identified by </code><code>'wangfeng7399'</code><code>;</code>

<code>grant all on vsftpd.* to vsftpd@</code><code>'127.0.0.1'</code> <code>identified by </code><code>'wangfeng7399'</code><code>;</code>

<code>flush privileges;</code>

<code>use vsftpd;</code>

<code>create table user(</code><code>id</code> <code>int AUTO_INCREMENT primary key NOT NULL,name varchar(50) binary NOT NULL, password char(48) binary NOT NULL);</code>

<code>insert into user(name,password)values(</code><code>'lili'</code><code>,password(</code><code>'wodehao123'</code><code>)),(</code><code>'tom'</code><code>,password(</code><code>'wodehao123'</code><code>));</code>

<code>vim </code><code>/etc/pam</code><code>.d</code><code>/vsftpd</code><code>.mysql</code>

<code>auth required </code><code>/lib64/security/pam_mysql</code><code>.so user=vsftpd </code><code>passwd</code><code>=xx host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2</code>

<code>account required </code><code>/lib64/security/pam_mysql</code><code>.so user=vsftpd </code><code>passwd</code><code>=xx host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2</code>

<code>useradd</code> <code>-s </code><code>/sbin/nologin</code> <code>-d </code><code>/var/ftproot</code> <code>vuser</code>

<code>chmod</code> <code>go+rx </code><code>/var/ftproot</code>

<code>chmod</code> <code>777 </code><code>/var/ftproot</code>

<code>cat</code> <code>/etc/vsftpd/vsftpd</code><code>.conf</code>

<code>anonymous_enable=YES</code>

<code>local_enable=YES</code>

<code>write_enable=YES</code>

<code>local_umask=022</code>

<code>#anon_upload_enable=NO</code>

<code>#anon_mkdir_write_enable=NO</code>

<code>chroot_local_user=YES</code>

<code>listen=YES</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vusers</code>

<code>pam_service_name=vsftpd.mysql</code>

<code>userlist_enable=YES</code>

<code>tcp_wrappers=YES</code>

<code>guest_enable=YES</code>

<code>guest_username=o2oeascs</code>

<code>#anon_umask=022</code>

<code>service vsftpd restart</code>

<code>配置vsftpd为虚拟用户使用配置文件目录</code>

<code>#vim /etc/vsftpd/vsftpd.conf</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vusers</code>  <code>#添加此项</code>

<code>cd</code> <code>/etc/vsftpd/</code>

<code>mkdir</code> <code>vusers </code>

<code>cd</code> <code>vusers </code>

<code>touch</code> <code>lili tom</code>

<code>vim lili</code>

<code>anon_upload_enable=YES</code>

<code>anon_mkdir_write_enable=YES</code>

<code>anon_other_write_enable=YES</code>

<code>anon_umask=022</code>

<code>表示lili允许用户上传文件、下载文件、删除文件、创建目录,tom则只允许用户下载,不允许上传</code>

<code>最后一步</code>

<code>权限控制</code>

<code>cat</code> <code>/etc/vsftpd/vusers/o2otest</code>

<code>local_root=</code><code>/var/ftpeascs/o2otest</code>

<code>主要增加local_root,让各自的虚拟用户只能在自己的目录建立文件。</code>

<code>vsftpd.conf一些详细参数</code>

<code>use_localtime=YES          </code><code>#ftp时间和系统同步,如果启动有错误,请注销</code>

<code>reverse_lookup_enable=NO   </code><code>#添加此行,解决客户端登陆缓慢问题!重要!默认vsftpd开启了DNS反响解析!这里需要关闭,如果启动有错误,请注销!</code>

<code>listen_port=21    </code><code>#默认无此行,ftp端口为21,添加listen_port=2222把默认端口修改为2222,注意:防火墙同时要开启2222端口</code>

<code>anonymous_enable=NO    </code><code>#禁止匿名用户</code>

<code>设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问</code>

<code>write_enable=YES         </code><code>#全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)</code>

<code>local_umask=022 设定上传后文件的权限掩码。</code>

<code>anon_upload_enable=NO 禁止匿名用户上传。</code>

<code>anon_mkdir_write_enable=NO  禁止匿名用户建立目录。</code>

<code>dirmessage_enable=YES 设定开启目录标语功能。</code>

<code>xferlog_enable=YES  设定开启日志记录功能。</code>

<code>connect_from_port_20=YES 设定端口20进行数据连接。</code>

<code>chown_uploads=NO 设定禁止上传文件更改宿主。</code>

<code>xferlog_file=</code><code>/var/log/vsftpd</code><code>.log  日志保存路径(先创建好文件)</code>

<code>xferlog_std_format=YES   </code><code>#使用标准格式</code>

<code>async_abor_enable=YES 设定支持异步传输功能。</code>

<code>ascii_upload_enable=YES</code>

<code>ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。</code>

<code>ftpd_banner=Welcome to Awei FTP servers 设定Vsftpd的登陆标语。</code>

<code>chroot_local_user=YES  禁止本地用户登出自己的FTP主目录。</code>

<code>pam_service_name=vsftpd 设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考</code><code>/etc/pam</code><code>.d/下的vsftpd文件配置。</code>

<code>userlist_enable=YES    设为YES的时候,如果一个用户名是在userlist_file参数指定的文件中,</code>

<code>那么在要求他们输入密码之前,会直接拒绝他们登陆。</code>

<code>tcp_wrappers=YES  是否支持tcp_wrappers</code>

<code>idle_session_timeout=300    </code><code>#超时设置</code>

<code>data_connection_timeout=1    </code><code>#空闲1秒后服务器断开</code>

<code>#########################################################</code>

<code>以下这些是关于Vsftpd虚拟用户支持的重要配置项目。</code>

<code>默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置</code>

<code>guest_enable=YES 设定启用虚拟用户功能。</code>

<code>guest_username=vsftpd 指定虚拟用户的宿主用户(这个是我们后面要新建的用户)</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vconf</code> <code>设定虚拟用户个人Vsftp的配置文件存放路径。</code>

<code>也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的</code>

<code>地方就是这些配置文件名必须和虚拟用户名相同。</code>

<code>比如说vsftpd.conf的配置文件,你复制到这个目录下,你要</code><code>mv</code><code>一下,配置成虚拟用户的名称</code>

<code>virtual_use_local_privs=YES     </code><code>#当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。</code>

<code>#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。</code>

<code>pasv_min_port=9000 (设置被动模式的端口范围)</code>

<code>pasv_max_port=9045 (设置被动模式的端口范围)</code>

<code>accept_timeout=5   </code><code>#保持5秒</code>

<code>connect_timeout=1  </code><code>#1秒后重新连接</code>

看效果,flashfxp测试,几步就搞定了

自己搞了好几次,才搞出来。

完工。

<code>只读</code>

<code>anon_upload_enable</code><code>=</code><code>YES</code>

<code>write_enable</code><code>=</code><code>YES</code>

<code>anon_world_readable_only</code><code>=</code><code>NO</code>

<code>anon_upload_enable</code><code>=</code><code>NO</code>

<code>#anon_mkdir_write_enable=YES</code>

<code>#anon_other_write_enable=YES</code>

<code>anon_umask</code><code>=</code><code>022</code>

<code>local_root</code><code>=</code><code>xx</code>

<code>不能删除</code>

<code>anon_mkdir_write_enable</code><code>=</code><code>YES</code>

<code>anon_other_write_enable</code><code>=</code><code>YES</code>

<code>local_umask</code><code>=</code><code>022</code>

<code>download_enable</code><code>=</code><code>YES</code>

<code>cmds_allowed</code><code>=</code><code>ABOR,CWD,</code><code>LIST</code><code>,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SITE,SIZE,STOR,</code><code>TYPE</code><code>,USER,ACCT,APPE,CDUP,</code><code>HELP</code><code>,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR</code>

<code>cat vsftpd.conf</code>

<code>anonymous_enable</code><code>=</code><code>NO</code>

<code>local_enable</code><code>=</code><code>YES</code>

<code>anon_mkdir_write_enable</code><code>=</code><code>NO</code>

<code>chroot_local_user</code><code>=</code><code>YES</code>

<code>#chroot_list_enable=YES</code>

<code>listen</code><code>=</code><code>YES</code>

<code>user_config_dir</code><code>=</code><code>/</code><code>etc</code><code>/</code><code>vsftpd</code><code>/</code><code>vusers</code>

<code>pam_service_name</code><code>=</code><code>vsftpd.mysql</code>

<code>userlist_enable</code><code>=</code><code>YES</code>

<code>tcp_wrappers</code><code>=</code><code>YES</code>

<code>guest_enable</code><code>=</code><code>YES</code>

<code>guest_username</code><code>=</code><code>xx</code>

<code>pasv_min_port</code><code>=</code><code>10600</code>

<code>pasv_max_port</code><code>=</code><code>12000</code>

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1833985,如需转载请自行联系原作者

继续阅读