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

Vsftpd配置詳解之與MySql的結(jié)合

運(yùn)維 系統(tǒng)運(yùn)維
Vsftpd 配置:Linux是一種開(kāi)源的而且安全的操作系統(tǒng),已經(jīng)深入人心。作為L(zhǎng)inux的一種流行發(fā)行版本,Ubuntu的使用更為普及。vsftpd作為L(zhǎng)inux下一種最為方便的FTP程序,也為人們所推崇。本文講述的是Vsftpd配置詳解之與MySql的結(jié)合。

  Vsftpd 配置之結(jié)合MySql數(shù)據(jù)庫(kù)

  將vsftpd與MySql相結(jié)合,我們可以把用戶和日志信息放到數(shù)據(jù)庫(kù)里面去,如果再結(jié)合php來(lái)管理數(shù)據(jù)庫(kù),則可以使vsftpd管理更加方便。下面我們就來(lái)討論一下基于MySql的虛擬戶和日志功能。

  使用MySql來(lái)實(shí)現(xiàn)虛擬用戶

  前面我們介紹了兩類用戶,關(guān)于匿名用戶的語(yǔ)句比較多,權(quán)限限制比較靈活;而本地用戶的特點(diǎn)是每個(gè)用戶對(duì)應(yīng)一個(gè)密碼和主文件夾,登錄控制比較靈活??刹豢梢詫烧叩膬?yōu)點(diǎn)結(jié)合一下呢?答案是肯定的,這就是虛擬用戶。關(guān)于虛擬用戶的啟用,需要使用以下兩條語(yǔ)句:

  1.   guest_enable=yes/no  
  2.  
  3.   guest_username=user_name 
  4.  

  上述guest_enable表示是否開(kāi)啟虛擬用戶功能,guest_username表示虛擬用戶登錄后映射的本地用戶名。如果開(kāi)啟虛擬用戶功能,本地用戶登錄后將映射到guest_username參數(shù)指定的用戶,主目錄也變成該用戶的主目錄。

  我們修改vsftpd主配置文件,變?yōu)橄旅娴臉幼樱?/P>

  1.   listen=yes 
  2.  
  3.   anonymous_enable=yes 
  4.  
  5.   local_enable=yes 
  6.  
  7.   pam_service_name=vsftpd 
  8.  
  9.   write_enable=yes 
  10.  
  11.   dirlist_enable=yes 
  12.  
  13.   download_enable=yes 
  14.  
  15.   anon_upload_enable=yes 
  16.  
  17.   anon_mkdir_write_enable=yes 
  18.  
  19.   anon_other_write_enable=no  
  20.  
  21.   anon_umask=073 
  22.  
  23.   guest_enable=yes 
  24.  
  25.   guest_username=virftp 
  26.  

  再新建一個(gè)用戶virftp改變一下其主目錄的權(quán)限:

  1.   # useradd -d /var/virftp -s /sbin/nologin virftp  
  2.  
  3.   # chmod 704 /var/virftp  
  4.  

  這時(shí)再以/etc/passwd中的用戶登錄ftp,通過(guò)查看內(nèi)容,會(huì)發(fā)現(xiàn)主目錄已經(jīng)切換到/var/virftp/,可以下載和上傳文件,但不能改名和刪除。這就是說(shuō),限制匿名用戶的參數(shù)也同樣適用于本地用戶。

  如果想讓虛擬用戶像本地用戶那樣擁有每個(gè)用戶獨(dú)立的主目錄、獨(dú)立的配置文件和權(quán)限,又該怎么辦呢?還記得user_config_dir參數(shù)吧!在每個(gè)用戶獨(dú)立的配置文件里設(shè)定不同的權(quán)限和local_root參數(shù)就可以了。

  再來(lái)看看這個(gè)參數(shù):

  1.   virtual_use_local_privs=yes/no  
  2.  

  從剛才的實(shí)驗(yàn)可以看到,虛擬用戶登錄后,受到匿名用戶參數(shù)的限制。我們可以通將此參數(shù)的值改為yes,則虛擬用戶會(huì)變得和本地用戶一樣,擁有和本地用戶一樣的特權(quán)。由于我們平常都是看中了匿名用戶限制參數(shù)比較細(xì)致這個(gè)特點(diǎn)才啟用虛擬用戶的,所以此參數(shù)默認(rèn)值為no!

  下面我們結(jié)合MySql,把用戶登錄信息放到數(shù)據(jù)庫(kù)里面去。首先我們需要安裝MySql。

  到官網(wǎng)下載MySql,為了簡(jiǎn)單起見(jiàn),我們下載在linux下已經(jīng)編譯好的版本。我下載的版本是mysql-5.1.18-beta-linux-i686-glibc23.tar.gz,然后照下面的步驟來(lái)安裝MySql。

  1.   # groupadd mysql  
  2.  
  3.   # useradd -g mysql mysql  
  4.  

  如果系統(tǒng)中已經(jīng)有了mysql用戶,就可以省掉這步操作。

  1.   # cd /usr/local  
  2.  
  3.   # tar zxvf mysql-5.1.18-beta-linux-i686-glibc23.tar.gz  
  4.  
  5.   # ln -s mysql-5.1.18-beta-linux-i686-glibc23 mysql  
  6.  

  如果原來(lái)系統(tǒng)中已經(jīng)安裝舊版mysql,***將它卸載,除非你有足夠的把握很好地面對(duì)系統(tǒng)中的兩個(gè)mysql;通常習(xí)慣將mysql安裝在/usr/local/mysql中,但為了將來(lái)版本升級(jí)的需要,建議使用鏈接方式使用mysql。

  1.   # cd mysql  
  2.  
  3.   # chown -R mysql:mysql .  
  4.  
  5.   # scripts/mysql_install_db --user=mysql 
  6.  

  初始化mysql數(shù)據(jù)庫(kù),這步之前必須保證mysql用戶有權(quán)限訪問(wèn)mysql目錄。

  1.   # chown -R root .  
  2.  
  3.   # chown -R mysql data  
  4.  

  ***做這兩步,至少官方文檔是這么建議的。

  MySql的命令和man文檔并不在PATH和MANPATH中,所以我們要手動(dòng)加入。打開(kāi)vi /etc/profile文件,找到export PATH ...那一行,大約在40行左右,在它的前面加上一行:

  1.   PATH=”$PATH”:/usr/local/mysql/bin  
  2.  

  打開(kāi)/etc/man.config(有的版本為/etc/man.conf),在它的任何地方加入一行:

  1.   MANPATH /usr/local/mysql/man  
  2.  

  到這時(shí)mysql就已經(jīng)安裝好了,通過(guò)這個(gè)命令啟動(dòng)mysql:

  /usr/local/mysql/bin/mysqld_safe --user=mysql &

  為了讓mysql支持開(kāi)機(jī)啟動(dòng),執(zhí)行下面的命令:

  1.   # cp support-files/mysql.server /etc/rc.d/init.d/mysqld  
  2.  
  3.   # chkconfig –add mysqld  
  4.  

  這樣就可以讓mysql以服務(wù)的方式開(kāi)機(jī)啟動(dòng),且還可以使用如下命令管理mysql服務(wù):

  # service mysqld {start|stop|restart|reload|force-reload|status}

  啟動(dòng)mysql服務(wù),檢測(cè)下是否正常運(yùn)行:

  1.   # netstat -l|grep mysql  
  2.  
  3.   tcp 0 0 *:mysql *:* LISTEN  
  4.  
  5.   unix 2 [ ACC ] STREAM LISTENING 25534 /tmp/mysql.sock  
  6.  

  看到了吧,mysql已經(jīng)在監(jiān)聽(tīng)了,但它的socket file在/tmp/下,郁悶!

  默認(rèn)情況下,mysql沒(méi)有密碼,任何人都可以登入。為了加強(qiáng)安全性,我們給mysql加上root帳號(hào)密碼:

  1.   # mysqladmin -u root password 'your_P@ssw0rd'  
  2.  

  這樣以后登錄就需要密碼了:

  1.   # mysql -u root -p  
  2.  
  3.   Enter password:  
  4.  
  5.   Welcome to the MySQL monitor. Commands end with ; or \g.  
  6.  
  7.   Your MySQL connection id is 5  
  8.  
  9.   Server version: 5.1.18-beta MySQL Community Server (GPL)  
  10.  
  11.   Type 'help;' or '\h' for help. Type '\c' to clear the buffer.  
  12.  
  13.   mysql> 
  14.  

  建立數(shù)據(jù)庫(kù)ftpdb:

  1.   mysql> create database ftpdb;  
  2.  

