欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

用Linux架設(shè)FTP服務(wù)器(上)(1)_Ftp服務(wù)器教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!
 

使用文件傳輸協(xié)議(FTP)來通過網(wǎng)絡(luò)在計(jì)算機(jī)之間傳輸文件是很普遍的一種方法。幾乎在所有的平臺上面都有FTP 的客戶端和服務(wù)端的軟件,因此用FTP來傳送文件也是很方便的一個方法。

有很多配置FTP服務(wù)器的不同方法。其中一種是把FTP配置成只對系統(tǒng)中的用戶開放的私有服務(wù)器,這也是FTP的默認(rèn)配置。一個私有的Ftp服務(wù)器只運(yùn)行系統(tǒng)中的用戶訪問,而且可以對用戶進(jìn)行訪問控制,這樣可以給予或拒絕特定用戶的訪問權(quán)限。

另一種是把FTP服務(wù)器配置成匿名服務(wù)器。匿名Ftp服務(wù)器允許任何人(不管有沒有帳號)訪問服務(wù)器并傳輸文件。因?yàn)榭赡艽嬖跐撛诘陌踩珕栴},必須小心配置使得只允許訪問系統(tǒng)中特定的目錄。 在這一節(jié)里,我們把FTP配置成“chrooted”的方式,這種配置運(yùn)行用戶訪問,例如:Web站點(diǎn)的目錄,但是不允許他們訪問更高一層的目錄。

注意事項(xiàng)

下面所有的命令都是Unix兼容的命令。

源路徑都為“/var/tmp”(當(dāng)然在實(shí)際情況中也可以用其它路徑)。

安裝在RedHat Linux 6.1下測試通過。

要用“root”用戶進(jìn)行安裝。

wu-ftp的版本號是2.6.0。

編譯和安裝

把軟件包(tar.gz)解壓縮:

[root@deep]# cp wu-ftpd-version.tar.gz /var/tmp

[root@deep]# cd /var/tmp

[root@deep]# tar xzpf wu-ftpd-version.tar.gz

編譯和優(yōu)化

轉(zhuǎn)到wu-ftpd的新目錄下,運(yùn)行下面的命令:

編輯“ftpcount.c”文件(vi +241 src/ftpcount.c),改變下面這一行:

#if defined (LINUX)

改為:

#if defined (LINUX_BUT_NOT_REDHAT_6_0)

編輯“pathnames.h.in”文件(vi +42 src/pathnames.h.in),改變下面這一行:

#define _PATH_EXECPATH "/bin/ftp-exec"

改為:

#define _PATH_EXECPATH "/usr/bin/ftp-exec"

我們把“ftp-exec”從“/bin”目錄改到“/usr/bin”目錄下。

先設(shè)置編譯器的編譯參數(shù):

CC="egcs"

CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mCPU=pentiumpro -march=pentiumpro -fomit-frame-

pointer -fno-exceptions"

./configure

--prefix=/usr

--sysconfdir=/etc

--localstatedir=/var

--disable-dnsretry

--enable-quota

--enable-pam

--disable-daemon

--disable-newlines

--disable-virtual

--disable-plsm

--disable-pasvip

--disable-anonymous

--enable-ls

--enable-numericuid

這些編譯參數(shù)告訴編譯器如何編譯wu-ftpd:

不要用失敗的DNS查詢

加入對定額(QUOTA)的支持(如果OS支持)

加入對PAM的支持

不允許作為單獨(dú)的daemon運(yùn)行

刪除過多的空行

不支持虛擬服務(wù)器

禁止PID加鎖睡眠消息(用于繁忙的站點(diǎn))

被動連接的時候不要求用同樣的IP

不允許匿名ftp訪問

使用內(nèi)部的“l(fā)s”命令(試驗(yàn)性的)

內(nèi)部的“l(fā)s”命令顯示UID而不顯示用戶名(為了提高速度)

用下面的命令編譯和安裝軟件:

make

make install

install -m 755 util/xferstats /usr/sbin

touch /var/log/xferlog

chmod 600 /var/log/xferlog

cd /usr/sbin

ln -sf in.ftpd /usr/sbin/wu.ftpd

ln -sf in.ftpd /usr/sbin/in.wuftpd

strip /usr/bin/ftpcount

strip /usr/bin/ftpwho

strip /usr/sbin/in.ftpd

strip /usr/sbin/ftpshut

strip /usr/sbin/ckconfig

strip /usr/sbin/ftprestart

上面的“make”和“make install”可以配置軟件以保證系統(tǒng)中有編譯所需要的函數(shù)庫,然后把所有的源文件都編譯成可執(zhí)行的二進(jìn)制文件,最后把二進(jìn)制文件和配置文件安裝到相應(yīng)的目錄里。

