知识大全 Debian+vsftpd+MySQL实现虚拟用户

Posted

篇首语:对于攀登者来说,失掉往昔的足迹并不可惜,迷失了继续前时的危险。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Debian+vsftpd+MySQL实现虚拟用户相关的知识,希望对你有一定的参考价值。

Debian+vsftpd+MySQL实现虚拟用户  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    前些天用vsftpd+mysql实现虚拟用户登录 把偶的菜鸟笔记和大家分享一下 有什么问题请指正特别申明:本文不适合Linux老鸟们 HTML版本: Debian+vsftpd+MySQL实现虚拟用户(posted by guitarbug @ ) 一 需求 虚拟用户登录    由于之前配置成功了postfix+MySQL虚拟用户登录 体会到了使用虚拟用户的好处和灵活性 所以这次也考虑采用虚拟用户 并且将FTP虚拟用户的信息也存储在MySQL中 这样以后用PHP等写一些WEB GUI的管理程序 统一管理用户 还是蛮方便的 限制IP的匿名登录    开放匿名登录 但是只允许特定的IP可以匿名登录 不同用户 不同目录 不同权限    听起来有点像绕口令吧 举例来说 有 个用户 分别是普通用户(normal)和管理员(admin) FTP有 个目录 分别是ining和pub 要实现如下权限设置: 代码:

  ining pub normal 读/写 只读 admin 读/写 读/写

通过FTP管理Web站点    服务器上还架设了Apache 而网站管理员对Linux又不是很熟悉 而且也不想开放一个帐号给网站管理员 以免他登录到系统上去 把系统搞的乱 糟 所以参考Internet上提供虚拟主机的流行做法 就是通过FTP来管理网站 所以需要提供一个可供网站管理员登录FTP进行网站管理的帐号 扩展功能    待定 二 选择FTP服务器软件    Linux下架设FTP站点 有很多优秀的FTP服务器软件可供选择 例如Wu FTPD Pure FTPD ProFTPD以及vsFTPD等等 要想选择一个适合自己需求的FTP服务器软件 也需要费点脑筋才行 对于我来说 选择 vsftpd(very secure FTP daemon) 主要有以下两点原因: 选择原则一    有人说 哪个FTPD是你最熟悉的就用哪个 不过由于我之前没有在Linux下架设FTP站点的经验 所以 对我来说 一切都是新的起点 在vsftpd的官方主页上看到了Debian官方FTP RH官方FTP等都使用了vsftpd 于是 随波逐流 吧 这样看起来会有面子些~ 选择原则二    第二点很大程度取决于vsftpd(very secure FTP daemon)的名字 因为它是很安全的FTP软件嘛 哈哈 再说Debian官方等FTP都使用了vsftpd 选择它应该没错的~PS:FTP服务器软件的选择可以参考 鸟哥的Linux私房菜中的简易vsftpd服务器架设 一文 三 实现    基于Debian GNU/Linux Sarge 和 vsftpd 需要的软件包 ) vsftpd    very secure FTP daemon ) mysql server mysql client    前者是MySQL数据库服务器 用于存储虚拟用户信息 后者提供一个命令行的MySQL Client 由于我之前配置postfix时 已经安装过了MySQL 所以我不必安装这个包了^_^ ) libpam mysql     vsftpd是通过PAM验证用户信息的 这个包可以让PAM去读取MySQL完成验证 安装以root登录Debian 输入以下命令 搞定~ 代码:

  #apt get install vsftpd libpam mysql

创建一个必要的本地用户    虽说是虚拟用户 不过 由于虚拟用户的信息存储在MySQL数据库中 所以还是需要一个能够读取MySQL数据库的本地用户 ) 创建本地用户的家目录 此目录也是FTP的家目录 代码:

  #mkdir /home/ftp

) 创建名为ftpguest的本地用户 代码:

  #useradd ftpguest d /home/ftp

) 修改FTP家目录的所有者和组 代码:

  #chown ftpguest nogroup /home/ftp

   

   配置MySQL数据库 ) 创建用于存储虚拟用户信息的数据库ftpvuser

代码:

  #mysqladmin u root p create ftpvuser

) 连接数据库 代码:

  #mysql u root p

)创建用于存储虚拟用户信息的表users 代码:

  mysql>use ftpvuser; mysql>CREATE TABLE users (username varchar( ) NOT NULL password varchar( ) NOT NULL PRIMARY KEY (username)) TYPE=MyISAM;

)让本地用户ftpguest能读取ftpvuser数据库的users表的内容注:YourPassword用于设定ftpguest访问数据库的密码 代码:

  mysql>grant select on ftpvuser users to ftpguest@localhost identified by YourPassword ; mysql>flush privileges;

) 建立虚拟用户 代码:

  mysql>insert into users (username password) values ( normal ); mysql>insert into users (username password) values ( admin ); mysql>insert into users (username password) values ( webmaster );

) 完成MySQL的配置 代码:

  mysql>quit;