#p#

  在數(shù)據(jù)庫(kù)ftpdb中建立一個(gè)表ftpuser,表中有username和password字段:

  1.   mysql> use ftpdb;  
  2.  
  3.   Database changed  
  4.  
  5.   mysql> create table ftpuser(username char(20) not null, password char(64) not null);  
  6.  
  7.   Query OK, 0 rows affected (0.15 sec)  
  8.  

  這里要注意密碼字段的長(zhǎng)度,不同的算法生成的密文長(zhǎng)度是不一樣的,建議不要少于50位,否則可能導(dǎo)致密文在存儲(chǔ)時(shí)被截短。

  我們插入兩條記錄作為兩個(gè)ftp的登錄名和密碼,使用mysql自帶的password函數(shù)來(lái)加密密碼:

  mysql> insert into ftpuser values('test1',password('abc'));

  Query OK, 1 row affected, 1 warning (0.08 sec)

  mysql> insert into ftpuser values('test2',password('123'));

  Query OK, 1 row affected, 1 warning (0.00 sec)

  mysql> select * from ftpuser;

  ---------- -------------------------------------------

  | username | password |

  ---------- -------------------------------------------

  | test1 | *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |

  | test2 | *23AE809DDACAF96AF0FD78ED04B6A265E0***A257 |

  ---------- -------------------------------------------

  2 rows in set (0.00 sec)

  然后我們?cè)俳⒁粋€(gè)可以讓ftp服務(wù)登陸數(shù)據(jù)庫(kù)的用戶:

  mysql> grant select on ftpdb.ftpuser to ftpdb_query@localhost identified by 'P@ssw0rd';

  這個(gè)用戶只能瀏覽 ftpdb 數(shù)據(jù)庫(kù)下的 ftpuser 表中內(nèi)容,我們?nèi)绻胍院蠓峙湟粋€(gè)可以完全管理 ftpdb 數(shù)據(jù)庫(kù)的用戶,再這樣:

  mysql> grant all on ftpdb.* to ftpdb_all@localhost identified by 'P@ssw0rd';

  到這里MySql的設(shè)置就算完了,接下來(lái)安裝 PAM 基于 mysql 數(shù)據(jù)庫(kù)的認(rèn)證插件,我們可以到http: //sourceforge.net/projects/pam-mysql/下載得到。我下載的文件是pam_mysql- 0.7RC1.tar.gz。

  1.   # tar zxvf pam_mysql-0.7RC1.tar.gz  
  2.  
  3.   # cd pam_mysql-0.7RC1  
  4.  
  5.   # ./configure –with-mysql=/usr/local/mysql  
  6.  
  7.   # make  
  8.  
  9.   # make install  
  10.  

  這里要注意兩點(diǎn),一是我們的mysql是手動(dòng)安裝在/usr/local/mysql下的,因此./configure命令需要指定mysql安裝目錄;二是安裝好之后,pam_mysql.so被安裝到了/usr/lib/security. 如果make過(guò)程出現(xiàn)錯(cuò)誤,不要理會(huì),只要產(chǎn)生pam_mysql.so文件即可,我們可以直接將此文件考入/lib/security/目錄。

  然后來(lái)編寫(xiě)PAM認(rèn)證文件:

  1.   # vi /etc/pam.d/ftpdb  
  2.  
  3.   auth required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 
  4.  
  5.   account required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 
  6.  

  注意,整個(gè)這個(gè)文件中只有auth和account兩行內(nèi)容,中途不要加回車換行;文件中不要再有包含其它pam模塊的行;如果pam_mysql.so文件沒(méi)有在/lib/security目錄,就需要指定文件路徑。文件中其它字段的意思是:

  user 訪問(wèn)數(shù)據(jù)庫(kù)用戶名

  passwd 訪問(wèn)數(shù)據(jù)庫(kù)用戶密碼

  host 數(shù)據(jù)庫(kù)主機(jī)

  db 數(shù)據(jù)庫(kù)名

  table 表名

  usercolumn 用戶列名

  passwdcolumn 密碼列名

  crypt 密碼驗(yàn)證機(jī)制;0 代表明文,1 代表DES 加密,2 代表Mysql的password()函數(shù)加密,3代表md5算法,4代表sha加密。

  現(xiàn)在我們修改vsftpd主配置文件/etc/vsftpd/vsftpd.conf,把pam_service_name的值改為ftpdb,也就是我們剛才建立的那個(gè)PAM認(rèn)證文件的名字。再登錄服務(wù)器測(cè)試,可以發(fā)現(xiàn)/etc/passwd中的用戶已經(jīng)無(wú)法登錄到服務(wù)器了,而數(shù)據(jù)庫(kù)中存儲(chǔ)的用戶名是可以登錄的。我們還可以按前面所述的方法為每個(gè)虛擬用戶建立獨(dú)立的配置文件,指定獨(dú)立的主目錄;還可以結(jié)合apache服務(wù)建立php頁(yè)面,然后實(shí)現(xiàn)讓用戶在web界面注冊(cè)帳號(hào)、修改密碼,這要比原來(lái)的認(rèn)證方式靈活得多。

  在MySql中記錄日志

  接下來(lái)我們看一下如何利用剛才的PAM 模塊來(lái)結(jié)合mysql 數(shù)據(jù)庫(kù)記錄vsftpd 服務(wù)的日志。在介紹之前,我們來(lái)看看vsftp中關(guān)于日志記錄的參數(shù)。

  1.   xferlog_enable=yes/no //是否啟用 xferlog 日志格式  
  2.  
  3.   xferlog_std_format=yes/no //是否采用標(biāo)準(zhǔn)格式記錄日志  
  4.  
  5.   xferlog_file=/path/to/logfile //xferlog 日志文件所在位置,默認(rèn)為/var/log/xferlog  
  6.  

  上面的參數(shù)設(shè)置記錄xferlog日志的格式。這是早期Wu-ftpd服務(wù)的日志格式,它會(huì)記錄上傳和下載的動(dòng)作。vsftpd也有專有的日志格式,用下列參數(shù)設(shè)置:

  1.   dual_log_enable=yes/no //是否采用Vsftpd自己的日志記錄方式  
  2.  
  3.   log_ftp_protocol=yes/no //是否記錄所有的ftp命令日志  
  4.  
  5.   vsftpd_log_file=/path/to/logfile //指定vsftpd 日志文件位置,默認(rèn)為/var/log/vsftpd.log  
  6.  

  xferlog_enable的默認(rèn)值為no(vsftpd提供的配置文件模版將其值改為了yes),dual_log_enable的默認(rèn)值也為no,就是說(shuō)默認(rèn)情況下vsftpd是不記錄日志的。我們也可以將日志信息寫(xiě)入系統(tǒng)日志/var/log/messages中,使用如下參數(shù):

  syslog_enable=yes/no

  還是建議大家把日志記錄為單獨(dú)的文件,以便瀏覽和管理。實(shí)驗(yàn)比較簡(jiǎn)單,我們就不做了。

  對(duì)于使用文件來(lái)記錄日志的方式來(lái)說(shuō),我們必須登錄到服務(wù)器之后,才能查看日志。這樣做不方便,不靈活。我們可以把日志放到數(shù)據(jù)庫(kù)中,結(jié)合www服務(wù)建立一個(gè)瀏覽日志的頁(yè)面,這樣就非常舒服的看到web方式的日志了。下面來(lái)看看如何將日志寫(xiě)入數(shù)據(jù)庫(kù)中去。

  首先必須使用虛擬用戶所在的同一個(gè)數(shù)據(jù)庫(kù),新建立存儲(chǔ)日志的表:

  mysql> create table ftplog

  -> (log char(100),

  -> user char(20),

  -> host char(20),

  -> time datetime,

  -> pid int);

  修改 PAM 配置文件,在原來(lái)的基礎(chǔ)上我們改動(dòng)一下:

  1.   # vi /etc/pam.d/ftpdb  
  2.  
  3.   auth required /usr/lib/security/pam_mysql.so user=ftpdb_all passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 sqllog=yes logtable=ftplog loglogmsgcolumn=log logusercolumn=user loghostcolumn=host logtimecolumn=time logpidcolumn=pid  
  4.  
  5.   account required /usr/lib/security/pam_mysql.so user=ftpdb_all passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 sqllog=yes logtable=ftplog loglogmsgcolumn=log logusercolumn=user loghostcolumn=host logtimecolumn=time logpidcolumn=pid  
  6.  

  注意在這個(gè)文件中依然就是原來(lái)的兩行,其中加入的內(nèi)容分別對(duì)應(yīng)如下:

  sqllog 表示是否將日志記錄到數(shù)據(jù)庫(kù)中

  logtable 記錄日志的表名

  logmsgcolumn 記錄日志信息的列

  logusercolumn 登錄用戶

  loghostcolumn 登錄主機(jī)

  logtimecolumn 登錄時(shí)間

  logpidcolumn 處理該用戶連接的進(jìn)程pid

  這次我換了一個(gè)登陸數(shù)據(jù)庫(kù)用戶,使用先前建立的有完全權(quán)限的用戶ftpdb_all,這個(gè)用戶才有在數(shù)據(jù)庫(kù)中使用insert命令的權(quán)限。

