熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

VSFTP+MySQL虛擬用戶配置

2013-11-23 21:03:44  來源: MySQL 

  VSFTPD是一種在UNIX/Linux中非常安全且快速的FTP服務器目前已經被許多大型站點所采用VSFTPD支持將用戶名和口令保存在數據庫文件或數據庫服務器中VSFTPD稱這種形式的用戶為虛擬用戶相對於FTP的本地(系統)用戶來說虛擬用戶只是FTP服務器的專有用戶虛擬用戶只能訪問FTP服務器所提供的資源這大大增強系統本身的安全性相對於匿名用戶而言虛擬用戶需要用戶名和密碼才能獲取FTP服務器中的文件增加了對用戶和下載的可管理性對於需要提供下載服務但又不希望所有人都可以匿名下載既需要對下載用戶進行管理又考慮到主機安全和管理方便的FTP站點來說虛擬用戶是一種極好的解決方案本文介紹在RedHat Linux 上如何將VSFTPD的虛擬用戶名和密碼保存在MySQL數據庫服務器中
  
  VSFTPD的安裝
  目前VSFTPD的最新版本是官方下載地址為ftp:///users/cevans/vsftpdtargz在安裝前需要先做以下准備工作
  
  VSFTPD默認配置中需要nobody用戶在系統中添加此用戶如果用戶已經存在useradd命令有相應提示
  [root@hpe root]# useradd nobody
  useradd: user nobody exists
  
  VSFTPD默認配置中需要/usr/share/empty目錄在系統中此目錄如果目錄已經存在mkdir命令有相應提示
  [root@hpe root]# mkdir /usr/share/empty/
  mkdir: cannot create directory /usr/share/empty: File exists
  
  VSFTPD提供匿名FTP服務時需要ftp用戶和一個有效的匿名目錄
  [root@hpe root]# mkdir /var/ftp/
  [root@hpe root]# useradd d /var/ftp ftp
  接下來的操作對於ftp用戶是否已經存在都是有用的
  [root@hpe root]# chown rootroot /var/ftp
  [root@hpe root]# chmod ogw /var/ftp
  
  以上准備工作完成後我們就可以開始編譯源代碼了假定我們下載的vsftpdtargz在/root目錄執行以下命令
  [root@hpe root]# tar zxvf vsftpdtargz
  [root@hpe root]# cd vsftpd
  [root@hpe vsftpd]# make
  [root@hpe vsftpd]# make install
  
  上面的make install命令將編譯好的二進制文件手冊等復制到相應目錄在RHL可能需要手動執行以下復制
  [root@hpe vsftpd]# cp vsftpd /usr/local/sbin/vsftpd
  [root@hpe vsftpd]# cp nf /usr/local/share/man/man
  [root@hpe vsftpd]# cp vsftpd /usr/local/share/man/man
  
  接下來我們復制一個簡單的配置文件作為基礎供後面修改
  [root@hpe vsftpd]# cp nf /etc
  [root@hpe vsftpd]# cp RedHat/vsftpdpam /etc/pamd/ftp
  復制PAM驗證文件以允許本地用戶登錄VSFTPD
  [root@hpe vsftpd]# cp RedHat/vsftpdpam /etc/pamd/ftp
  
  創建guest用戶
  VSFTPD采用PAM方式驗證虛擬用戶由於虛擬用戶的用戶名/口令被單獨保存因此在驗證時VSFTPD需要用一個系統用戶的身份來讀取數據庫文件或數據庫服務器以完成驗證這就是VSFTPD的guest用戶這正如同匿名用戶也需要有一個系統用戶ftp一樣當然我們也可以把guest用戶看成是虛擬用戶在系統中的代表下面在系統中添加vsftpdguest用戶作為VSFTPD的guest
  [root@hpe vsftpd]# useradd vsftpdguest
  當虛擬用戶登錄後所在的位置為vsftpdguest的自家目錄/home/vsftpdguest如果要讓虛擬用戶登錄到/var/ftp等其他目錄修改vsftpdguest的自家目錄即可
  
  設置VSFTPD配置文件
  在/etc/nf文件中加入以下選項
  guest_enable=YES
  guest_username=vsftpdguest
  
  然後執行以下命令讓VSFTPD在後台運行
  [root@hpe vsftpd]# /usr/local/sbin/vsftpd &
  
  將虛擬用戶保存在MySQL數據庫服務器中
  我們建立數據庫vsftpdvu表users字段name和passwd用於保存虛擬用戶的用戶名和口令同時增加兩個虛擬用戶xiaotong和xiaowang
  
  [root@hpe vsftpd]# mysql p
  mysql>create database vsftpdvu;
  mysql>use vsftpdvu;
  mysql>create table users(name char() binarypasswd char() binary);
  mysql>insert into users (namepasswd) values (xiaotongpassword(qqmywife));
  mysql>insert into users (namepasswd) values (xiaowangpassword(ttmywife));
  mysql>quit
  
  然後授權vsftpdguest可以讀vsftpdvu數據庫的users表執行以下命令
  [root@hpe vsftpd]# mysql u root mysql p
  mysql>grant select on vsftpdvuusers to vsftpdguest@localhost identified by iserial;
  mysql>quit
  
  如果要驗證剛才的操作是否成功可以執行下面命令
  [root@hpe vsftpd]#mysql u vsftpdguest piserial vsftpdvu
  mysql>select * from users;
  如果成功將會列出xiaotongxiaowang和加密後的密碼
  
  設置MySQL的PAM驗證
  這裡我們要用到一個利用mysql進行pam驗證的開源項目(mysql/)首先從網站下載它的程序包pam_myqltargz復制到/root目錄中在編譯安裝之前要確保mysqldevel的RPM包已經安裝在你的機器上如果沒有請從RHL安裝光盤中安裝該包然後執行以下命令
  [root@hpe root]#tar xvzf pam_mysqltargz
  [root@hpe root]#cd pam_mysql
  [root@hpe pam_mysql]#make
  [root@hpe pam_mysql]#make install
  make install這一步可能會出現錯誤那只好手動將該目錄下生成的pam_mysqlo復制到/lib/security目錄下
  接下來我們要設置vsftpd的PAM驗證文件打開/etc/pamd/ftp文件加入以下內容
  auth required pam_mysqlo user=vsftpdguest passwd=iserial host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=
  account required pam_mysqlo user=vsftpdguest passwd=iserial host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=
  上面涉及到的參數只要對應前面數據庫的設置就可以明白它們的含義這裡需要說明的是crypt參數crypt表示口令字段中口令的加密方式crypt=口令以明文方式(不加密)保存在數據庫中crypt=口令使用UNIX系統的DES加密方式加密後保存在數據庫中crypt=口令經過MySQL的password()函數加密後保存
  
  進一步的虛擬用戶設置
  經過以上的步驟虛擬用戶就可以正常使用了這裡介紹進一步的虛擬用戶設置首先介紹虛擬用戶的權限設置
  
  VSFTPD新添了virtual_use_local_privs參數當該參數激活(YES)時虛擬用戶使用與本地用戶相同的權限當此參數關閉(NO)時虛擬用戶使用與匿名用戶相同的權限這也就是VSFTPD之前版本對虛擬用戶權限的處理方法這兩者種做法相比後者更加嚴格一些特別是在有寫訪問的情形下默認情況下此參數是關閉的(NO)
  當virtual_use_local_privs=YES時只需設置write_enable=YES虛擬用戶就可以就擁有寫權限而virtual_use_local_privs=NO時對虛擬用戶權限的設置就更多一些更嚴格一些
  控制虛擬用戶浏覽目錄如果讓用戶不能浏覽目錄但仍可以對文件操作那麼需要執行以下二個步驟配置文件中anon_world_readable_only=YES虛擬用戶目錄的權限改為只能由vsftpdguest操作
  [root@hpe root]# chown vsftpdguestvsftpdguest /home/vsftpdguest
  [root@hpe root]# chmod /home/vsftpdguest
  允許虛擬用戶上傳文件
  write_enable=YES
  anon_upload_enable=YES
  允許虛擬用戶修改文件名和刪除文件
  anon_other_write_enable=YES
  由於以上選項的設置同樣會對匿名用戶生效如果不想匿名用戶趁機擁有同樣的權限最好是禁止匿名用戶登錄
  
  其次由於虛擬用戶在系統中是vsftpdguest身份所以可以訪問到系統的其他目錄為了更加安全我們可以將虛擬用戶限制在自家目錄下有兩種做法在配置文件中增加以下選項
  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpdchroot_list
  然後在/etc/vsftpdchroot_list文件中加入虛擬用戶名xiaotong和xiaowang
  第二種做法在配置文件中修改chroot_local_user=YES
  經過修改後虛擬用戶登錄後其根目錄就限制在/home/vsftpdguest下無法訪問其他目錄
  
  虛擬用戶的個人目錄
  大家可以發現無論是哪個虛擬用戶登錄後所在的目錄都是/home/vsftpdguest即都是guest_username用戶的自家目錄下面介紹如何為每個虛擬用戶建立自家目錄首先在主配置文件中加入以下選項
  user_config_dir=/etc/vsftpd/vsftpd_user_conf
  然後生成/etc/vsftpd/vsftpd_user_conf目錄並在該目錄下建立與特定虛擬用戶同名的文件
  [root@hpe root]# mkdir /etc/vsftpd/vsftpd_user_conf
  [root@hpe root]# cd /etc/vsftpd/vsftpd_user_conf
From:http://tw.wingwit.com/Article/program/MySQL/201311/29511.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.