配置vsftpd的PAM验证 ) 打开PAM配置文件 代码:

  #nano /etc/pam d/vsftpd

) 将以前的内容注释掉 然后添加下面 行内容注:YourPassword就是刚才在前面设定的ftpguest访问数据库的密码 代码:

  auth required pam_mysql so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt= account required pam_mysql so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=

配置vsftpd ) 打开vsftpd的配置文件 代码:

  #nano /etc/nf

注意:一旦修改了/etc/nf文件的内容 必须重启vsftpd才能使新的设置生效 方法是: 代码:

  #/etc/init d/vsftpd stop #/etc/init d/vsftpd start

直接#/etc/init d/vsftpd restart 好像不起作用? ) 修改nf文件如下 代码:

  #关闭匿名用户访问 #anonymous_enable=YES #开启本地用户访问 local_enable=YES #开启虚拟用户访问 guest_enable=YES guest_username=ftpguest #将本地用户限制在自己的家目录 这样可避免FTP用户访问到其他的系统目录 chroot_local_user=YES

) OOPS: cap_set_proc    赶快登录FTP试一下吧 不过为什么无法登录呢?服务器返回错误: OOPS: cap_set_procGoogle之 这个错误似乎与SELinux有关 解决办法是加载capability模块: 代码:

  #modprobe capability

  为了让Linux在启动时自动加载此模块 把这个模块放到/etc/modules中即可

   ) 限制IP的匿名登录    要想限制登录vsftpd的客户端的IP地址 要用到一个叫TCP Wrappers的东东 对于TCP Wrappers 我的理解是 如果在vsftpd中启用了TCP Wrappers的话 每次客户端向vsftpd发起一个连接请求的时候 vsftpd首先会把这个连接请求交给TCP Wrappers处理 如果客户端的IP被TCP Wrappers放行的话 才能继续与vsftpd继续会话 否则 直接就被拒绝服务了 不知道对不对?a 修改/etc/nf

代码:

  #启用TCP Wrappers tcp_wrappers=YES

b 修改/etc/hosts deny    拒绝所有向vsftpd发起连接请求的IP 不过 如果hosts deny与hosts allow冲突的话 以hosts allow优先处理 这好像就是 先deny所有 然后在hosts allow开放特权 呵呵 代码:

  #拒绝所有连入vsftpd的IP先 vsftpd: ALL

c 修改/etc/hosts allow    在这里开放允许登录vsftpd的IP地址关于VSFTPD_LOAD_CONF环境变量 vsftpd的man是这么说的: If tcp_wrappers sets the VSFTPD_LOAD_CONF environment variable then the vsftpd session will try and load the vsftpd configuration file specified in this variable 代码:

  #限制可以匿名登录vsftpd的IP地址 vsftpd: : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd anonymous #允许vsftpd的虚拟用户以任何IP连接FTP vsftpd: ALL : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd virtual

d 修改/etc/vsftpd/vsftpd anonymous 代码:

  #mkdir /etc/vsftpd/ #nano /etc/vsftpd/vsftpd anonymous #允许匿名登录 anonymous_enable=YES

e 修改/etc/vsftpd/vsftpd virtual 代码:

  #nano /etc/vsftpd/vsftpd virtual #不允许匿名登录 anonymous_enable=NO

) 为不同的用户设置不同的访问权限a 激活单个用户配置功能 增加以下配置行到vsftpd的配置文件: 代码:

  #nano /etc/nf #指定不同用户配置文件的存放路径 user_config_dir=/etc/vsftpd/vsftpd_user_conf

b 普通用户:下载/上传编辑/etc/vsftpd/vsftpd_user_conf/normal注意:用户的配置文件名与用户名一致 不过匿名用户的配置文件名为ftp 而不是anonymous 代码:

  #mkdir /etc/vsftpd/vsftpd_user_conf #nano /etc/vsftpd/vsftpd_user_conf/normal

加入以下内容:#允许下载 代码:

  anon_world_readable_only=NO #允许写入 上传以及建立目录 write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES

  c 管理员用户:下载/上传/删除等

