自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用vsftpd和mysql創(chuàng)建一個虛擬用戶ftp服務器

運維 系統(tǒng)運維
當前有這樣的一個需求,我需要批量創(chuàng)建一個網(wǎng)站,比如我要創(chuàng)建一個foo.com的網(wǎng)站,我就會在/web/目錄下創(chuàng)建一個foo.com的目錄,WEB服務器(我這里用的是nginx)已經(jīng)自動設置好解析。同時,我需要有一個對應的ftp賬號來管理這個網(wǎng)站,用vsftpd做FTP服務器,用MySQL做后端數(shù)據(jù)庫,兩者通過pam-mysql插件聯(lián)系起來。

當前有這樣的一個需求,我需要批量創(chuàng)建一個網(wǎng)站,比如我要創(chuàng)建一個foo.com的網(wǎng)站,我就會在/web/目錄下創(chuàng)建一個foo.com的目錄,WEB服務器(我這里用的是nginx)已經(jīng)自動設置好解析。同時,我需要有一個對應的ftp賬號來管理這個網(wǎng)站,但是我不希望使用系統(tǒng)賬號,一來網(wǎng)站多了,系統(tǒng)賬號必然多,而來我不希望管理網(wǎng)站的賬號能通過ssh登陸,雖然ssh也可以配置哪些賬號不允許登陸。但是不創(chuàng)建系統(tǒng)賬號顯然是最安全的做法。

于是這就是有了標題的做法,用vsftpd做FTP服務器,用MySQL做后端數(shù)據(jù)庫,兩者通過pam-mysql插件聯(lián)系起來。配置步驟簡述如下:

  1. 我的系統(tǒng)是CentOS 6.2,因此現(xiàn)用yum工具安裝好所需要的軟件,包括mysql-server,vsftpd,pam-mysql等。
  2. 編輯/etc/vsftpd/vsftpd.conf文件,增加或者修改如下幾項:
  1. anonymous_enable=NO 
  2. virtual_use_local_privs=YES 
  3. guest_enable=YES 
  4. user_sub_token=$USER  
  5. local_root=/web/$USER  
  6. chroot_local_user=YES 
  7. hide_ids=YES 
  8. guest_username=nginx 

guest_username 表示當用戶登陸成功后,其uid映射到系統(tǒng)哪個賬號上,我這里為了和WEB管理相結合,因此用了nginx這個賬號。

3.創(chuàng)建數(shù)據(jù)庫表,我們創(chuàng)建一個名為vsftpd的數(shù)據(jù)庫,在其下創(chuàng)建一個users表,同時授權給vsftpd賬號登陸,創(chuàng)建過程類似如下:

  1. mysql> create database vsftpd;  
  2. Query OK, 1 row affected (0.00 sec)  
  3.         
  4. mysql> use vsftpd  
  5. Database changed  
  6. mysql> create table users(username varchar(30) not null primary key,password varchar(41) not null);  
  7. Query OK, 0 rows affected (0.04 sec)  
  8. mysql> grant usage  on vsftpd.users to vsftpd@localhost identified by 'abc123';  
  9. Query OK, 0 rows affected (0.00 sec)  
  10. mysql> insert into users values('foo.com',password('test'));  
  11. Query OK, 1 row affected (0.00 sec)  
  12.         
  13. mysql> select * from users;  
  14. +----------+-------------------------------------------+  
  15.       | username | password                                  |  
  16. +----------+-------------------------------------------+  
  17.       | foo.com  | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |  
  18. +----------+-------------------------------------------+  
  19.       1 row in set (0.00 s 

我這里對密碼使用password加密函數(shù),因為要和WEB結合,因為username使用了和域名相同的名字,這樣我就可以通過username來同時獲知域名,從而將賬號的主目錄鎖定在對應的域名目錄下。

編輯/etc/pam.d/vsftpd文件,***類似如下:

  1. auth required pam_mysql.so user=vsftpd passwd=abc123 host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2 
  2. account required pam_mysql.so user=vsftpd passwd=abc123 host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2 

user和passwd指的是連接MySQL的賬號和密碼,crypt指的加密方式,0表示明文;不加密;1表示用crypt方式加密;2表示用MySQL的password函數(shù)加密;3表示用md5加密;4表示用sha1加密。

創(chuàng)建對應的目錄 當用foo.com登陸,且驗證通過后,根據(jù)之前vsftpd的配置,它將以nginx的身份把/web/foo.com作為其主目錄,因此要保證其目錄存在,而且其身份有訪問權限。

測試,直接可以在本地測試,看看能否登陸,如果不能登陸,/var/log/secure里又看不到更多的信息,那你可以選擇在/etc/pam.d/vsftpd的配置文件里加上verbose模式,也就是在user=vsftpd那里加上一個verbose=1的選項,這樣它就會把詳細的信息打印到/var/log/secure文件里??纯词悄睦锏膱箦e。
其實,上述只是一個最簡單的配置,pam-mysql還可以讓你配置得更復雜,比如記錄登錄日志,根據(jù)特定條件查詢過濾用戶信息等,pam-mysql軟件包自帶的README有詳細的說明,大家可以按照那個說明來配置一個符合你需求的靈活的認證方式。

責任編輯:黃丹 來源: 博客
相關推薦

2011-03-04 10:03:44

VSFTPD虛擬服務器

2011-02-23 15:32:39

vsftpd

2011-02-23 09:01:37

2010-08-25 16:28:04

2011-02-23 13:52:07

vsftpd

2011-03-02 16:49:53

Pureftpdmysql

2010-05-18 14:34:41

IIS服務器

2014-04-14 15:54:00

print()Web服務器

2011-02-25 16:14:09

proftpdftp

2010-05-20 12:57:38

2018-06-15 10:25:43

Python HTTPFTP服務器

2018-12-06 09:23:33

2010-02-23 14:35:48

CentOS vsft

2011-03-04 10:05:10

Vsftpd虛擬用戶

2011-02-22 14:19:28

vsFTPd啟動關閉

2011-02-24 09:57:40

vsFTPd啟動關閉

2019-02-26 16:20:52

FTP服務器

2015-08-25 14:34:20

LinuxvsftpdFTP

2011-03-04 10:00:56

Vsftpd配置服務器

2023-03-30 13:22:45

nginxweb服務器
點贊
收藏

51CTO技術棧公眾號