色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>網絡>功能服務器>

linux系統搭建ftp服務器的配置方法 - 全文

2012年02月15日 14:13 本站整理 作者:辰光 用戶評論(0

很久以前知道linux下搭建ftp服務器的軟件是wuftp,現在真的時代變了,上網看一下幾乎全世界的人都用proftpd了!趕個潮流,我也用proftpd在公司的一臺備用小服務器上裝上ftp服務器。

首先proftpd是一個開源軟件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非穩定版),穩定的版本是1.3.0,下載文件為proftpd-1.3.0a.tar.gz

我下載的是1.3.0,上傳到服務器上后按照常規的方法安裝即可。

tar -zxvf proftpd-1.3.0a.tar.gz

cd proftpd*

./configure --prefix=/usr/local/proftpd

make

make install

安裝完成!接下來是配置。

設置一:隨機啟動服務,sbin/proftpd文件復制到/etc/rc.d/rc.local文件夾中,以實現開機自動啟動。

設置二:配置文件在etc/proftpd.conf,配置文件說明如下:

ServerName "ProFTPD Default Installation"

ServerType standalone

DefaultServer on

分別表示:服務器名稱,服務類型和默認服務狀態!

后面的服務端口啊什么的我就省去不說了,說最關鍵的權限控制部分。

# Set the user and group under which the server will run.

User nobody

Group nogroup

注意看上面:以什么用戶和什么組來運行服務。

更改為你現有的組和用戶,這里為了管理上的方便和安全性上考慮,建議新建一個ftp組和ftp用戶。

# To cause every FTP user to be "jailed" (chrooted) into their home

# directory, uncomment this line.

#DefaultRoot ~

是否允許用戶進入用戶的主目錄,注意:可是適用/home替代

# Normally, we want files to be overwriteable.

AllowOverwrite on

是否具有重寫的權利

# A basic anonymous configuration, no upload directories. If you do not

# want anonymous users, simply delete this entire section.

User ftp

Group ftp

# We want clients to be able to login with "anonymous" as well as "ftp"

UserAlias anonymous ftp

# Limit the maximum number of anonymous logins

MaxClients 10

# We want 'welcome.msg' displayed at login, and '.message' displayed

# in each newly chdired directory.

DisplayLogin welcome.msg

DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot

DenyAll

這部分是匿名用戶的定義其實也很簡單。

啟動不了,出現如下錯誤的解決方法

[root@new-host sbin]# ./proftpd

- IPv4 getaddrinfo 'new-host' error: Name or service not known

- warning: unable to determine IP address of 'new-host'

- error: no valid servers configured

- Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'

原因是無法綁定Ip地址。

在配置文件中增加下面這句:

DefaultAddress 192.168.8.105

再重啟服務就可以了!

接上!原來以為這樣就完事了,可是看看才知道如果我要新增加一個FTP用戶的話實際上是很麻煩的一件事,因為帳號是直接跟系統帳號想關聯的,不安全也不好操作,我們的目的是要做成像虛擬主機服務提供商那樣的ftp!

接下去,需要一個模塊的支持到http://www.castaglia.org/proftpd/#Modules去看看proftpd-mod-quotatab模塊,注意下面這句話:

NOTE: mod_quotatab became part of the offical ProFTPD source distribution in 1.2.10rc1. If using a version of ProFTPD later than that, please use the mod_quotatab already included, as it will be most up-to-date.

表示我們下載的1.3版本已經支持做了這個東西,主要編譯安裝的時候把mod_quotatab 開起來就可以了,于是重新編譯!

前提:確認你已經安裝并且能夠正常運行mysql,否則后面的工作都是沒有意義的了!

重新編譯:

./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql

注意請根據自己的Linux系統找到MySQL的相應include和lib目錄,以上例子中的相關路徑是大多數Linux系統默認的,如果你的MySQL是通過源碼編譯安裝的,則這兩個目錄一般在安裝路徑下。

資料說:需要修改contrib目錄中mod_sql_mysql.c文件:

vi mod_sql_mysql.c

找到#include 這一行,將mysql.h改成你的系統中此文件所在的路徑,如/usr/include/mysql/mysql.h

可是我沒有這樣做也可以,真奇怪!

然后make

make install

一樣的切換到proftpd文件夾中操作,后面的比較復雜,我試試以大學教授的水平用簡單的語言講。

配置proftpd.conf文件

編輯/usr/local/proftpd/etc/proftpd.conf文件:

設置磁盤限額

#設置磁盤限額