代码:

  #cp /etc/vsftpd/vsftpd_user_conf/normal /etc/vsftpd/vsftpd_user_conf/admin

编辑admin的配置文件: 代码:

  #nano /etc/vsftpd/vsftpd_user_conf/admin

管理员除了拥有普通用户的权限以外 还拥有删除/重命名/改变文件属性的权限加入以下内容: 代码:

  #允许重命名和删除文件 anon_other_write_enable=YES #虚拟用户拥有与本地用户相同的权限(由于chmod仅仅对本地用户有效 所以如果想要虚拟用户拥有chmod的权限 这一项必须激活) virtual_use_local_privs=YES #允许修改文件属性 chmod_enable=YES

d 网站管理员 代码:

  #cp /etc/vsftpd/vsftpd_user_conf/admin /etc/vsftpd/vsftpd_user_conf/webmaster

编辑webmaster的配置文件: 代码:

  #nano /etc/vsftpd/vsftpd_user_conf/webmaster

加入以下内容: 代码:

  #将FTP家目录指向网站的家目录(我的目录使用Apache默认的目录) local_root=/var/ #默认情况下 上传到FTP站点的文件的拥有者都是ftpguest 其他用户是没有访问权限的 #所以 当访问网站的时候 会出现 没有权限访问该文件的错误 这是由于Apache的用户 # data无法访问/var/下的文件造成的 把umask设置成 甚至 即可解决这个问题 local_umask=

e 为normal admin用户设置对ining pub目录不同的权限    阅读了一遍vsftpd man中关于权限的相关设置 似乎没有单独设置每个目录权限的地方?后来想到是不是可以利用Linux文件系统的文件权限设置来达到此目的 以前在Windows下利用IIS来架设站点时 我就是利用NTFS权限设置来达到控制不同用户对目录的访问权限 不过试了一下 还是无法完美的实现以下的权限控制: 代码:    举例来说 可以通过把pub设置成只读来控制normal用户只读pub的权限 不过admin对pub也是只读了不过 还好 因为admin拥有修改目录属性的权限 如果admin用户想要通过FTP来完成管理pub目录的话 可以临时把pub目录修改成读/写属性 四 小结 vsftpd的目标是完成一个简易而且安全性不低的FTPD 功能嘛 似乎还是有点不足 特别是目录权限这方面的设置如果是对目录权限有比较复杂的需求的话 可以考虑一下Proftpd 在测试的时候 除了使用FTP Client工具以外 最好再使用Sniffer类的软件作为辅助 因为有时候FTP Client并不会完全把FTPD返回信息呈现在你面前 而有时候 这些信息对排除FTPD故障会有很大帮助的 而一旦使用Sniffer类的软件 所有的客户端与服务器端交互的信息都不会漏掉的 五 参考 Manpage of VSFTPD CONF: vsftp配置大全:?tid= cha138/Article/program/MySQL/201311/29336

相关参考

知识大全 Debian下Mysql实践

Debian下Mysql实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  昨几天重装了debi

知识大全 使用MySQL认证ProFTPD用户

使用MySQL认证ProFTPD用户  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  aptget

知识大全 解决办法之MySQL忘记超级用户口令

解决办法之MySQL忘记超级用户口令  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果MySQ

知识大全 MySQL数据库的用户帐号管理基础知识

MySQL数据库的用户帐号管理基础知识  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MySQL

知识大全 Linux下快速重置MySQL用户(root)密码方法

Linux下快速重置MySQL用户(root)密码方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 MySQL数据库中使用Grant语句增添新用户

MySQL数据库中使用Grant语句增添新用户  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下

知识大全 mysql的本地备份和双机相互备份脚本

  先修改脚本进行必要的配置然后以root用户执行  第一执行远程备份时先用first参数  本地备份用local参数  远程备份不用参数    注意:需要在另一主机上的Mysql用户用添加用户   

知识大全 手把手教你装debian(二)

  基系统的安装和模块的选取    配置好基系统是非常重要的因为这样可以建造一个非常稳定的基础还可省去以后编译内核的麻烦不过    bf内核的选项非常繁多过程和编译内核相似对新手来说是一次很好的锻炼机

知识大全 vsftpd的配置

    作者免费打工仔    RedHat服务器配置指南vsftp  RedHat带了wuftpd和vsftp两套ftp系统我也使第一次接触vsftp根据man说vsftp的含义就是VerySecur

知识大全 vsftpd frequently asked questions

  Q)CanIrestrictuserstotheirhomedirectories?  A)YesYouareprobablyafterthesetting:  chroot_local_user