歡迎您光臨本站 註冊首頁

用MYSQL為vsftpd伺服器建立虛擬機用戶

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

說起寫這篇文章,先做一個前奏,昨天因X公司WEB伺服器 Ubuntu 10.04 老舊版本,因為已經不能在線升級,所以我選擇了直接安裝最新的 Ubuntu 13.04 版本,把所有數據轉移處理完畢,伺服器運行正常。以前該公司是直接為ftp用戶建立系統賬戶,但是這樣並不安全,所以我才想起建立虛擬FTP賬戶,在網上查了一下,最後在國外howtoforge網站上有一篇文章是在Debian Etch系統中為vsftpd建立虛擬用戶,使用Mysql資料庫,先在PC機做個試驗,文章雖然是2007年寫的,但是依然有效,只是最後做一點補充,不然你根本鏈接不上主機。

我翻譯者這篇文章,共享給大家,當然也給自己以後工作留下參考筆記。原文地址:http://www.howtoforge.com/vsftpd_mysql_debian_etch

1 首先我試驗的環境:

  • 一台老舊PC
  • Lubuntu 13.04系統(桌面版本設置比較方便一些,LUbuntu佔用資源也少一些)
  • 試驗IP:192.168.0.100 域名:server1.example.com這個根據你的實際做修改
  • PC機上安裝LAMP、ssh、vsftpd、phpmyadmin

2 如果你已經安裝vsftpd、phpmyadmin、mysql,直接跳過這一步,如果沒有,使用下面命令安裝,vsftpd沒有內置的MySQL支持,因此我們必須使用PAM來驗證對MySQL資料庫。

為免去驗證,直接切換到超級用戶:

sudo su -

apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin

因為我已經安裝LAMP、ssh、vsftpd、phpmyadmin,所以第二條命令我只選擇了兩個東東來安裝,命令如下:

apt-get install libpam-mysql mysql-client

3 為 vsftpd 建立MYSQL資料庫,建立一個資料庫和用戶,名字都是:vsftpd,用戶密碼為:ftpdpass,先登陸資料庫,終端或SSH輸入命令:

mysql -u root -p

建立資料庫、用戶和用戶許可權

CREATE DATABASE vsftpd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';

FLUSH PRIVILEGES;

然後使用vsftpd用戶名登陸:

USE vsftpd;

建立數據表及欄位並退出:

CREATE TABLE `accounts` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`username` VARCHAR( 30 ) NOT NULL ,

`pass` VARCHAR( 50 ) NOT NULL ,

UNIQUE (

`username`

)

) ENGINE = MYISAM ;

quit;

4 配置vsftpd

添加一個vsftpd用戶和用戶組,這個是虛擬用戶的基礎用戶:

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

備份/etc/vsftpd.conf文件並新建一個/etc/vsftpd.conf

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig

cat /dev/null > /etc/vsftpd.conf

vi /etc/vsftpd.conf

為/etc/vsftpd.conf添加如下內容:

listen=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

nopriv_user=vsftpd

chroot_local_user=YES

secure_chroot_dir=/var/run/vsftpd

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/vsftpd.pem

guest_enable=YES

guest_username=vsftpd

local_root=/home/vsftpd/$USER

user_sub_token=$USER

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd_user_conf

這是一個基本的設置。

創建一個用戶全局設置文件:

mkdir /etc/vsftpd_user_conf

現在我們必須配置PAM,使其使用MySQL資料庫來驗證我們的虛擬FTP用戶。 vsftpd的PAM配置是在/etc/pam.d/vsftpd下。我們做一個備份原始文件,並創建一個新的:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig

cat /dev/null > /etc/pam.d/vsftpd

vi /etc/pam.d/vsftpd

新文件加入內容

auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

重啟VSFTPD:

/etc/init.d/vsftpd restart

5 建立第一個虛擬用戶試一試

進入MSQL:

mysql -u root -p

切換到vsftpd用戶:

USE vsftpd;

插入一個虛擬用戶(用戶名:testuser 密碼:secret):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));

quit;

還需要為用戶創建一個目錄並賦予許可權(這裡用戶組許可權在ubuntu不夠,所以可能無法登陸):

mkdir /home/vsftpd/testuser

chown vsftpd:nogroup /home/vsftpd/testuser

現在你使用FTP客戶端登陸試一試,如果沒有出現錯誤,那麼恭喜你成功了,如果無法登陸可能是vsftpd用戶組許可權不夠,你可以試試修改一些目錄許可權,直接賦予777吧:

chmod 777 /home/vsftpd/testuser

再登陸試一試!

使用命令添加虛擬太麻煩,你可以使用phpmyadmin,如下圖:

別忘添加相應的用戶目錄和許可權。



[火星人 ] 用MYSQL為vsftpd伺服器建立虛擬機用戶已經有867次圍觀

http://coctec.com/docs/linux/show-post-74012.html