QuotaDirectoryTally on

#設置磁盤容量顯示時的單位

QuotaDisplayUnits "Kb"

#打開磁盤限額引擎

QuotaEngine on

#設置磁盤限額日志文件

QuotaLog "/usr/local/proftpd/var/quota"

#允許顯示磁盤限額信息,ftp登錄后可執行quote site quota命令查看當前磁盤使用情況

QuotaShowQuotas on

指定磁盤限額模塊使用的數據庫信息

在proftpd.conf文件中加入以下配置:

SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, \

bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \

WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, \

bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \

WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, \

bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, \

files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, \

files_xfer_used = files_xfer_used + %{5} \

WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies

QuotaLimitTable sql:/get-quota-limit

QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

很多朋友就要問了:這些是什么東東啊?完全看不懂!我也不懂!繼續照做就是了~~

配置FTP用戶為MySQL數據庫認證方式

在proftpd.conf文件中加上以下配置:

SQLConnectInfo databaseName@hostName:port userName password

#databaseName是為proftpd建立的MySQL數據庫的名字

#hostName是MySQL數據庫所在的服務器的名字或ip地址

#port是MySQL服務所使用的端口

#userName是數據庫的用戶名

#password是數據庫用戶密碼

SQLAuthTypes Backend Plaintext

#Backend表示用戶認證方式為MySQL數據庫的認證方式

#Plaintext表示明文認證方式,排在最前面的為最先使用的方式

SQLUserInfo ftpUser userid passwd uid gid homedir shell

#指定ftp用戶數據表的名字和其中的字段名,表名可自行定義,字段名不要改動。

SQLGroupInfo ftpGroup groupname gid members

#指定ftp用戶組數據表的名字和其中的字段名,這個數據表是可選的,字段名不要改動。

RequireValidShell off

#指定是否必須為FTP用戶指定一個系統shell,off表示不用指定,on表示必須指定。為了系統安全應該指定為off。

SQLAuthenticate users groups usersetfast groupsetfast

#校驗數據表

SQLHomedirOnDemand on

#如果用戶主目錄不存在,則系統會根據此用戶在用戶數據表中的homedir字段的值新建一個目錄。

創建FTP系統用戶和組

創建一個FTP用戶和組,以后所有的其它FTP用戶實際上都是通過這個系統用戶進行FTP的:

groupadd –g 2003 ftpGroup

useradd –u 2003 –g ftpGroup –d /home ftpUser

以上建立了一個名為ftpGroup的ftp組,組id為2003;建立了一個ftp用戶,用戶id為2003,并加入ftpGroup組,用戶主目錄為/home

接著修改/home的屬主和訪問權限:

chown –R ftpUser.ftpGroup /home

chmod 644 /home

644的具體含義請自查看相關文檔。

再修改proftpd.conf文件,找到User 和 Group,將User指定為ftpUser,Group指定為ftpGroup,替換掉原默認值,否則如果系統中沒有原默認值所指定的用戶和組的話,proftpd是不能成功啟動的。

建立FTP用戶認證相關表

mysql –u root

use mysql

添加一個mysql用戶:ftp

添加一個數據庫:proftpd

具體指令請參考MYSQL手冊。

建完用戶和數據庫后,以新建的用戶登錄MYSQL:

mysql –u ftp

use proftpd;

create table ftpUser (userid TEXT NOT NULL,passwd TEXT NOT NULL,uid INT NOT NULL,gid INT NOT NULL,homedir TEXT,shell TEXT);

userid是用戶名,passwd是用戶密碼,uid是用戶id,gid是用戶所在組的id,homedir是用戶主目錄,shell是用戶的系統shell。

create table ftpGroup (groupname TEXT NOT NULL,gid SMALLINT NOT NULL,members TEXT NOT NULL);

groupname是組名,gid是組id,members是組的成員,有多個成員時,要用逗號隔開。

以上建立了FTP用戶和用戶組的數據表。

建立磁盤限額數據表

CREATE TABLE quotalimits (

name VARCHAR(30),

quota_type ENUM("user", "group", "class", "all") NOT NULL,

per_session ENUM("false", "true") NOT NULL,

limit_type ENUM("soft", "hard") NOT NULL,

bytes_in_avail FLOAT NOT NULL,

bytes_out_avail FLOAT NOT NULL,

bytes_xfer_avail FLOAT NOT NULL,

files_in_avail INT UNSIGNED NOT NULL,

files_out_avail INT UNSIGNED NOT NULL,

files_xfer_avail INT UNSIGNED NOT NULL

);