【編輯推薦】

  1. vsftpd配置詳解之簡(jiǎn)介篇
  2. vsftpd配置詳解之軟件安裝和卸載
  3. vsftpd配置詳解之配置vsftpd服務(wù)
  4. Vsftpd配置詳解之配置文件詳解
  5. Vsftpd配置詳解之Vsftpd配置下高級(jí)操作
  6. Vsftpd配置詳解之與MySql的結(jié)合
  7. vsftpd配置詳解之實(shí)現(xiàn)加密數(shù)據(jù)傳輸
責(zé)任編輯:zhaolei 來(lái)源: CSDN
相關(guān)推薦

2011-03-02 11:32:55

vsftpd配置

2011-03-02 13:23:42

Vsftpd配置

2011-03-02 13:12:37

vsftpd配置

2011-03-02 11:25:10

vsftpd配置

2011-03-02 11:28:28

vsftpd配置

2011-03-04 12:41:53

VsftpdTCP_wrapper

2011-03-04 16:34:03

vsFTPd

2010-08-12 13:15:26

MySQL集群

2017-05-23 14:56:49

MySQLvsftpd虛擬用戶

2011-03-02 10:19:44

2011-02-22 13:28:43

Linuxvsftpd配置

2010-01-13 14:45:25

CentOS配置

2010-01-13 13:27:07

CentOS vsft

2011-03-04 13:58:41

2011-03-04 14:01:48

VSFTPD.CONF

2011-03-04 14:04:43

2011-03-03 16:18:29

VSFTPD啟動(dòng)停止

2011-03-02 11:23:48

2011-08-23 17:26:05

2010-06-02 10:23:46

Linux mysql
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)