“install –m”安裝“xferstats”程序,用于統(tǒng)計(jì)傳輸了多少文件。“touch”命令為xferstats在“/var/log”目錄下創(chuàng)建日志文件。 “chomod”把“xferlog”的權(quán)限改為只對超級用戶“root”可讀和可寫。接著,我們?yōu)椤癷n.ftpd”二進(jìn)制文件創(chuàng)建符號鏈接。最后,用 “strip”命令減小所有二進(jìn)制文件的大小以提高wu-ftpd的性能。

清除不必要的文件

[root@deep]# cd /var/tmp

[root@deep]# rm -rf wu-ftpd-version/ wu-ftpd-version.tar.gz

“rm”命令刪除所有編譯和安裝wu-ftpd所需要的源程序,并且把wu-ftpd軟件的壓縮包刪除掉。

為FTP站點(diǎn)的用戶建立沒有shell的帳號

首先,創(chuàng)建一個新的用戶,這個用戶被允許連接到Ftp服務(wù)器上。因?yàn)橐小癱hroot”的環(huán)境,這個帳號不同于正常的用戶帳號,不能受訪問限制。“chroot”使用戶產(chǎn)生這樣的感覺好像自己已經(jīng)在文件系統(tǒng)的最頂層了。

第一步

用下面的命令在“/etc/passwd”文件中創(chuàng)建用戶。對于每個允許訪問Ftp服務(wù)器的新用戶都要重復(fù)這個步驟。

[root@deep]# mkdir /home/ftp

[root@deep]# useradd -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > /dev/null 2>&1

[root@deep]# passwd ftpadmin

Changing password for user ftpadmin

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully

第二步

編輯“/etc/shells”文件并加入一個空shell,如:null。這個假的shell可以限制用戶對Ftp服務(wù)器的訪問。

[root@deep]# vi /etc/shells

/bin/bash

/bin/sh

/bin/ash

/bin/bsh

/bin/tcsh

/bin/csh

/dev/null ? This is our added no existent shell

第三步

現(xiàn)在編輯“/etc/passwd”文件,手工加上“/./”把“/home/ftp”目錄和“/ftpadmin”目錄分開,用戶 “ftpadmin”會自動轉(zhuǎn)到(chdir)“/ftpadming”目錄下。在“passwd”文件中每添加一個ftp用戶都要重復(fù)這個步驟。

編輯“passwd”文件(vi /etc/passwd),把下面這一行改為:

ftpadmin:x:502:502::/home/ftp/ftpadmin/:/dev/null

改為:

ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null

帳號為“ftpadmin”,這這個帳號的家目錄有一些奇怪。第一部分“/home/ftp/”表示“chroot”時作為根目錄的目錄。被點(diǎn)號分開的 “/ftpadmin”表示當(dāng)?shù)卿沠tp服務(wù)器的時候會自動轉(zhuǎn)到這個目錄。“/dev/null”這個空shell不允許“ftpadmin”像正常用戶那樣登錄。經(jīng)過這些改變,“ftpadmin”用戶用的不是真正的shell而是偽shell,這樣訪問Ftp服務(wù)器就受到限制。創(chuàng)建一個“chroot”用戶環(huán)境

先要創(chuàng)建一個簡單的根文件系統(tǒng)(root file system),包含有足夠的文件,如果二進(jìn)制程序、口令文件,等等。當(dāng)用戶登錄的時候,Unix就可以改變根文件系統(tǒng)(chroot)。注意一下,如果編譯的時候象上面那樣加上“--enable-ls”參數(shù),“/home/ftp/bin”和“/home/ftp/lib”兩個目錄就可以不要了,因?yàn)?WU-FTP會用自己帶的“l(fā)s”。不過我們還是介紹一下舊的方法,也就是把“/bin/ls”拷貝到“/home/ftp/bin”(chroot之后就是“/bin”)目錄下,然后把相關(guān)的運(yùn)行庫拷貝到“/home/ftp/lib”目錄下。

第一步

創(chuàng)建改變根文件系統(tǒng)(chrooted)環(huán)境所需要的所有的目錄:

[root@deep]# mkdir /home/ftp/dev

[root@deep]# mkdir /home/ftp/etc

[root@deep]# mkdir /home/ftp/bin (require only if you are not using the “--enable-ls” option)

[root@deep]# mkdir /home/ftp/lib (require only if you are not using the “--enable-ls” option)

第二步

把新目錄的權(quán)限設(shè)成0511:

[root@deep]# chmod 0511 /home/ftp/dev

[root@deep]# chmod 0511 /home/ftp/etc

[root@deep]# chmod 0511 /home/ftp/bin (require only if you are not using the “--enable-ls” option)