CREATE TABLE quotatallies (

name VARCHAR(30) NOT NULL,

quota_type ENUM("user", "group", "class", "all") NOT NULL,

bytes_in_used FLOAT NOT NULL,

bytes_out_used FLOAT NOT NULL,

bytes_xfer_used FLOAT NOT NULL,

files_in_used INT UNSIGNED NOT NULL,

files_out_used INT UNSIGNED NOT NULL,

files_xfer_used INT UNSIGNED NOT NULL

);

以上quotalimits表是FTP用戶的磁盤限額配置信息,quotatallies表存放的是用戶磁盤限額變動的信息。

quotatallies表不需要作修改,由程序自動記錄

下面是quotalimits 表中各字段的含意:

quota_type 磁盤限額的鑒別

bytes_in_avail 上傳最大字節數,就是FTP用戶空間容量

bytes_out_avail 下載最大字節數

bytes_xfer_avail 總共可傳輸的文件的最大字節數(上傳和下載流量)

files_in_avail 總共能上傳文件的數目

files_out_avail 能從服務器上下載文件的總數目

files_xfer_avail 總共可傳輸文件的數目(上傳和下載)

數據表數據初始化

表全部建完后,就可以創建FTP用戶了,在ftpUser表中插入一條記錄如下:

INSERT INTO ftpUser (userid, passwd, uid, gid, homedir, shell) values ('shine', password(‘yourpassword’), '2003', '2003', '/home/shine', '' );

以上建立了一個新的FTP用戶,用戶名為shine,密碼為yourpassword,可以看到密碼用mysql的系統函數password進行了加密,用戶id和組id均為2003,這里隨便填,我填了和系統用戶ftpUser和系統組ftpGroup相同的id,不知道會不會有問題。/home/shine為用戶主目錄,用戶shell為空。

如果要想應用到更多的功能,且建立了組的數據表,你也要為此添加記錄,不過一定要注意在members的字段多個成員一定要用逗號隔開。

INSERT INTO ftpGroup VALUES ('ftpGroup', 2003, 'ftpUser');

下面再來建立初始的用戶磁盤限額信息:

將已經建立的shine帳號賦予50M空間,最多能上傳500個文件,文件傳輸流量為512k,總共只能傳輸2000個文件,插入記錄如下:

INSERT INTO quotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail)VALUES (‘shine’, ‘user’, ‘true’, ‘soft’, ‘51200000’, ‘0’,’512000’,‘500’,’0’,’2000’);

運行proftpd

執行以下命令啟動proftpd服務:

/usr/local/proftpd/sbin/proftpd

開一個控制臺輸入:

ftp ftpHostName

輸入用戶名:shine

輸入用戶密碼:yourpassword

成功登錄后執行:

quote site quota

可以看到此用戶的磁盤使用情況。

上一頁123全文

非常好我支持^.^

(4) 100%

不好我反對

(0) 0%

( 發表人:辰光 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 日本伦子欲| 日韩 国产 欧美视频二区| 嫩草欧美曰韩国产大片| 亚洲欧美一级久久精品| 播色屋97超碰在人人| 美女国产毛片A区内射| 亚洲三级大片| 黑色丝袜美腿美女被躁翻了| 午夜免费福利小电影| 国产91网站在线观看免费| 日本高清免费一本在线观看| 99热视频这里只有久久精品| 免费观看亚洲视频| 99蜜桃在线观看免费视频网站| 麻豆国产原创中文AV网站| 538久久视频在线| 男人就爱吃这套下载| 99热在线视频这里只精品| 欧美多毛的大隂道| 99婷婷久久精品国产一区二区| 免费女人光着全身网站| 99精品国产免费久久久久久下载| 美女张开腿让男生桶动态图| 98国产精品人妻无码免费| 女人爽得直叫免费视频| caoporm国产精品视频免费| 欧美精品久久久久久久久大尺度| xx在线观看| 我们中文在线观看免费完整版 | 在教室伦流澡到高潮H免费视频| 精品国产mmd在线观看| 在教室伦流澡到高潮H女攻视频| 蜜桃传媒星空传媒在线播放| WWW夜片内射视频在观看视频 | 贵妃高h荡肉呻吟np杨玉环| 婷婷五月久久精品国产亚洲| 国内精品久久| 777久久人妻少妇嫩草AV蜜桃| 强奸日本美女小游戏| 国产偷国产偷亚洲高清app| 伊人青青草原|