[root@deep]# chmod 0511 /home/ftp/lib (require only if you are not using the “--enable-ls” option)

上面這些“chmod”命令把chrooted之后的“dev”、“etc”、“bin”和“l(fā)ib”目錄設(shè)置成超級用戶“root”可讀、可執(zhí)行,用戶組和所有用戶可執(zhí)行。

第三步

把“/bin/ls”文件拷貝到“/home/ftp/bin”目錄下,并把“l(fā)s”的權(quán)限改為0111(不運(yùn)行用戶改變這個文件)。

[root@deep]# cp /bin/ls /home/ftp/bin (require only if you are not using the “--enable-ls” option)

[root@deep]# chmod 0111 /bin/ls /home/ftp/bin/ls (require only if you are not using the “--enable-ls” option)

第四步

找到“l(fā)s”程序所需的共享庫:

[root@deep]# ldd /bin/ls (require only if you are not using the “--enable-ls” option)

libc.so.6 => /lib/libc.so.6 (0x00125000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00110000)

把共享庫拷貝到“/home/ftp/lib”目錄下:

[root@deep]# cp /lib/libc.so.6 /home/ftp/lib/ (require only if you are not using the “--enable-ls” option)

[root@deep]# cp /lib/ld-linux.so.2 /home/ftp/lib/ (require only if you are not using the “--enable-ls” option)

注意:如果想用Linux的“l(fā)s”程序而不是用WU-ftpd自帶的“l(fā)s”(編譯時加上“--enable-ls”參數(shù)),才需要第三和第四步。

第五步

創(chuàng)建“/home/ftp/dev/null”文件:

[root@deep]# mknod /home/ftp/dev/null c 1 3

[root@deep]# chmod 666 /home/ftp/dev/null

第六步

把“group”和“passwd”文件拷貝到“/home/ftp/etc”目錄下,然后再改變這兩個文件。

[root@deep]# cp /etc/passwd /home/ftp/etc/

[root@deep]# cp /etc/group /home/ftp/etc/

編輯“passwd”文件(vi /home/ftp/etc/passwd)把除了“root”和允許使用ftp的用戶之外的所有其它項(xiàng)刪掉。這對于改變根文件系統(tǒng)的環(huán)境很重要,改變之后的“passwd”文件會是象下面這樣的:

root:x:0:0:root:/:/dev/null

ftpadmin:x:502:502::/ftpadmin/:/dev/null

編輯“group”文件(vi /home/ftp/etc/group),把除了“root”和允許使用ftp的用戶之外的所有其它項(xiàng)刪掉。改變之后的“group”文件會是象下面這樣的:

root:x:0:root

ftpadmin:x:502:

配置

可以到這去下載“floppy.tgz”文件:http: //pages.infinit.net/lotus1/doc/opti/floppy.tgz。把“floppy.tgz”文件解開之后,可以在相應(yīng)的目錄下發(fā)現(xiàn)我們在這本書中介紹的所有軟件的配置文件。這樣就沒有必要手工重新生成這些文件,或者用拷貝粘貼的方法把它們粘貼到配置文件中去。不管是打算自己動手生成配置文件還是拷貝現(xiàn)成的,你都要學(xué)會自己修改配置文件并且把配置文件拷貝到正確的目錄下。下面將具體說明。

為了運(yùn)行Ftp服務(wù)器,必須創(chuàng)建或者把下面的文件拷貝到相應(yīng)的目錄下:

把“ftpaccess”文件拷貝到“/etc”目錄下

把“ftpusers”文件拷貝到“/etc”目錄下

把“ftphosts”文件拷貝到“/etc”目錄下

把“ftpgroups”文件拷貝到“/etc”目錄下

把“ftpconversion”文件拷貝到“/etc”目錄下

把“ftp”文件拷貝到“/etc/pam.d”目錄下

把“ftpd”文件拷貝到“/etc/logrotate.d”目錄下

可以把“floppy.tgz”解壓之后,找到上面列出來的文件,并拷貝到相應(yīng)的目錄下,或者用拷貝粘貼的方法從本書中直接粘貼出。

配置“/etc/ftpaccess”文件

“/etc/ftpaccess”文件是用來配置“ftpd”的。這個文件主要是設(shè)置允許哪個用戶、多少用戶訪問Ftp服務(wù)器,以及一些安全方面的問題。配置文件的每一行或者定義一個屬性或者設(shè)定一個屬性值,。對于非匿名的“chroot”訪問,必須創(chuàng)建一些“guestgroup”,每一個都要對應(yīng)“/home/ftp/etc/group”文件中的項(xiàng)。

創(chuàng)建ftpaccess文件(touch /etc/ftpaccess),在文件中加入:

class openarch guest 208.164.186.*

limit openarch 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg

email admin@openarch.com

loginfails 3

readme README* login

readme README* cwd=*

message /home/ftp/.welcome.msg login

message .message cwd=*

compress yes all

tar yes all

chmod yes guest

delete yes guest

overwrite yes guest

rename yes guest

log commands real,guest

log transfers real,guest inbound,outbound

guestgroup ftpadmin

guestgroup webmaster

# We don‘t want users being able to upload into these areas.

upload /home/ftp/* / no

upload /home/ftp/* /etc no

upload /home/ftp/* /dev no

# We‘ll prevent downloads with noretrieve.

noretrieve /home/ftp/etc

noretrieve /home/ftp/dev

log security real,guest

guest-root /home/ftp ftpadmin webmaster

restricted-uid ftpadmin webmaster

restricted-gid ftpadmin webmaster

greeting terse

Keepalive yes

noretrieve .notar

現(xiàn)在把文件的權(quán)限設(shè)成600:

[root@deep]# chmod 600 /etc/ftpaccess

下面解釋配置文件中的設(shè)置:

class

“class”用來定義一個允許訪問Ftp服務(wù)器的用戶類別。可以定義任意多的類別(class)。每一個“class”行的格式如下:

class <classname> <typelist> <addrglob>

<classname>是class的名字,<typelist>是允許加到類別(class)中的用戶類型,<addrglob>是這個class允許的IP地址范圍。

<typelist>中的項(xiàng)是用逗號隔開的,每一個項(xiàng)有三種可能的取值:anonymous、guest或real。anonymous用戶是用 anonymous或ftp帳號訪問ftp服務(wù)器而且只需要訪問公用文件的那些用戶。guest用戶有一些特殊因?yàn)樗麄冊谙到y(tǒng)中沒有帳號,但是卻又是 guest組的成員。real用戶必須在Ftp服務(wù)器上有帳號,而且需要經(jīng)過服務(wù)器的安全驗(yàn)證。

<addrglob>可以用通配符,例如:“*”表示所有的站點(diǎn)。下面這一行:

class openarch guest 208.164.186.*

表示只有在系統(tǒng)中有自己帳號的guest用戶而且IP地址為“208.164.186.*”才能訪問Ftp服務(wù)器。

limit

“l(fā)imit”根據(jù)class和時間范圍來限制登錄Ftp服務(wù)器的用戶數(shù)。“l(fā)imit”的格式是:

limit <class> <n> <times> <message_file>

其中<class>是受限制的類別(class),<n>表示在這個類別中受到限制的最多用戶數(shù),<times>表示“l(fā)imit”有效的時間段,<message_file>是當(dāng)達(dá)到最大的用戶數(shù)目的時候,別的用戶還想登錄時顯示的信息。

<times>中的字符串用逗號隔開,每一個字串表示一天。星期一到星期日分別用Mo、Tu、We、Th、Fr、Sa和Su表示,周末也可以用Wk表示。表示時間的小時和分鐘之間不要用冒號隔開。“-”用來表示范圍。

例如,限制“openarch”這個類別,最多可以有20個用戶,訪問時間是星期一道星期四全天,星期五從半夜到下午六點(diǎn)。用下面這一行來表示: limit openarch 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg

如果一旦達(dá)到最大的用戶數(shù),還有別的用戶想連接Ftp服務(wù)器,就會把“/home/ftp/.too_mang.msg”中的信息傳給用戶。

loginfails

“l(fā)oginfails”設(shè)置最多允許的登錄失敗的次數(shù)。可以用下面這一行來表示:

loginfails <n>

<n>表示最多允許的登錄失敗的次數(shù)。例如,只允許失敗兩次可以這樣表示:

loginfails 3

readme

“readme”設(shè)置在什么條件下,一旦當(dāng)前目錄中的文件發(fā)生了變化需要提醒用戶。

這個命令的格式為:

readme <path> <when>

<path>是用來提醒用戶的文件的名字(例如:README),<when>設(shè)置出現(xiàn)這個提示信息的條件。

<when>可以為下面兩種形式:LOGIN或CWD=<dir>。如果為LOGIN,當(dāng)用戶成功登錄的時候就會出現(xiàn)提示信息。如果為CWD=<dir>,當(dāng)用戶進(jìn)入<dir>目錄的時候就會有提示信息。

請記住當(dāng)給匿名(anonymous)用戶設(shè)置提示信息的路徑的時候,這個路徑必須是相對于匿名ftp目錄

來源:網(wǎng)絡(luò)搜集//所屬分類:Ftp服務(wù)器教程/更新時間:2013-04-14
相關(guān)Ftp服務(wù)器教程