簡易 FTP Server 架設 -- Wu FTP[转]美高梅手机登录网

作者:电脑系统

 

美高梅手机登录网站 1


執行檔

會發現出現「usb-storage」,但此時系統會以VM為主,因此在Service Console之下,還是看不到USB硬碟。我們要將USB的控制從VM上移到Service Console之中。


[root@test root]# vi /etc/ftpaccess
# 給予的限制情況:
# <file-limit> <in|out|total> <數目或 bytes 數> <身份群組>
 
file-limit out 32   alltwo
data-limit in  10240 alltwo
 
# 上面的設定說明是這樣的, alltwo 是一個 class 群組,這個在最前頭
# 規定出來的啦!而 in 代表上傳、out 代表下載, total 則代表總量!
# 第一個範例是說, alltwo 這個群組當中的任何使用者,在一次登入當中,
# 可以下載的檔案總數,這是以檔案數量來計算的!至於第二個範例,則是說
# 在 alltwo 這個群組中的任何使用者,均僅可『上傳 10KB 的容量』!
# 注意喔!那個數字代表的是 Bytes 的,要換算成 KBytes 則需要除以 1024 

美高梅手机登录网站 2

多人多工

Linux 最為人所稱道的即是其多人多工的能力,你可以在任何時刻連線上來你的 Linux 主機,並且同時做很多的工作,例如同時執行 http 的 Web 功能,同時進行 fortran 等程式語言的編輯,並同時上網聊天!你會懷疑, Windows 98 也可以做到這樣的地步呀!不過,不要忘了,在 Linux 的系統下,你所做的任何工作都是獨立的,你可以隨時將你所不要的工作給殺掉,而且,當其中某一個程式當掉的時候, Linux 並不會當機,只要你在其他的視窗再開啟一個終端介面,然後查出當機的那一個指令的 process (過程),然後將之殺掉就可以了!根本不用再重新開機!也因為這種多人多工的強大能力,因此, Linux 系統一般來說是很少當機的,並且,由於其記憶體的管理功能完善,因此也不容易有 CPU 過熱的情況發生(如果只是做為一般伺服器使用)。

在你的 Linux 主機中,可以支援七個終端視窗介面,你可以按[Alt] [F1].....[F7]來切換不同的終端機介面!所以當其中一個終端機介面當機的時候,你可以在另外一個終端機登入,然後查出錯誤的所在(使用 ps -aux 的功能),再以 kill 將錯誤的地方殺掉即可!

背景執行

style="font-family: 宋体;">另外一個功能,就是『背景執行』的功夫了。當你輸入   

[root@tsai  root]#  cp  file1  file2  &

這一串指令的時候,表示將 file1 這個檔案複製為 file2 ,且放置於背景中執行,也就是說執行這一個命令之後,在這一個終端介面仍然可以做其他的工作!而當這一個指令( cp  file1  file2 )執行完畢之後,系統將會在您的終端介面顯示完成的消息!很便利喔!

多人多工的問題

style="font-family: 宋体;">多人多工確實有很多的好處,但其實也有管理上的困擾,因為使用者越來越多,將導致你管理上的困擾哩!另外,由於使用者日盛,當使用者達到一定的人數後,通常你的機器便需要升級了,因為 CPU 的運算與 RAM 的大小可能就會不敷使用!

& 與 [Ctrl] [z]

style="font-family: 宋体;">如前所述,背景執行可以提供你在同一個終端機介面(命令模式)當中同時做很多的事情,你可以使用 & 或 [Ctrl] [z] 來將指令放置背景中執行。例如執行 find  "/"  -name  httpd & 這一行命令,表示將尋找 httpd 這個檔案的指令放置到背景中執行的意思。另外,當你執行一個需要長時間的程式,例如執行 ftp 程式時,在程式進行當中,也可以經由按下 [Ctrl] [z] 來將程式放置於背景中。那如何由背景中將程式在叫回螢幕上呢?請參考下一個指令 fg。

style="font-size: xx-small;">fg

fg 是將程式再叫回螢幕上顯示的一個指令,在終端模式中輸入 fg 即可。當然,如果你當時並沒有程式在執行的話,系統會告訴你,並無執行中程式(no such job)。

style="font-size: xx-small;">ps       -aux

style="font-family: 宋体;">這是察看執行中的程式的一個指令,你可以配合其參數  -aux  來執行,如下:   

[root@tsai  root]#  ps  -aux

style="font-family: 宋体;">則系統將會列出連同系統服務的程式,在輸出的第一列中會出現 『PID』字樣,在那一欄中的咚咚就是每一個程式執行的代碼。例如下面的輸出畫面。   

[root@tsai  root]#  ps  -aux 
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND 
root         1  0.0  0.1  1324  532 ?        S    Jul16   0:14 init [3] 
root         2  0.0  0.0     0    0 ?        SW   Jul16   0:05 [kflushd] 
root         3  0.0  0.0     0    0 ?        SW   Jul16   0:29 [kupdate] 
root         4  0.0  0.0     0    0 ?        SW   Jul16   0:00 [kpiod] 
root         5  0.0  0.0     0    0 ?        SW   Jul16   0:00 [kswapd]

在上圖中, init 這個程式的 PID 為 1 。

style="font-size: xx-small;">kill

style="font-family: 宋体;">這是用來殺掉執行中程式的指令,需配合 ps 這個指令,當你執行一個 ftp 程式,但是他有點當當的時候,你可以 ps  -aux 這個指令查出  ftp  這個程式的代碼(PID),假設其 PID 為 110 ,然後輸入:   

[root@tsai  root]# kill  110

即可殺掉這個 ftp 程式。


美高梅手机登录网站 3

ftp 指令

[root@test root]# vi /etc/ftpaccess
unrestricted-uid test testing

我們可以再輸入「fdisk -l」來查看,發現剛才的USB硬碟已經被認識,在嘉許的系統中,是「/dev/sda」,並且其上有一個分割區是「/dev/sda1」。

Linux 基本指令介紹

 

美高梅手机登录网站 4

先說明一下,基本上雖然 Linux 目前對於圖形界面的使用已經支援的相當的不錯,但是對於一些比較細微的設定方面,畢竟是比不上使用傳統的文字介面來的有效!並且,使用文字介面來設定對於瞭解 Linux 有一定的幫助,畢竟 Linux 與 MS 的咚咚是不太相同的!鳥哥特別建議大家使用文字介面來解決問題!

除此之外,使用文字介面登入 Linux 對於系統資源的損耗也比較少,相對的,就有比較多的資源可以做為網路的用途,進而增加 Linux 的效能。尤其,在我們這個網頁中,基本上是以一般被淘汰的 586 系列電腦做為主機,因此對於記憶體與 CPU 的效能要求並不高,所以能有效的減少系統資源的浪費就盡量的減少一些容易耗掉系統資源的廢物吧!

style="font-family: 宋体;">底下我們會分門別類的將各個比較常用的指令給搬上來,你可以參考一下。另外一個最重要的地方是,在 Linux 主機上,已經內建各個指令的說明內容了,而且是很詳細的線上說明,你可以使用:   

[root@tsai  root]#  man  command <=== command 為你欲查詢的指令名稱
[root@tsai  root]#  info  command 

在上表中,針對 command 這個指令你可以使用 man 或者是 info 來查詢他的功能與說明,例如你要查尋 ls 這個指令時,你可以輸入: man  ls 或  info  ls 來查詢一下!適當的利用線上查詢對於你的英文及相關的指令功能有一定程度的幫助喔!

 

美高梅手机登录网站 5

一定要先學會的指令:ls, more, cd, pwd, rpm, ifconfig, find 
登入與登出(開機與關機):telnet, login, exit, shoudown, reboot 
Linux 多人多工與背景執行功能:& 與 [ctrl] [z], fg, ps, kill 
檔案與目錄管理:cd, pwd, ls, cat, more, mkdir, rm, rmdir, mv, cp, ln, find, whereis, chmod, chown, chgrp, df, du 
磁碟與硬體管理:mount, fdformat, fdisk, mke2fs, mkbootdisk, badblocks, fsck, rpm 
系統管理員:su, clear, dmesg, groupadd, useradd, userconf, passwd, who, whoami, top, free, quotacheck, edquota 
壓縮指令:compress, gzip, tar 
一些網路功能:ifconfig, route, netstat, hostname, ping, nslookup,talk, traceroute, mail 
其他有的沒的:date, cal, grep 
ftp 指令:ftp, ncftp, gftp 
相關設定指令:set, uname, setup, lilo, Xconfigurator, xf86config 
X-Window內的設定指令:startx, netconf, netcfg, XF86Setup 
問題討論:增加新硬碟,增加新使用者,製作開機磁片, 

 

原文:


  1. 再來將上面使用的怪怪 shell 加入到 /etc/shells 當中:

美高梅手机登录网站 6

style="font-size: xx-small;">compress

這是用來壓縮及解壓縮檔名為 .Z 的壓縮檔。要注意的是,用 compress 壓縮的時候,會將原檔案殺掉而變成檔名為 .Z 的檔案,例如你壓縮一個名為 bird.test 的檔案,則壓縮完成後只會剩下 bird.test.Z 這個壓縮檔!當然,解壓縮的時候也是一樣的,壓縮檔不見了,只有剩下被解壓縮的檔案。指令如下:   

[root@tsai /root]# compress xxxxx        <==將 xxxxx 檔案壓縮成為 xxxxx.Z 檔名 
[root@tsai /root]# compress -d xxxxx.Z   <==將 xxxxx.Z 解壓縮成 xxxxx

上表中,解壓縮也可以用 uncompress xxxxx.Z 來達成!

style="font-size: xx-small;">gzip

這個也是一個壓縮指令,與 compress 很相似,指令的用法也相同!只是壓縮的檔名為 .gz 罷了!   

[root@tsai /root]# gzip  xxxxx         <==這是壓縮指令 
[root@tsai /root]# gzip  -d  xxxxx.gz  <==這是解壓縮指令

style="font-size: xx-small;">tar

style="font-family: 宋体;">這是一個很棒的壓縮指令,這個指令可以配合 gzip 來進行整個目錄的壓縮!例如有一個名為 bird 的目錄要被你整合成一個檔案,你可以使用:tar  -xvf  *.tar  *(其中 * 為你所要整合的目錄名稱)。   

[root@tsai /root]# tar  -cvf  bird.tar  bird  <==只有將目錄轉成一個檔案,沒有壓縮 
[root@tsai /root]# tar  -zcvf  bird.tar.gz  bird <==壓縮一整個目錄成為 .tar.gz 檔案

上面這個例子的 bird.tar 只是將 bird 這個目錄整個拷貝成為一個檔案而已,並沒有壓縮,而 bird.tar.gz 則是將 bird 這個目錄壓縮成為一個檔案!基本上,我們都是使用 -zxvf 來壓縮一整個目錄的!而如果是要解壓縮呢?由於有沒有壓縮所下的參數並不相同,所以針對兩種檔案也是有兩種參數的組合:   

[root@tsai /root]# tar  -xvf  bird.tar 
[root@tsai /root]# tar  -zxvf  bird.tar.gz

上面則是解壓縮的參數! 
注意了,用 compress 及 gzip 壓縮及解壓縮的時候,會將原檔案取代掉!而使用 tar 來壓縮及解壓縮的時候,原檔案將會與產生檔案同時存在!通常我們都是使用 tar 來進行壓縮或解壓縮的!(當然,你還是可以使用 compress 及 gzip 來壓縮一個大的檔案!)

[root@test root]# vi /etc/ftpaccess
# passive ports <CIDR 位址> <最小 port> <最大 port>
# pasv-allow   <人員身份> <位址>
 
passive ports 0.0.0.0/0 65501 65505
pasv-allow all *
 
# 這代表來自任何地方的 IP 在要求 passive 連線模式時,將以 65501 ~ 65505 
# 之間的 port 來做為他們 PASV 連線的要求啦!如此一來,則 passive ports
# 將僅會隨機選取 65501 ~ 65505 之間的 5 個 port 來做為 PASV 之用,
# 其他的 port 將不會使用到 FTP 的 passive 模式!如此一來還可以建置
# 防火牆上面的 port mapping 呢!很不錯吧! ^_^

cp /vmfs/volumes/datastore1/Nostalgia/*.* /mnt/usbdisk/.

style="font-size: xx-small;">startx

這是開始執行 X-Windows 的指令!

style="font-size: xx-small;">netconf

這是網路設定的指令!

style="font-size: xx-small;">netcfg

這也是網路設定的指令!

style="font-size: xx-small;">XF86Setup

這是在 X-Windows 下以圖形介面設定 解析度、色彩度 的設定指令。

用戶端的使用執行檔

這個動作是讓USB的使用從系統管理,還原到Service Console之下。在設定完之後,必須重新啟動ESX,輸入「reboot」重新啟動ESX。重新啟動之後,當插入USB硬碟時,系統會自動有訊息,並且提示已經抓到USB硬碟,並且指定到sda這個硬碟了。

style="font-size: xx-small;">telnet

這套軟體在 Windows 及 Linux 系統中都存在,只是介面有點不很相同就是了。基本上,這個程式是 user 端用來連線登入遠端主機的。例如鳥哥人在台南,但是我可以在台南使用可以連上 Internet 的電腦,經由 telnet 連線上家裡的 Linux 主機,而進行設定!感覺上就好像在家裡玩自己的 Linux 主機一樣!一般來說,如果你是使用 Winodows 系統,則你可以在『開始』-->『執行』後,輸入  telnet  xxx.yyy.zzz.qqq ,其中, xxx.yyy.zzz.qqq 為 IP 位址,則可以連上主機(或者是 BBS )囉。當然,如果您是在 Linux 系統下,亦可直接輸入 telnet xxx.yyy.zzz.qqq 來連上主機或BBS喔!語法: telnet 主機位址(或主機名稱)

style="font-size: xx-small;">login

style="font-family: 宋体;">登入系統的指令,在遠端進入系統時,程式會自動執行。假設你所要登入的系統主機為 sun.os.test.com ,則你可以在 Windows 底下的 Telnet 軟體,或其他軟體上,執行: telnet  sun.os.test.com 則會出現如下的畫面:

SunOS  5.7

login:  username 
Password:

sun# _

style="font-size: xx-small;"> 你只要有 username 及 pass word 就可以登入系統啦!在你登入系統後, sun# 是提示字元,相當於古早的  C:> 的意思!

style="font-size: xx-small;">exit

這是離開 Linux 系統的指令,相當於 login out 的意思。

sun#  exit

style="font-size: xx-small;">shutdown

Linux 用來關機的指令,這個指令只有 root 才有權力下! shutdown 的用法如下:   

[root@tsai  root]#   shutdown  <==系統在兩分鐘後關機,並傳送訊息給在線上的人 
[root@tsai  root]#   shutdown  -h  now  <==系統立刻關機 
[root@tsai  root]#   shutdown  -r  now  <==系統立刻重新開機 
[root@tsai  root]#   shutdown  -h  20:30  <==系統在今天的 20:30 分關機 
[root@tsai  root]#   shutdown  -h  10   <==系統在 10 分鐘後關機

style="font-size: xx-small;">reboot

style="font-family: 宋体;">這是鳥哥最常用來重新開機的指令(或關機),可以配合寫入緩衝資料的 sync 指令動作,如下:   

[root@tsai  root]# sync; sync; sync; reboot

 

美高梅手机登录网站 7

style="font-size: xx-small;">ftp

FTP 這個功能不用再多談了吧?這是用來捉取網路上免費檔案的一套軟體。例如我們要連上交大的 FTP 站捉東西,可以如下:   

[root@tsai /root]#  ftp linux.cis.nctu.edu.tw 
Connected to linux.cis.nctu.edu.tw. 
220 ProFTPD 1.2.0rc3 Server (Linux.CIS FTP server) [linux.cis.nctu.edu.tw] 
Name (linux.cis.nctu.edu.tw:vbird): anonymous <==輸入 anonymous 匿名登入 
331 Anonymous login ok, send your complete email address as your password. 
Password:         <==輸入 name@server.xxx.xxx 型態的 mail-address 密碼 
230 Anonymous access granted, restrictions apply. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> dir   <==檢查網站上的目錄 
200 PORT command successful. 
150 Opening ASCII mode data connection for file list. 
-rw-rw-rw-   1 linux    adm      39491400 Aug  3 21:00 00ls-lR 
-rw-rw-rw-   1 linux    adm       3091546 Aug  3 21:01 00ls-lR.gz 
-rw-r--r--   1 linux    wheel         232 Mar 15 22:00 00mirror.today 
drwxr-xr-x   5 linux    wheel        4096 Oct 29  2000 java 
drwxr-xr-x  14 linux    wheel        4096 Aug  2 19:31 kernel 
drwxr-xr-x   4 linux    wheel        4096 Sep 28  2000 mirrors 
226-Transfer complete. 
226 Quotas off 
ftp> cd kernel/v2.4 <==進入 kernel 底下的 v2.4 目錄 
250 CWD command successful. 
ftp> get linux-2.4.0.tar.bz2.sign <==捉下 linux-2.4.0.tar.bz.2.sign 這個檔 
local: linux-2.4.0.tar.bz2.sign remote: linux-2.4.0.tar.bz2.sign 
200 PORT command successful. 
150 Opening BINARY mode data connection for linux-2.4.0.tar.bz2.sign (248 bytes) 

226 Transfer complete. 
248 bytes received in 0.014 secs (17 Kbytes/sec)

style="font-size: xx-small;">ncftp

在使用 FTP 功能的時候,因為只能一次捉一個檔案,所以要捉一群檔案的時候就會有困擾。這時我們可以使用更容易登入匿名 FTP 站的 ncftp 來執行 FTP 功能!   

[root@tsai /root]# ncftp linux.cis.nctu.edu.tw 
ncftp / > mget  -R  kernel  <==將 kernel 這個目錄的東西全捉下來!

加上了 mget -R 目錄 這個指令後,就可以將目錄下的東西完全捉下來!好用吧!

style="font-size: xx-small;">gftp

這是在 X-Windows 使用的圖形介面 FTP 咚咚!這個咚咚的使用方法就跟 CutFTP 很相似!

 

先設定ESX中的USB存取部分

一些網路功能

 

fdisk -l


[root@test /root]# vi /etc/hosts.allow
in.ftpd : 140.116.0.0/255.255.0.0

[root@test /root]# vi /etc/hosts.deny
in.ftpd : ALL : spawn (/bin/echo Security notice from host `/bin/hostname`;
/bin/echo; /usr/sbin/safe_finger @%h ) |
/bin/mail -s "%d -%h security" root@localhost &
: twist ( /bin/echo -e "nnWARNING connectin not allowed. Your attempt has been logged. nnn警告您尚未允許登入,您的連線將會被紀錄,並且作為以後的參考nn ". )

先和大家說聲抱歉,一直忙新書上市的事,因此回文也慢,希望這周能慢慢恢復正常。讀者們常常詢問使用USB直接從Service Console備份Datastore中的問題,事實上在大部分的情況下是不建議的,但還是有這方面的需要,尤其是現在USB Flash的容量越來越大,能直接從Service Console下將資料備份到USB上,對中小型企業,ESX伺服器在身邊的環境來說的確很方便,比使用備份軟體,WinSCP等工具軟體來說的確也比較直觀,因此在這篇文章中,我們就來看看如何使用Service Console中,直接存取USB儲存設備的完整過程。

特別說明:

 

在開始之前,我們先必須確定下面幾個步驟。

1、USB硬碟是能被ESX認識,並且可以寫入的。目前ESX能讀寫的檔案系統包括了Linux的ext以及Windows下的FAT32。如果你的硬碟是NTFS的話,可能就無法寫入(只能讀取),這就無法完成備份的要求了。

2、ESX有完整安裝,因為在安裝ESX時,必須安裝USB的驅動程式。只要你的ESX系統在安裝時沒有特別「不安裝」什麼,大部分的系統都可以執行。

磁碟與硬體管理

[root@test root]# vi /etc/ftphosts
# 格式為 <deny> <使用者帳號> <不許連線的IP或主機名稱>
# 格式為<allow> <使用者帳號> <不許連線的IP或主機名稱>
 
deny test   192.168.0.0/24
allow testing 192.168.1.0:255.255.255.0
# 注意上面這兩種書寫方式的不同的!

deny test2    192.168.5.10 allow test2 *

美高梅手机登录网站 8

style="font-size: xx-small;">cd

這是用來變換工作路徑的指令。一登入 Linux 系統後,root 會在 /root 下,至於使用者會在預設的 /home/username 底下,例如鳥哥的 ID 為 vbird ,則以 vbird 的身份登入後,會到 /home/vbird 這個路徑下。OK!那回到上一層可以用 cd .. 而到相對路徑可到 cd ../bird,至於絕對路徑則是 cd /usr/sbin !注意喔,在前面的提示字元會改變路徑名稱!   

[root@tsai /root]#  cd ..       <== 回到上一層 
[root@tsai /]#  cd          <== 回到使用者目錄 
[root@tsai root]#  cd /usr/bin  <== 到 /usr/bin 這一個目錄 
[root@tsai bin]#                <== 看吧!到 bin 這個目錄下囉!

style="font-size: xx-small;">pwd

style="font-family: 宋体;">這是顯示目前所在目錄的指令,例如在上個表格最後的目錄是 /usr/bin 這個目錄,但是提示字元僅顯示 bin ,如果你想要知道目前所在的目錄,可以輸入 pwd 即可:   

[root@tsai bin]#  pwd 
/usr/bin  <== 顯示路徑囉! 
[root@tsai bin]# 

style="font-size: xx-small;">ls

style="font-family: 宋体;">這是用來顯示檔案名稱與內容的指令,檔案的內容說明已經在 這裡 說明過了,在此不再重複! ls 的語法為:   

[root@tsai bin]# ls --color 以彩色顯示檔案資料 
[root@tsai bin]# ls -l     詳細列出檔案系統結構 
[root@tsai bin]# ls -a     顯示隱藏檔 (以"."開頭的檔案) 
[root@tsai bin]# ls -al    同時顯示隱藏檔與詳細資料 
[root@tsai bin]# ls -al|more 將檔案內容以一頁一頁顯示

style="font-size: xx-small;">cat

這是將檔案內容列出的指令。例如在 /root 下有一個檔名為 .bashrc (這是系統預設的檔案,是隱藏檔),你可以按下 cd 回到 /root 目錄後,執行:   

[root@tsai /root]# cat .bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i' 
alias cp='cp -i' 
alias mv='mv -i' 
alias ll='ls -l' 
alias lm='ls -al|more'

上面顯示的就是 .bashrc 這個檔案的內容啦!基本上,cat 與 DOS 下的 type 是相同的!

style="font-size: xx-small;">more

是否覺得 cat 在讀取較大的檔案的時候會有看不到的資訊呢(如果檔案太大的話),這時候你可以用 more 來一頁頁讀取喔!另外, more 也可以與其他的程式合併使用,例如 ls !(如下表中,『|』就是分隔號,可以將兩個指令放在一起執行!)   

[root@tsai /root]# more .bashrc 
[root@tsai /root]# ls -al|more

style="font-size: xx-small;">mkdir

建立新的目錄!例如我們要建立一個 test 的目錄,你可以這樣下指令:   

[root@tsai /root]# mkdir test 
[root@tsai /root]# ls -l

再執行了 ls -l 之後,你就可以看到 test 這個目錄啦!

style="font-size: xx-small;">rm    -irf

這是移除的指令,相當於 dos 下的 del 指令!這裡要注意的是,通常在 Linux 系統下,為了怕檔案被誤殺,所以都已經有 -i 這個參數, -i 是指每個檔案被殺掉之前都會確認一次。而如果要連目錄下的東西都一起殺掉的話,就要使用 -rf 這個參數了!你可以用下面這個例子來試試看有什麼不同的現象!   

[root@tsai /root]# rm test 
[root@tsai /root]# rm -rf test

style="font-size: xx-small;">rmdir

mkdir 是建立目錄,而 rmdir 就是移除目錄的指令。不過,若是欲移除的目錄裡頭有檔案或其他目錄存在,就無法移除,這時就要用剛剛的 rm -rf 來移除啦!

style="font-size: xx-small;">mv

style="font-family: 宋体;">這是移動檔案或目錄的指令,例如我們要將 .bashrc 這個檔案移動至根目錄下,則:   

[root@tsai /root]# mv .bashrc / 
[root@tsai /root]# mv /.bashrc .

而將檔案移動至目前的工作目錄,則加上 "." 這個字!

語法: mv 來源檔(或目錄) 目的檔(或目錄)

style="font-size: xx-small;">cp

就是 copy 的意思。例如我們要將 .bashrc 這個檔案複製到 /home 底下,可以:   

[root@tsai /root]# cp .bashrc /home

語法: cp 來源檔 目的檔

style="font-size: xx-small;">ln

 ln  -s  真實目錄或檔案   連結的目錄或檔案:這是連結檔案或目錄的指令,通常我們都會加 -s 這個參數,例如我們將 /usr/bin 這個目錄連接到 /root 底下,可以這樣輸入:   

[root@tsai /root]# ln -s /usr/bin bin

不過請注意喔,在你的 /root 底下的 bin 這個目錄中的所有檔案其實都是 /usr/bin 裡面的東西,所以你如果進入 /root/bin 內亂殺東西的話,等於是將 /usr/bin 內的檔案殺掉喔!

語法: ln -s 來源檔(或目錄) 目的檔(或目錄)

style="font-size: xx-small;">find

style="font-family: 宋体;">尋找檔案的指令,會將欲尋找的檔案找出來,例如下面的例子:   

[root@tsai /root]# find / -name bin

上面的意思為:在 / 目錄(根目錄)下尋找檔名(-name)為 bin 的檔案,要注意的是,因為 Linux 的檔案很多,如果你的電腦比較舊,可能會找很久...

語法: find 路徑 -name 檔名

style="font-size: xx-small;">whereis

相對於 find ,你也可以使用 whereis 這個指令來下達找尋的檔案,whereis 利用曾經找過的系統資訊內的資料去找檔案,所以速度會很快,不過,如果 whereis 找不到的話,並不代表該檔案真的不存在!這個要小心!   

[root@tsai /root]# whereis bin 
bin: /usr/bin

style="font-size: xx-small;">chmod

style="font-family: 宋体;">這是變更檔案屬性的指令,通常鳥哥都是以數字作為改變屬性的依據;在檔案的屬性中, r 為4分、w 為2分, x 為1分,如果你想要讓你剛建立的一個檔案,讓大家都看到的話,即你需要『-rw-r--r--』,這是你的三個群組的分數分別是 r w=6, r=4, r=4,所以可以下達:   

[root@tsai /root]# chmod 644 .bashrc 
[root@tsai /root]# ls -al .bashrc 
-rw-r--r--   1 root     root          216 Apr  8 13:54 .bashrc

style="font-size: xx-small;">chown

style="font-family: 宋体;">記得檔案有『擁有人』及『擁有群組』吧,這個 chown 就是在改變擁有者的指令。例如你 copy 一個檔案給 vbird ,但是因為你的身份是 root ,所以你 copy 過去的檔案 vbird 可能不能使用,因此你需要將檔案的擁有人改成 vbird 才可以!如下:   

[root@tsai /root]# cp .bashrc /home/vbird 
[root@tsai /root]# cd /home/vbird 
[root@tsai vbird]# chown vbird .bashrc

那如果想要將整個目錄下的檔案都改變擁有者與擁有群組呢?可以下達 
chown  -R  username:groupname  directory  (ex> chown -R root:root /root) 
即可喔!

style="font-size: xx-small;">chgrp

style="font-family: 宋体;">作用與 chown 相似,只是在改變檔案或目錄的『擁有群組』。

style="font-size: xx-small;">df

style="font-family: 宋体;">這是用來察看硬碟空間的指令。由於我們目前將檔案都建立在根目錄『/』下,所以只要沒有空間,則所有檔案都無法複製進來系統。不過,若你規劃出多的硬碟,則可以察看你的硬碟空間資訊,如下所示:   

[root@tsai /root]# df 
Filesystem     1k-blocks      Used Available Use% Mounted on 
/dev/hda5         964312     87648    827680  10% / 
/dev/hdb5        2150420    745500   1295680  37% /home 
/dev/hdb1        2016016   1419708    493896  74% /usr 
/dev/hda1        1022080    349880    672200  34% /win98

上面說,Filesystem 是硬碟所在的劃分表, Used 是指使用掉的硬碟空間(KB),Available是剩下空間,Mounted on則是這顆硬碟代表哪一個目錄。如上所示,根目錄(/)在 hda5 這顆硬碟,總空間有 964312 KB,剩下可用空間為 827680KB,至於 /win98 則在 hda1 中,且全部空間有 1022080 KB。

如果要將資料型態以 MB 數顯示的話,可以輸入 df -m 來達成。

style="font-size: xx-small;">du

style="font-family: 宋体;">這是用來察看目錄內所有檔案使用掉的空間的情況,如下所示:   

[root@tsai /root]# du -m

其中, du 預設的檔案輸出資料為 KB,以參數 -m 使檔案資料顯示為 MB。

 

這個指令的參數是將「/dev/sda1」這個裝置掛載到「/mnt/usbdisk」這個目錄下。而「-t vfat」則是指定該分割區的檔案系統。如果你的USB硬碟是Linux可認出的ext2/3的話,甚至可以不需要輸入檔案系統「-v」的參數。

壓縮指令

創造 guest user 與 guest user 的家目錄問題

mount /dev/sda1 /mnt/usbdisk -t vfat


關閉 FTP 喔!

mkdir /mnt/usbdisk

style="font-size: xx-small;">su

這是一個用來轉換你身份成為 super user (系統管理員)的指令,任何人只要知道 root 的密碼,就可以成為 super user,所以密碼可千萬不要外流呀!由於 RedHat 在主機之外的終端機上,無法以 root 的身份直接連線,所以你需要以一般身份的 user 連線之後,再以 su 指令來成為 super user:   

[vbird@tsai vbird]# su  <==輸入指令 
Password:       <==在這裡輸入 root 的密碼 
[root@tsai vibrd]#      <==看,使用者名稱變囉!

style="font-size: xx-small;">clear

style="font-family: 宋体;">這是用來清除螢幕畫面用的,沒有什麼太大的用處。通常是你覺得畫面太亂的時候輸入用的!直接輸入 clear 就可以了!

style="font-size: xx-small;">dmesg

style="font-family: 宋体;">在開機的時候你會發現有很多的訊息出現吧,例如 CPU 的形式、硬碟、光碟型號及硬碟分割表等等。但是訊息都是『刷』的一聲就跑過去了!這些訊息有時候對於系統管理員是很重要的,因為他提供了系統的資訊呀!要看這些訊息你可以用 dmesg 這個指令來觀看!   

[root@tsai /root]# dmesg|more

加上 |more 的原因是因為訊息太多了,所以可以加入這個管線指令來使畫面暫停!

style="font-size: xx-small;">groupadd

style="font-family: 宋体;">這是用來增加群組的指令,通常鳥哥都不用這個指令的,因為有更容易使用的指令 /bin/userconf 可以使用哩(注意,在 RedHat 7.0 以後的版本,就要使用 /sbin/userconf 哩)!

style="font-size: xx-small;">useradd

style="font-family: 宋体;">這是用來增加使用者的指令,鳥哥通常不使用這個指令,你可以使用 /bin/userconf 這個指令,更簡單易用喔(是視窗介面的喔!)(注意,在 RedHat 7.0 以後的版本,就要使用 /sbin/userconf 哩)

style="font-size: xx-small;">userconf

style="font-family: 宋体;">這是用來增加使用者、群組等,且以視窗為介面的一個指令!如果你是以遠端登入,並使用 su 指令成為 super user 的話,直接輸入 userconf 可能會找不到這個指令,你可以輸入: /bin/userconf 來啟動這個指令!(注意,在 RedHat 7.0 以後的版本,就要使用 /sbin/userconf 哩),由於這個指令的圖示較多,請到這裡來看看!

style="font-size: xx-small;">passwd

style="font-family: 宋体;">這是用來更改密碼的指令,很簡單,只要在提示字元下輸入 passwd ,然後輸入目前的密碼,再輸入兩次欲修改成的新密碼,就修改OK了!不過要注意,密碼的形式:不能與帳號相同,且需要 8 個字元以上,另外,帳號也不能太簡單!否則系統會不接受!   

[vbird@tsai vbird]# passwd 
Changing password for vbird 
(current) UNIX password:      <==這裡輸入目前的密碼 
New UNIX password:     <==這裡輸入新的密碼 
Retype new UNIX password:     <==這裡再輸入新的密碼一次 
passwd: all authentication tokens updated successfully

style="font-size: xx-small;">who

style="font-family: 宋体;">這是用來視察目前在系統上的使用者指令,你也可以使用 w 這個指令來下達動作。   

[root@tsai /root]# who 
root     pts/0    Aug  2 20:43

[root@tsai /root]# w 
  8:48pm  up 4 days,  5:08,  1 user,  load average: 0.00, 0.00, 0.00 
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT 
root     pts/0    192.168.1.2       8:43pm  0.00s  0.38s   ?     -

基本上,who 與 w 的功能是相同的,只是 who 僅列出使用者名稱與登入時間,至於 w 則會列出使用者的

  • 來源位址(IP):就是 FROM 那一項即是IP;
  • 登入時間:即是 LOGIN@ 那一項;
  • 工作項目:就是 WHAT 那一項!

style="font-size: xx-small;">whoami

style="font-family: 宋体;">這是用來確認你目前的身份的指令,由於你可能會有幾個身份在你的機器上,所以需要以這個指令來確認你的身份,不過由於 Linux 會將使用者名稱寫在提示字元上,所以這個指令目前比較少用到了。

style="font-size: xx-small;">top

style="font-family: 宋体;">這是用來指示目前系統的服務項目的動態資料。   

[root@tsai /root]# top 
 10:14pm  up 4 days,  6:34,  1 user,  load average: 0.01, 0.01, 0.00 
40 processes: 39 sleeping, 1 running, 0 zombie, 0 stopped 
CPU states:  0.5% user,  0.3% system,  0.0% nice, 99.0% idle 
Mem:   63124K av,  60844K used,   2280K free,  23604K shrd,  35648K buff 
Swap: 104380K av,   1684K used, 102696K free                 10788K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND 
 3121 root      20   0  1016 1016   820 R       0  0.9  1.6   0:47 top 
    1 root       0   0   380  368   320 S       0  0.0  0.5   0:04 init 
    2 root       0   0     0    0     0 SW      0  0.0  0.0   0:00 kflushd 
    3 root       0   0     0    0     0 SW      0  0.0  0.0   0:00 kupdate 
    4 root       0   0     0    0     0 SW      0  0.0  0.0   0:00 kpiod 
    5 root       0   0     0    0     0 SW      0  0.0  0.0   0:00 kswapd 
    6 root     -20 -20     0    0     0 SW<     0  0.0  0.0   0:00 mdrecoveryd 
  366 bin        0   0   308  288   228 S       0  0.0  0.4   0:00 portmap 
  382 root       0   0   392  376   328 S       0  0.0  0.5   0:00 apmd 
  435 root       0   0   488  480   388 S       0  0.0  0.7   0:00 syslogd 
  446 root       0   0   688  676   316 S       0  0.0  1.0   0:00 klogd

輸入 top 之後,會出現類似上面的顯示情況。上圖中說明了你的記憶體有63124K,而下方的面版說明了目前正在執行中的工作內容!

style="font-size: xx-small;">free

style="font-family: 宋体;">這是用來察看記憶體的指令。   

[root@tsai /root]# free 
             total       used       free     shared    buffers     cached 
Mem:         63124      60732       2392      23136      35648      10796 
-/ buffers/cache:      14288      48836 
Swap:       104380       1684     102696

如上圖中,說明總記憶體容量為 63124K,而使用了 60732K,另外,虛擬記憶體(Swap)共有 104380K(亦即共有 100MB 的虛擬記憶體)。

style="font-size: xx-small;">quotacheck, edquota

這些檔案是用來限制使用者在 Linux 主機上的硬碟使用容量。例如,有十個人同時分享一個 2G 的硬碟空間,但是有一個使用者就用了 1.5 GB 的容量,那相對的,其他人可使用的空間就只有剩下 0.5G 啦!不公平對不對,而且也怕被使用者填充大量的垃圾,而使用系統資源被瓜分掉!因此就有 Quota 這個咚咚的出現啦!由於執行的步驟較為繁瑣,所以額外寫了一個頁面,請到這裡來看看。

 

輸入完之後,我們就要將USB硬碟掛載在這個目錄之下。接下來輸入

相關程式設定指令

 

可以看到目前的sdb就是系統碟。接下來我們將USB Flash插入,輸入

Linux 多人多工與背景執行功能

程序執行順序

【首先謝謝「也是新手」讀者先幫忙回了這個問題】


 

接下來我們進入/mnt/usbdisk」查看,可以看到這個USB硬碟的檔案,接下來要將資料拷貝出來就簡單了。舉例來說,如果我們想要將本機硬碟上的某個Datastore中的VM複製到USB硬碟中,只要先找到該VM置放的Datastore,再使用標準的Linux指令將資料copy出來就行。舉例來說,我們要將Nostalgia下的VM備份到USB中,只要輸入下面的指令即可。

X-Window內的設定指令

 

在ESX/ESXi中,將USB的控制權交還給Service Console,需要將usbarbitrator這個參數關閉,因此我們必須輸入

  1. style="font-size: small;">Q:在 Linux 上面都是一些線上的英文說明,有沒有中文說明,或更詳細的說明資料呢?

    style="font-size: small;">A:

    其實在網路上已經有一票高手在進行 Linux how to 的翻譯工作,這是一個很有意義的事情,因為可以讓新手或者是一些有需要使用 Linux 的人,有一個很好的學習文件。你可以來下面的網址看看:

    style="font-family: 宋体;">中文How-to:

    style="font-family: 宋体;">英文How-to:

  2. style="font-size: small;">Q:在 Linux 中如何加入新硬碟?

    style="font-size: small;">A:

    style="font-family: 宋体;">其實加入新硬碟的方法也是很簡單的:

安裝硬碟:關掉 Linux 主機電源,調整 Hard Disk 的 Jump (master 或 slave),串接在 IDE 的介面,請注意,留意你增加的硬碟所串接的 IDE 介面為哪一個插槽,例如你插在 IDE2 的 Master ,則你的硬碟應為 hdc;

新增硬體於BIOS:開啟電腦後,按 del 鍵進入 BIOS,選擇 IDE Hard Disk Detector 字樣的選項,讓BIOS去捉硬碟,然後再選擇 Save and Exit;

Linux 安裝:開機進入 Linux 的時候,系統會告訴你有捉到一個新的硬體,你可以按 『configure』 由系統直接安裝即可;

格式化硬碟:以 root 的身份進入 Linux 後,執行以下兩個程式:

  • style="font-family: 宋体;">fdisk  /dev/hdc  <== hdc 與你的硬碟串接的IDE介面有關,關於這個指令的介紹請參考上面的指令說明;
  • style="font-family: 宋体;">mke2fs  -c  /dev/hdc1  <==假設硬碟全部配置成一個大硬碟,則硬碟應為 hdc1 ,以 mke2fs 將系統規劃為 Linux 的系統檔。

開機自動載入:再來則是以 vi 修改 /etc/fstab 檔案,讓每次開機把這個硬碟直接掛入系統中。例如 hdc1 這顆硬碟掛在 /mnt/hdc1 中,則 fstab 的檔案有點像這樣:(/dev/hdc1 那一行是新加入的!)

/dev/hda1               /                       ext2    defaults        1 1 
/dev/hda5               swap                    swap    defaults        0 0 
/dev/hdc1               /mnt/hdc1               ext2    defaults        1 1
  • style="font-family: 宋体;">安裝完成:然後再重新開機就可以啦!

    style="font-size: small;">Q:在 Linux 中如何增加新使用者呢?

    style="font-size: small;">A:

    style="font-family: 宋体;">無論是加入新使用者或者是加入新群組,都可以使用 /bin/userconf 這個程式來完成,使用這個程式,只要輸入 ID 及 pass word 就可以啦!(不過你必須是 root 的身份才可以執行!)詳細的執行請看上面的指令說明。

  1. style="font-size: small;">Q:在 Linux 中如何製作開機片?

    style="font-size: small;">A:

    style="font-family: 宋体;">無論何種系統,有個開機片總是比較安心的! Linux 也是一樣!雖然他很穩定,但是並不是說就不會有問題,因此製作可開機磁片以利解救 Linux 問題是一個好習慣!製作開機片的方法很簡單,只要下達:

  • style="font-family: 宋体;">mkbootdisk --device /dev/fd0 `uname -r`

就可以啦!

 

首先我們進入ESX的Service Console,不管是使用SSH,直接到本機,或是使用Dell Perc之類的遠端遙控,重點是必須能使用指令。由於在安裝ESX時,系統會將大部分的空間給Datastore用,因此我們從fdisk中看到的,都是系統碟,目前是看不到USB硬碟的。我們在Service Console下輸入

style="font-size: xx-small;">mount

style="font-family: 宋体;">這是將硬碟或者是光碟、軟碟接掛上系統的指令!之前有提過,在 Linux 下面,每一個裝置都是一個檔案(或目錄),而每一種裝置的檔案型態都不相同,因此對於 mount 後面加的參數就很重要囉:例如:   

[root@tsai /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom <=光碟 
[root@tsai /root]# mount -t vfat /dev/fd0 /mnt/floppy     <=軟碟(windows 系統檔) 
[root@tsai /root]# mount -t ext2 /dev/fd0 /mnt/floppy     <=軟碟(Linux 系統檔) 
[root@tsai /root]# mount -t ext2 /dev/hdc1 /mnt/harddisk  <=硬碟

光碟裝置檔=/dev/cdrom、軟碟裝置檔=/dev/fd0、硬碟裝置檔=/dev/hdxx。 
如上表所示, -t 是參數,至於 iso9660, vfat, ext2則是這些裝置的檔案型態!後面接的則是這個裝置所在的目錄!千萬記得,這些目錄需要是早已存在的,而且最好是空的目錄,不然目錄裡面原本存在的檔案會不見去! 
另外,注意喔!當你 mount 上光碟機或軟碟的時候,請不要輕易的拿出磁片(而且光碟片也不會被你退出),因為會造成系統讀取的錯誤!你應該用 umount 來退出!指令為 
umount  /mnt/cdrom  (umount  裝置所在目錄)

style="font-size: xx-small;">fdformat

style="font-family: 宋体;">這是用來『低階格式化』軟碟的指令。(注意:軟碟的裝置檔為 /dev/fd0 )不必將軟碟 mount 就可以格式化了,指令內容為:   

[root@tsai /root]# fdformat /dev/fd0H1440

注意喔!在上面的裝置檔案為 /dev/fd0H1440 ,其中加在 /fd0 之後的 H1440 為表示 1.44MB 的軟碟容量!在低階格式化之後,還要將軟碟的檔案格式化為 Linux 的 ext2 之型態,則需要使用 mke2fs 指令!

style="font-size: xx-small;">fdisk

style="font-family: 宋体;">這是對硬碟(也可以對軟碟喔)做分割的程式。基本的用法為=> fdisk 裝置檔案,假設您有一顆硬碟要重新規劃,而這顆硬碟為 hdc ,則你可以輸入:   

[root@tsai /root]# fdisk /dev/hdc

然後,按下 m 會出現 help 的選單,要知道的大概只有兩個子指令,一個是刪除 partition 按 d ,一個是增加 partition 按 n,假設你要增加一個 primary partition,按下 n 再按 p 再按你要的 primary partition 號碼(1-4)就可以了。假設你的 hdc 需要規劃成為一個硬碟(即 hdc1)則在輸入 fdisk /dev/hdc 後,需要按: 
n(增加) -> p(primary partition) -> 1(partition 1) -> w (儲存寫入) -> q (離開) 

style="font-family: 宋体;">同樣的,分割完硬碟(或軟碟)後,要以 mke2fs 格式化!

style="font-size: xx-small;">mke2fs

這是用來將磁碟格式化成 Linux 系統檔的指令。基本上,只要寫入對的裝置檔案就可以了。例如我們要格式化軟碟的話,或是新的硬碟 hdc1 ,則可以如此寫:   

[root@tsai /root]# mke2fs -c /dev/fd0 
[root@tsai /root]# mke2fs -c /dev/hdc1

要記得的是,在你做這個格式化的動作時,軟碟與硬碟均不可 mount 到 Linux 的系統中。

style="font-size: xx-small;">mkbootdisk

style="font-family: 宋体;">這是製作開機磁片的指令。指令很簡單:   

[root@tsai /root]# mkbootdisk --device /dev/fd0 `uname -r`

其中, `uname -r` 是目前 Linux 系統所使用的核心版本,如果你有多個核心版本的話,你以可以直接輸入核心版本。例如在這個網頁中所使用的核心有兩個版本,一個是 2.2.12-20,另一個是 2.2.18,若要以 2.2.18 設定開機的話,可以使用: mkbootdisk  --device  /dev/fd0  2.2.18 !

style="font-size: xx-small;">badblocks

style="font-family: 宋体;">這是用來檢查硬碟或軟碟有沒有壞軌的指令,你可以用底下的方式來下達:   

[root@tsai /root]# badblocks  -svw  /dev/hdc1

style="font-size: xx-small;">fsck

style="font-family: 宋体;">這是用來檢查與修正硬碟錯誤的指令。注意:通常只有身為 root 且你的系統有問題的時候才使用這個指令,否則在正常狀況下使用此一指令,可能會造成對檔案的危害!   

[root@tsai /root]#  fsck  /dev/hdc1

通常使用這個指令的場合都是在系統出現極大的問題,導致你在 Linux 開機的時候得進入單人單機模式下進行維護的行為時,才必須使用此一指令!

style="font-size: xx-small;">rpm

這是一個安裝或者是解安裝 RedHat 軟體的指令,在 RedHat 中已經有設定了一些有點像 Windows 的軟體安裝功能,這就是 rpm 這套軟體了!而 rpm 所安裝的軟體又分為兩種形式,因此你可以分別使用下面兩種參數對不同的檔案進行安裝:   

[root@tsai /root]# rpm  -ivh  xxxxx.rpm  <==將 xxxxx.rpm 檔案安裝於 Linux 系統中 
[root@tsai /root]# rpm  -ivh  --nodeps xxxxx.rpm  <==將 xxxxx.rpm 檔案『強制』安裝於 Linux 系統中 
[root@tsai /root]# rpm  -Uvh  xxxxx.rpm  <==將 xxxxx.rpm 升級 
[root@tsai /root]# rpm  -e    xxxxx.rpm  <==將 xxxxx.rpm 解除安裝 
[root@tsai /root]# rpm  -q    squid  <==察看 squid 這一個軟體的版本 
[root@tsai /root]# rpm  --recompile  yyyyy.src.rpm  <==安裝檔名為 .src.rpm 的檔案!

這裡要注意的是, rpm 的檔案主要有兩種形式,一種是已經經過編譯的 i386.rpm 檔案,令一種是未經編譯的 .src.rpm 檔案,兩種檔案形式的安裝參數是不一樣的,請小心注意!

 

將USB硬碟掛載入ESX的Service Console之下



chkconfig usbarbitrator off


建立 passive port 提供 client 端登入

找到硬碟之後,就可以將這個分割區掛載到Service Console的檔案系統之下了。首先我們先建立一個臨時的目錄,輸入


  1. 除非真的必要,否則盡量將 FTP 的 port 21 關掉;
  2. 如果真的要架設 Wu FTP ,請『一定要』將 Wu FTP 更新到最新的版本;
  3. 更新完畢之後,在架設之前,一定要考慮清楚,是否要開放 anonymous 的連線?除非必要,否則僅開放 Real 以及 guest 使用者登入即可;
  4. 設定時,最好在 /etc/ftpaccess 就限制連線者的位址,以杜絕可能的入侵者的嘗試;
  5. 盡量將使用者限制在他們自己的家目錄內;
  6. 將不想讓他連線的帳號以 PAM 模組來抵擋,亦即將使用者帳號寫入 /etc/ftpusers 裡面即可;
  7. 可以的話,以 iptables 以及 TCP_Wrappers 架設兩層防火牆,限制住開放的網域即可。

找到置放VM的Datastore並且開始複製

style="font-size: xx-small;">set

style="font-family: 宋体;">這是用來設定或是觀看目前系統的設定的指令,若只打入 set 則僅會列出目前系統的參數。

style="font-size: xx-small;">uname

style="font-family: 宋体;">這是用來觀看系統名稱的指令,可以打入 -a 參數來列出所有資訊。   

[root@tsai /root]# uname -a 
Linux vbird.adsldns.org 2.2.12-20 #1 Mon Sep 27 10:25:54 EDT 1999 i586 unknown

style="font-size: xx-small;">setup

style="font-family: 宋体;">這個是常常使用來設定系統的一個指令,執行之後會有一個視窗出現,較常使用的是 System services 這一項,可用來設定開機的時候要開放的服務!

style="font-size: xx-small;">lilo

style="font-family: 宋体;">這是用來設定多重開機,或是開機選項的指令,詳細的流程請到這裡來看看!

style="font-size: xx-small;">Xconfigurator

這是用來簡易的設定 X-Windows 的指令,當你的 X-Windows 確定是可以跑的,而你想要改變一些設定,例如:解析度、色彩度等等,就直接使用這個指令啦!

style="font-size: xx-small;">xf86config

這是用來設定 X-Windows 的指令!這個指令會比 Xconfigurator 麻煩,不過當你的 X-Windows 沒有辦法跑的時候,這個咚咚是很好用的!

 

接下來我們就來看看詳細步驟。

 


tail -f  /var/log/messages

其他有的沒的

 

美高梅手机登录网站 9

登入與登出(開機與關機)

拒絕某些使用者與開放某些使用者的登入

 

本章問題討論:

[root@test root]# groupadd myftpusers
[root@test root]# useradd -m -g myftpusers -s /sbin/nologin wwwuser1
[root@test root]# useradd -m -g myftpusers -s /sbin/nologin wwwuser2
[root@test root]# useradd -m -g myftpusers -s /sbin/nologin ftpuser
[root@test root]# passwd wwwuser1  <==不要忘記給三個人密碼!

style="font-size: xx-small;">ifconfig

style="font-family: 宋体;">這是用來查詢目前我們這個系統的網路卡的狀況的指令,可以查詢 IP、子遮罩網路及網路卡的硬體資訊等等。例如:   

[root@tsai /root]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:50:FC:20:F1:4D 
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:7651977 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:7467862 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:961 txqueuelen:100 
          Interrupt:10 Base address:0x6100

eth1      Link encap:Ethernet  HWaddr 00:80:C8:5A:87:01 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:7492497 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:7617653 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:289 txqueuelen:100 
          Interrupt:9 Base address:0x6200

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0 
          UP LOOPBACK RUNNING  MTU:3924  Metric:1 
          RX packets:512 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:512 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0

ppp0      Link encap:Point-to-Point Protocol 
          inet addr:211.74.249.38  P-t-P:172.16.11.8  Mask:255.255.255.255 
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1 
          RX packets:7469726 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:7617651 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:10

由於上面的例子是使用兩張網路卡,因此會有 eth0 及 eth1 兩個介面,至於 lo 是系統內設的遞迴網路,這是一定會有的咚咚,而且其 inet addr(IP)一定是 127.0.0.1!另外, ppp0 則是 ADSL 撥接之後所產生的虛擬介面(對外的介面!)。在這個例子中,鳥哥使用了兩張網路卡, eth0 用在內部網路, eth1 用在 ADSL 撥接,所以 eth1 就沒有 address。至於第一張網路卡的網路位址是虛擬的 192.168.1.2。而真正的對外聯繫是 ppp0 這一個撥接介面,其 internet 是 211.74.249.38!

style="font-size: xx-small;">route

style="font-family: 宋体;">這是用來看你的網路通訊包傳送的路由情況的指令。由於通信包是藉由一個一個的路由表來傳遞的,所以觀察你的路由表,對於網路除錯(debuge)就很重要啦!   

[root@tsai /root]# route 
Kernel IP routing table 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
192.168.1.2     *               255.255.255.255 UH    0      0        0 eth0 
172.16.11.8     *               255.255.255.255 UH    0      0        0 ppp0 
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0 
127.0.0.0       *               255.0.0.0       U     0      0        0 lo 
default         172.16.11.8     0.0.0.0         UG    0      0        0 ppp0

例如上表中,所有的通訊都是藉由 ppp0 這一個介面卡(Iface)並且其通訊閘(Gateway)為 172.16.11.8 這一個!另外,在虛擬 IP (內部網路)則是藉由 eth0 (192.168.1.2)這一塊網卡來連線的!

另外,你也可以使用 route 來加入你的路由表,假如你要將一個網路為 192.56.76.XXX 且子網路為 255.255.255.0 的位置加入你的 eth0 這個網路卡的連線處理中,就可以使用如下的語法:   

[root@tsai /root]# route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0

style="font-size: xx-small;">netstat

style="font-family: 宋体;">這也是用來觀察網路狀況的指令。   

[root@tsai /root]# netstat 
Active Internet connections (w/o servers) 
Proto Recv-Q Send-Q Local Address           Foreign Address         State 
tcp        0    126 swks249-38.adsl.:telnet 192.168.1.15:1341     ESTABLISHED 
Active UNIX domain sockets (w/o servers) 
Proto RefCnt Flags       Type       State         I-Node Path 
unix  2      [ ]         DGRAM                    87643  /dev/log 
unix  0      [ ]         STREAM     CONNECTED     116    @00000012

在上表黃色的部分,由於鳥哥是在另一部電腦連線進入的,所以網路位址就會不同囉!

style="font-size: xx-small;">hostname

style="font-family: 宋体;">這只是用來觀看你的主機名稱而已。   

[root@tsai /root]# hostname 
tsai.adsldns.org

style="font-size: xx-small;">ping

style="font-family: 宋体;">這是用來察看對方網路是否有動作的指令,這個指令亦可以在 windows 上面執行!   

[root@tsai /root]# ping www.kimo.com.tw 
PING www.kimo.com.tw (202.1.237.21) from 211.74.249.38 : 56(84) bytes of data. 
64 bytes from 202.1.237.21: icmp_seq=0 ttl=245 time=56.7 ms 
64 bytes from 202.1.237.21: icmp_seq=1 ttl=245 time=58.0 ms 
64 bytes from 202.1.237.21: icmp_seq=2 ttl=245 time=58.7 ms 
64 bytes from 202.1.237.21: icmp_seq=3 ttl=245 time=52.0 ms 
64 bytes from 202.1.237.21: icmp_seq=4 ttl=245 time=72.2 ms 
--- www.kimo.com.tw ping statistics --- 
5 packets transmitted, 5 packets received, 0% packet loss 
round-trip min/avg/max = 52.0/59.5/72.2 ms

例如上表中,我們去觀察 www.kimo.com.tw 是否有啟動,看每一列的最後一行,會告訴你訊息回應的時間大約是 56ms!(10-3 sec.)

style="font-size: xx-small;">nslookup

這是用來查詢或反查詢 DNS 的指令!例如我們要知道 奇摩 的網路位址,則可以如此查詢:   

[root@tsai /root]# nslookup www.kimo.com.tw 
Server:  ksdns.seed.net.tw 
Address:  139.175.10.20

Non-authoritative answer: 
Name:    www.kimo.com.tw 
Address:  202.1.237.21

系統會告訴你,我們使用的 DNS server 是 ksdns.seed.net.tw,而查詢到的網址是 202.1.237.21。如果需要更詳細的查詢,可以用下面的方式來查!   

[root@tsai /root]# nslookup 
Default Server:  ksdns.seed.net.tw 
Address:  139.175.10.20

> set type=any            <==告訴系統我們要詳細的資料! 
> www.kimo.com.tw 
Server:  ksdns.seed.net.tw 
Address:  139.175.10.20

Non-authoritative answer: 
www.kimo.com.tw internet address = 202.1.237.21

Authoritative answers can be found from: 
kimo.com.tw     nameserver = ns1.kimo.com.tw 
kimo.com.tw     nameserver = ns1.yahoo.com 
kimo.com.tw     nameserver = ns3.europe.yahoo.com 
kimo.com.tw     nameserver = ns5.dcx.yahoo.com 
ns1.kimo.com.tw internet address = 210.59.144.1 
ns1.yahoo.com   internet address = 204.71.200.33 
ns3.europe.yahoo.com    internet address = 217.12.4.71 
ns5.dcx.yahoo.com       internet address = 216.32.74.10

style="font-size: xx-small;">talk

這是用來交談的指令。

style="font-size: xx-small;">traceroute

style="font-family: 宋体;">這是用來追查通訊包傳送的情況,例如我們要從 seednet 的網路上查詢到成大的代理伺服器的通訊狀況,可以使用如下的指令:   

[root@tsai /root]# /usr/sbin/traceroute proxy.ncku.edu.tw 
traceroute to proxy.ncku.edu.tw (163.28.112.100), 30 hops max, 38 byte packets 
 1  172.16.11.8 (172.16.11.8)  128.378 ms  68.920 ms  118.313 ms 
 2  139.175.15.1 (139.175.15.1)  54.146 ms  38.557 ms  44.320 ms 
 3  R58-37.seed.net.tw (139.175.58.37)  61.339 ms  43.177 ms  39.548 ms 
 4  R56-162.seed.net.tw (139.175.56.162)  66.631 ms  43.182 ms  41.429 ms 
 5  203.72.191.222 (203.72.191.222)  65.538 ms  61.379 ms  38.887 ms 
 6  140.116.241.230 (140.116.241.230)  40.159 ms  46.107 ms  46.854 ms 
 7  proxy.tnrc.edu.tw (163.28.112.100)  38.641 ms  57.286 ms  46.380 ms

系統會告訴你,總共通過了7個路由,並列出了每一個路由的 Internet 位址。這個東西有個好處,可以告訴你,當網路出問題時,問題是在哪一個地方!

style="font-size: xx-small;">mail

style="font-family: 宋体;">這是用來收發信件的指令,詳細的流程我們會在 mail 架站中提及。

 


 

檔案與目錄管理

[root@test root]# vi /etc/ftpaccess
# 底下的資料為 VBird 的 FTP 主機設定範例
#
########################################################################
# 1.  針對 Server 的設定項目:
########################################################################
# 1.1 針對群組的設定項目
class           all             real,guest,anonymous    140.116.0.0/16
class           allreal         real                    140.116.0.0/16
class           allguest        guest                   !61.141.0.0/16  *
class           allanonymous    anonymous               !61.141.0.0/16  *

# 1.2 其他主機相關的設定項目
email           vbird@tsai.adsldns.org
hostname        tsai.adsldns.org
shutdown        /etc/shutmsg
loginfails      3
log             transfers       anonymous,guest,real    inbound,outbound
passwd-check    rfc822          warn

# 1.3 訊息管理
readme          README*         login
readme          README*         cwd=*
message         /welcome.msg    login
message         .message        cwd=*

# 1.4 指令管理
compress        yes             all
tar             yes             all
chmod           no              guest,anonymous
delete          no              anonymous
overwrite       no              anonymous
rename          no              anonymous

# 1.5 人物登入管理
deny-uid        %-499           e000-
deny-gid        %-499           e000-
allow-gid       myftpusers

# 1.6 時間相關的設定值
timeout data    2400
timeout idle    1800
timeout maxidle 1800

# 1.7 主機最大連線人數設定
limit   all             30      Any     /etc/ftpmaxnumber

# 1.8 被動的 port 設定
passive ports   0.0.0.0/0       65501   65510
 

########################################################################
# 2.  針對實體用戶的設定
########################################################################
restricted-uid  mysiteuser
 

########################################################################
# 3.  針對 guest 用戶的設定
########################################################################
limit           allguest        10      Any     /etc/ftpmaxnumber
guestuser       wwwuser1        wwwuser2        ftpuser

# 3.1 www users
guest-root      /home/wwwuser1/public_html      wwwuser1
guest-root      /home/wwwuser2/public_html      wwwuser2
throughput      /home/wwwuser1/public_html      *   *   102400  -       *
throughput      /home/wwwuser2/public_html      *   *   102400  -       *

# 3.2 FTP users
guest-root      /home/ftpuser                   ftpuser
ul-dl-rate      1       allguest
throughput      /home/ftpuser   *       *       64000   -       *
 

########################################################################
# 4.  針對 anonymous 用戶的設定
########################################################################
limit           allanonymous    5       Any     /etc/ftpmaxnumber
anonymous-root  /var/ftp
limit-time      anonymous       10
file-limit      out             20              allanonymous
data-limit      out             10000000        allanonymous
throughput      /var/ftp        *       *       32000   -       *
throughput      /var/ftp        /upload *       16000   -       *
upload          /var/ftp/upload yes ftp sys 0666 

style="font-size: xx-small;">date

這是用來察看日期的指令。   

[root@tsai /root]# date 
Fri Aug  3 19:09:31 CST 2001

style="font-size: xx-small;">cal

這是用來叫出日曆的指令。   

[root@tsai /root]# cal 
     August 2001 
Su Mo Tu We Th Fr Sa 
          1  2  3  4 
 5  6  7  8  9 10 11 
12 13 14 15 16 17 18 
19 20 21 22 23 24 25 
26 27 28 29 30 31

style="font-size: xx-small;">grep

style="font-family: 宋体;">這是用來搜尋某些特定字元的指令。例如使用 ps -aux 查詢系統服務時,我們只需要知道 sendmail 是否有動作,則可以使用管線指令『|』來加入 grep 這個指令同時運作。   

[root@tsai /root]# ps -aux|grep sendmail 
root       443  0.0  1.0  2092  660 ?        S    Jul26   0:36 sendmail: accepti 
vbird     8387  0.0  0.7  1240  492 pts/1    S    19:11   0:00 grep sendmail

上表則表示 sendmail 有在運作了!

  1. 修改一下歡迎畫面檔案:

註:還是得注意一下你的防火牆機制與 /etc/hosts.deny 裡面是否將 in.ftpd 這個服務關掉了?!會造成無法連線的原因有很多都是因為沒有將防火牆的機制打開的緣故!請再回頭詳細看一下簡易防火牆設定一文

系統管理員

 

  • FTP 是 File Transfer Protocol 的簡寫,主要的功能是進行 Server 與 Client 端的檔案管理、傳輸等事項;
  • Wu FTP 是很常見的一個 FTP 軟體,不過由於安全性,建議務必升級到最新版本,此外,他的主要設定檔是 /etc/ftpaccess 這一個;
  • 除了 Wu FTP 這個 FTP 軟體之外,其實可以使用 SSH 提供的 sftp 功能來取代 FTP;
  • FTP 這個 daemon 比較常以 super daemon 來管理,亦即 xinetd 或者是 inet 這兩個 super daemon ;
  • FTP 這個 daemon 所開啟的正規的 port 為 20 與 21 ,其中, 21 為指令通道, 20 為資料傳輸通道;
  • FTP 的傳輸路線主要分為主動與被動(Passive, PASV),如果是主動的話,則 ftp-data 以 20 傳送,否則則以 /etc/ftpaccess 規定的 passive ports 或者隨機選取大於 1024 的 port 來進行被動式連線模式;
  • 一般來說, FTP 上面共有三個群組,分別是實體用戶、訪客與匿名登入者(real, guest, anonymous);
  • 可以藉由修改 /etc/passwd 裡面的 Shell 欄位,來讓使用者僅能使用 FTP 而無法登入主機;
  • 可以使用 guestuser 及 guest-root 來限制實體用戶,使成為訪客用戶;
  • 需要以 upload 來設定可以讓 anonymous 上傳的目錄,並設定好其權限喔!
  • FTP 的指令、與使用者活動所造成的登錄檔是放置在 /var/log/xferlog 裡面;
  • 在 Client 端使用 ftp 這個程式時,可以加上『 ftp -p hostname』來讓連線變成 passive 模式。
  1. 重新啟動 xinetd 即可!

 

 


%xu  可上傳的 bytes 數
%xd  可下載的 bytes 數
%xR  上傳與下載的比例 (1:n)
%xc  剩下的可用 bytes 數
%xT  時間限制 (分鐘)
%xE  由開始登入到目前的時間預估(分鐘)
%xU  上傳限制 (與 file-limit 及 data-limit 的 in  有關)
%xD  下載限制 (與 file-limit 及 data-limit 的 out 有關)
  1. 由於目前的 NAT 主機可以記錄由內部電腦連線出去的資訊,因此,藉由 port 21 的連線可以順利的被建立起來;
  2. 當 Client 端由 port 21 下達資料傳輸的命令時,此時『個人PC』會告訴 FTP Server 說:『我開了一個 >1024 的埠口等你來連線喔』!
  3. 這個時候要特別留意的是,『個人PC』經過NAT主機連線後,在 FTP Server 看到的『個人PC』的 IP 其實是 NAT 那部主機的!所以,這個時候 FTP Server 會主動的由 port 20 向 NAT 主機的 >1024 那個 port 要求建立連線!(請翻閱NAT主機一章)

 

 

簡易防火牆

 

特別留意:這個檔案並不會自動的消除,並且,如果設定錯誤,您可能無法連上 FTP ,因此,在過了那個關閉 FTP 的時間點之後,以上面的例子來說,就是 2003/03/30 ,您最好將該檔案刪除啊!不然可能會查不出來『到底是那個環節造成我的 FTP 無法連線』的窘境喔!

 

 

 

 

 


 

 

 

重新啟動 xinetd

 

使用 PAM 模組的機制來抵擋:

 

 

[root@test root]# vi /etc/shells
/bin/bash
....(略)...
/sbin/nologin
[root@test root]# vi /etc/ftpaccess
# 格式很簡單,就是:
# upload <家目錄> <次目錄> <yes|no> <檔案所屬人> <群組> <權限> <目錄>
 
anonymous-root /home/ftp/public
upload /home/ftp/public /upload  yes ftp sys 0666
upload /home/ftp/public /upfiles yes ftp sys 0666 nodirs

# 第二行顯示的是,我的 /home/ftp/public/upload 可以允許匿名者上傳資料,
# 並且上傳到主機的檔案所屬人與群組為 ftp/sys ,此外,檔案的權限為 0666 
# 至於 /home/ftp/public/upfiles 這個目錄當中則僅能上傳檔案,不能建立目錄

 

 

 

 

 

 

 

這樣大概就可以讓 root 登入啦!不過『強烈建議不要這麼做!』

 

時間相關的設定項目

[root@test root]# vi /welcome.msg
Welcome to my FTP site.
Now is the time ==> %T
The host name is %L
You are %U and from %R
There are %N person in my site, now.
If you have any problem please call me
%E
 
是的!內容只要上面這樣即可!,馬上來測試一下設定的結果
 
[root@test root]# ftp localhost
Connected to localhost (127.0.0.1).
220 vbird.adsldns.org FTP server (Version wu-2.6.1-20) ready.
Name (192.168.1.100:test): test
331 Password required for test.
Password:  <==輸入密碼
230-Welcome to my FTP site.
230-Now is the time ==> Fri Mar 21 12:03:49 2003
230-The host name is vbird.adsldns.org
230-You are vbird and from 192.168.1.100
230-There are 1 person in my site, now.
230-If you have any problem please call me
230-root@localhost
230-
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye

 

1. 修改 wu-ftpd 這個裡面關於 daemon 的名稱:
 
[root@test root]# vi /etc/xinetd.d/wu-ftpd
service vbftp <==修改這裡就對啦!
{
        disable = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.ftpd
        server_args             = -l -a
        log_on_success          = DURATION USERID
        log_on_failure          = USERID
        nice                    = 10
}
 
2. 修改 /etc/services 的 daemon 相關設定內容
[root@test root]# vi /etc/services
 
vbftp    3366/tcp
 
# 上面這一行可以加在這個 /etc/services 裡面的最後一行!自己設定的啦!

3. 重新啟動 xinetd
 
[root@test root]# /etc/rc.d/init.d/xinetd restart


 

  • 如果您的使用者可以到達系統的根目錄,那麼他將取用 /welcome.msg 這個檔案;
  • 如果使用者只能在自己的家目錄內活動時,那麼此時他的『根目錄』會變成他的『家目錄』!因為這樣他才離不開自己目前所在的目錄啊!例如 test 這個使用者被限制在自己的家目錄內活動,那麼他的進站歡迎畫面則是取用 /home/test/welcome.msg 喔!
  • 至於如果是匿名者登入的話,由於匿名者一定都會被限制在匿名者登入的目錄,所以您也必需要將該檔案放置在他們的根目錄喔!

 

 

重點回顧

鳥哥的 Linux 私房菜 -- 基礎學習篇

 

 

[root@test root]# vi /etc/ftpaccess
# 就直接使用最初的設定 deny-uid <帳號、UID或範圍>
 
deny-uid %-499 e000-
deny-gid %-499 e000-
allow-uid ftp
allow-gid ftp

 

 

上傳、下載的比例 ratio 設定:

 

 

 

 

 

  • ftpcount :主要用來計算『目前連線的人數』,可以計算出各種身份的連線人數啊!
  • ftpwho:可以顯示出『目前連線的使用者是那個 User ?使用那個 PID?動作多久了?』等等的資訊呢!
  • ftprestart:重新啟動 ftp 啊!
  • ftpshut:指定時候關閉 FTP 的一個指令喔!
  • in.ftpd:這個就是主要的 Wu FTP 的 daemon 囉!我們啟動的 wu ftp 就是他的工作呢!

deny  test *
allow test *

什麼是『被動, passive』的連線

 

[root@test root]# vi /etc/ftpaccess
# 規範的格式為:
# <limit> <人物群組名稱> <最大連線數> <時間> <被拒絕時顯示的文件檔案>
 
limit all       20 Any      /etc/ftpmaxnumber
limit guest     10 Any      /etc/ftpmaxnumber
limit anonymous 5  Any0800-2000 /etc/ftpmaxnumber
 
由上面的限制當中,我們知道,在 all 這個人物群組當中,最大的同時上線
人數為 20 人,並且,這個設定是任何時刻均有效(Any),如果你是第 21 個
連線進來我的 FTP 的人,那麼您的螢幕將會出現 /etc/ftpmaxnumber 這個檔案
的內容,並且『無法連線進入我的 FTP 』!請特別留意 Any 的大小寫,若
寫錯時,這個設定將不會生效!
 
[root@test root]# vi /etc/ftpmaxnumber
這裡已經太多人啦!請您等一下再進入! ^_^

[root@test root]# /etc/rc.d/init.d/xinetd restart

FTP 的功能簡介

 

  1. 修訂一下 /etc/shells:

 

 

基礎學習篇

 

 

 


什麼時候才要設定 FTP 啊!開放誰人連進來

 

正規表示法

參考資源

 

 

註:某些情況當中,使用者可能會希望一天之中某些時候啟動 FTP 而某些時刻關閉 FTP ,例如 8-16 點啟動 FTP 而 16-隔天8點關閉 FTP ,這種情況下,您可以藉由 xinetd 這個 super daemon 的功能來達到這個目的!而不是使用這個 shutmsg 喔!切記

 

 

 

 

 

  • /etc/ftpaccess:這是最主要的設定檔了!所有跟 Wu FTP 有關的設定內容,都可以在這個檔案做修訂;
  • /etc/pam.d/ftp, 與 /etc/ftpusers:這兩個檔案與 PAM 模組關係較大!在預設的情況中,只要在 /etc/ftpusers 這個檔案內的使用者『都不能使用 FTP 的服務』
  • /etc/ftphosts:用來允許或拒絕(allow/deny)某部主機或者某位使用者是否能夠登入 FTP 主機的設定檔案,基本上,這檔案裡面的設定也可以直接在 /etc/ftpaccess 當中設定喔!
  • /etc/xinetd.d/wu-ftpd:這個是用來啟動 FTP 的 daemon 設定檔案~當然啦,主要是掛在 xinetd 這個 daemon 下的,如果是掛在 inetd 這個 daemon 時,就有可能是 /etc/inet.d 底下的檔案囉!

 

在 NAT 或者防火牆後端的 FTP Client 連線問題:

FTP 正常情況下的連線方向:

  1. Server 端挑選 > 1024 的埠口等待連線:在接受 client 的 PASV 要求之後,如果沒有特別的設定時 (目前的 FTP 伺服器版本已經可以指定 passive port 來規定被動式連接的埠口號碼 ) ,Server 會隨機選取一個大於 1024 的埠口,並經由命令通道告訴 client 端說:『我已經開了一個 ftp-data 的埠口等妳連線喔!』並開始等待 client 端的連線;

 

 

 

 

 

 

 

使用 Super daemon 管理 FTP 的情況

[root@test root]# vi /etc/ftpaccess
# path-filter <群組> <訊息檔案> <允許字元> <不許字元1> <不許字元2> ...
 
paht-filter anonymous /etc/pathmsg ^[-A-Za-Z0-9._]*$ ^. ^-
 
[root@test root]# vi /etc/pathmsg
請注意,您的檔案名稱不符合本站的限制,請檢查:
1. 檔名起始字元需為英文或數字或底線;
2. 檔名起始字元不可為 . 或者減號 - 

 

要被抵擋的使用者帳號寫入到 /etc/ftpusers

 

 

[root@test root]# vi /etc/shells
/bin/sh
/bin/bash
/bin/tcsh
/bin/csh
/bin/zsh
/sbin/nologin

 

Server 端的安全設定項目:

  1. 重新啟動 xinetd 囉!

 

 

 

:這個部分的指令並不是 wu ftp 所提供的,但是粉重要,所以先提出說明喔!

 

 

 

 

 

 

歡迎畫面的建立、 Readme 檔案與關閉 FTP 訊息內容

美高梅手机登录网站 10

 

 

 

 

 

 

 

 

 

[root@test root]# vi /etc/ftpaccess
# 準備抵擋囉!就以 <deny> <位址或主機名稱> <回覆給使用者訊息的文件>
 
deny 192.168.0.100  /etc/ftpdeny.msg
deny *.adsldns.org  /etc/ftpdeny.msg
 
# 上面的設定當中,當 192.168.0.100 這個 IP 來的 FTP 要求封包時,
# 不僅不提供其 FTP 的連線,並且會顯示 /etc/ftpdeny.msg 這個檔案的內容!
# 同樣的,只要來自 .adsldns.org 的網域的電腦也都會被抵擋啊!

[root@test root]# vi /etc/ftpdeny.msg
您無法直接登入這部主機,請與您的 FTP 管理員聯絡!
管理員 E-Mail 位址為: %E


/sbin/iptables -A INPUT -p TCP -i eth0 -s 140.116.0.0/16 --dport 20:21  
  -j ACCEPT
/sbin/iptables -A INPUT -p TCP -i eth0 -s 140.116.0.0/16 --dport 65501:65505
  -j ACCEPT 
  1. Client 端發送資料傳輸要求的命令給 Server:與主動式連線不一樣的是,在被動式連線時,Client 端在下達命令之後,並告訴 FTP Server 說『我要使用 PASV 模式(就是 passive 啦!)的方式來進行資料傳輸』;

很抱歉

 

[root@test root]# vi /etc/xinetd.d/wu-ftpd
service ftp
{
        disable = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.ftpd
        server_args             = -l -a
        log_on_success          = DURATION USERID
        log_on_failure          = USERID
        nice                    = 10
}

 

為何會被取消使用 FTP 的權力

 

這個指令對於想要優化自己主機網路頻寬的朋友真是太有用了!我們可以限制使用者(不論任何身份,均有效)在不同的目錄底下,具有不一樣的下載速 度,如此一來,可以讓主機的頻寬花在該花的地方,而不至於被其他不明使用者佔用了太多的頻寬去呢!我就蠻喜歡的說~一般來說,如果您將您所提供的檔案放置 在一個下載目錄,而這個目錄裡面又分為多個次目錄,那麼可以使用上面第二個範例的例子,將根目錄與次目錄分開來書寫,然後可以指定不同次目錄底下的傳輸速 度,例如第二與第三個範例的樣式啊!另外,特別留意的是:

pam 模組與 /etc/ftpusers 的關係

 

修改 FTP 預設的 port 21 的連線

 

 

  1. 開始設定我們的 /etc/ftpaccess 內容:

FTP 本身提供的抵擋 username 或 host 的控制項目

  1. Server 端接受後,回應給 Client 端:當 Server 接收到 Client 的要求之後,會回應 Client 端的需求,此時 Server 端會建立等待連線的資源,並且將一帶有 SYN 與確認 (ACK) 的封包送回 Client 端;

 


 

 
原理:
  :FTP 的功能簡介
  :FTP 的運作流程與使用到的 Port
  :什麼是『被動, passive』的連線?
  :FTP 的替代方案與安全性問題
  :什麼時候才要設定 FTP 啊!開放誰人連進來?
套件安裝:
Server 端設定:
  :Wu FTP 的結構
  :最簡單的 ftpaccess 設定檔
  :使用 Super daemon 管理 FTP 的情況
  :歡迎畫面的建立、 Readme 檔案與關閉 FTP 訊息內容
  :限制最大線上人數
  :限制與取消使用者的家目錄規範
  :時間相關的設定項目
  :流量與上傳下載總量的限制項目
  :創造 guest user 與 guest user 的家目錄問題
  :anonymous 的根目錄與建立可上傳目錄
  :針對人物(real, guest, anonymous)的限制設定項目
  :拒絕某些使用者與開放某些使用者的登入(/etc/ftphosts, deny-uid, allow-uid)
  :目錄與連結檔的問題
  :建立 passive port 提供 client 端登入
  :修改 FTP 預設的 port 21 的連線
  :一個多樣化的實例
Client 端的使用 FTP 軟體:
  :ftp
  :ncftp
Server 端的安全設定項目:
  :iptables
  :TCP_Wrappers
  :pam 模組與 /etc/ftpusers 的關係
  :FTP 本身提供的抵擋 username 或 host 的控制項目
重點回顧
參考資源
本章習題練習

 

 

 

 

 

  1. Client 端回應確認封包:上面這三個步驟與主動式連線一樣,同樣的完成三向交握後,建立命令通道了!底下說明被動式資料傳輸通道的建立。

一個多樣化的實例

簡易 FTP Server 架設 -- Wu FTP
本文已不再維護,更新文章請參考 vsftpd的介紹

限制流量的方法 throughput:

 

 

iptables

 

 

 


事實上,我們在網路常用指令那個章節當中已經介紹過了 ftp 與 ncftp 這兩個很好用的 client 端軟體了,在這裡我們再次的強調一下這兩個軟體,其中,比較重要的是強調傳輸的模式。在 Server 與 Client 傳輸的過程中,資料的流動主要分為 binary 與 ascii 兩種模式,需要注意的是:

  • Binary 的傳送方式當中,FTP Server 並不會去改變檔案的內容,所以資料得以完整的呈現;
  • 但在 ASCII 傳輸模式當中,主要將資料視為一般的純文字檔,例如:原始碼或者是設定檔等等,在這種傳輸模式當中,Server 會將檔案以一行一行來傳送,所以如果您以 ASCII 傳送經過編譯過的 binary program 時,將可能導致無法執行的問題(因為被轉成文字檔啦!)

底下我們就來介紹兩個軟體吧!  


  • style="color: #000099;">ftp

    style="color: #000099;">遠端傳送資料當中,速度最快的協定之一
    語法:

[root @test /root]# ftp [-p] host [port]
參數說明:
-p :啟動 PASSIVE 模式!
範例:
[root @test /root]# ftp localhost     <==預設是以 port 21 來進行連線
[root @test /root]# ftp localhost 1354   
如果你設定的 ftp 的 port 非正規的 21 ,則可以這樣!

[root @test /root]# ftp localhost  <==連接到遠端主機
Connected to localhost (127.0.0.1).
220 localhost FTP server (Version wu-2.6.1-20) ready.
Name (127.0.0.1:test): test
331 Password required for test.
Password: <==輸入密碼
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir          <==顯示遠方主機的內容
ftp> cd           <==變換遠端主機的目錄
ftp> close or bye or exit <==離開遠端主機
ftp> get file       <==取得遠端主機的檔案
ftp> mget file       <==取得所有的檔案,例如 mget .bash* !
ftp> put file       <==將本地端檔案 file 丟到遠端主機上
ftp> mput file       <==與 mget 差不多意思啦!
ftp> delete file      <==殺掉遠端主機的 file 檔案
ftp> help         <==顯示求救指令!
ftp> mkdir dir       <==在遠端主機上面建立目錄
ftp> lcd          <==變換本地端路徑!
ftp> ascii or binary    <==重要的很!上面提過的!

 


  • style="color: #000099;">ncftp

    style="color: #000099;">登入匿名主機最好用的文字介面 FTP 軟體!
    語法:

[root @test /root]# ncftp [host]
[root @test /root]# ncftp [ftp://domain.name/path]
參數說明:
可以直接連接到 host 主機,也可以直接連接到主機的某個路徑之下,相當的方便
範例:
[root @test /root]# ncftp ftp.nsysu.edu.tw   <==連接到中山大學 FTP 站
[root @test /root]# ncftp ftp://ftp.nsysu.edu.tw/Linux
直接連接到 Linux 底下的 Linux 目錄下!

遠端主機的一些服務指令:
ncftp /pub/Linux > cd Redhat      <==變換目錄
ncftp /pub/Linux > dir         <==顯示目前目錄下的檔案與目錄資訊
ncftp /pub/Linux > get file1       <==將 file1 的資料存到本地端
ncftp /pub/Linux > get -z file1 file2  <==將 file1 存到本地改檔名為 fill2
ncftp /pub/Linux > get -A file1 file2  
將 file1 以累積的方式(append)增加到 file2 這個檔案
ncftp /pub/Linux > pub file       <==將檔案由本地端上傳至遠端!
ncftp /pub/Linux > rename file1 file2  <==將遠端的主機之 file1 更名為 file2
ncftp /pub/Linux > rm file       <==刪除檔案
ncftp /pub/Linux > rmdir directory   <==刪除目錄
ncftp /pub/Linux > mget directory  <==可以下載『整個目錄』的資料!很棒吧!

本地端主機的一些指令功能:
ncftp /pub/Linux > lcd      <==變更本地端目前所在的目錄
ncftp /pub/Linux > lls      <==顯示目前本地端所在目錄的檔案與目錄資訊
ncftp /pub/Linux > lmkdir    <==在本地端建立目錄
ncftp /pub/Linux > lpwd     <==顯示目前本地端主機的所在目錄
ncftp /pub/Linux > lrm     <==刪除本地端的檔案
ncftp /pub/Linux > lrmdir    <==刪除本地端的『目錄』


  1. Client 端主動向 Server 端發送連線需求:

 

Telnet 伺服器

  1. 將群組設定成為 real, guest, anonymous 這三個群組分別控制!(用 class 來區分喔!);
  2. 用戶身份有 real, guest, anonymous,其中, real 僅允許來自 140.116.0.0/16 這個 B class 的網域,其他兩者雖可來自於所有網域,但不允許來自 61.141.0.0/16 這個 B Class 的網域;
  3. 允許使用 passive ports ,port number 設定為 65501 - 65510 這 10 個 ports ;
  4. 系統裡面小於 499 以及大於 65000 的 UID 與 GID 都被拒絕登入;
  5. 任何時刻,最大線上人數限制為 30 人,其中, guest 最多 10 人,而 anonymous 最多為 5 人;
  6. 實體用戶 mysiteuser 被限制他僅能在他的家目錄當中工作,無法離開其家目錄,至於其他實體用戶則不在此限;
  7. 我有兩個 WWW 的個人用戶 wwwuser1 與 wwwuser2 ,我將這兩個用戶訂為 guest 身份,為使他的網頁資料傳輸方便,將他的 FTP 主機的家目錄設定為他的 WWW 家目錄,亦即為 /home/wwwuser1/public_html ,並且設定傳輸速度最大為 100 Kbytes/second。注意,我的 ftp 使用者預設的群組為自行建立的 myftpusers;
  8. 我有一個 FTP 交換連結用戶 ftpuser,我與他交換連結,連上下傳都需要注意!上下傳比例為 1.0 ,並且限制他傳輸的速度為 64 Kbytes/second ;
  9. 其他的匿名登入者的家目錄設定為 /var/ftp 這個目錄當中,並且限制 anonymous 一次連線最久 10 分鐘,而且最多僅能下載 20 個文件,以及 10MB 的資料量,此外,傳輸速度最快僅能到達 32 Kbytes/second。至於上傳的設定方面,僅允許上傳到 /var/ftp/upload 這個檔案,此外,預設檔案擁有者為 ftp 群組是 sys,上傳速度最快為 16 Kbytes/second;

歡迎畫面的建立:

 

 

 

本章習題練習 ( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看 )

流量與上傳下載的限制項目

 

 

限制與取消使用者的家目錄規範

[root@test root]# vi /etc/ftpaccess
 
guestuser *
realuser  test1 test2
 
# test1 與 test2 中間用空格隔開!這樣就成功啦!

[root@test root]# vi /etc/ftpaccess
# 給予的限制情況:
# ud-dl-rate <數字> <使用者身份群組>
 
ul-dl-rate 2 all
 
# 這表示 所有的人物 可以上傳 1M 下載 2M 的意思!
  1. 另一個方法就是使用被動式連線 (passive)!什麼是被動式連線呢?想一想,既然『主機主動』連線到我的 NAT 後面的 client 不能成功,那麼我反其道而行,如果以 client 來連到 server 呢?是否就變成如同 port 21 相似的連線方向,如此一來不就可以成功的建立連線了嗎?呵呵!沒錯,而且也不需要啟動上面兩個模組了,並且也不擔心 FTP Server 是否啟用非 port 20 的 ftp-data port 啦!這部份我們底下說明喔。

目錄與連結檔的問題




%T  本地端的主機時間(格式為 Fri Mar 21 11:28:50 2003)
%F  使用者目前所在目錄之 partition 所剩空間(不一定支援所有系統)
%C  使用者目前所在的目錄
%E  系統管理員的 email ,這個就是剛剛設定 ftpaccess 內的 email 值
%R  遠端主機的 IP 或 hostname !
%L  本地端主機的名稱或 IP
%U  使用者的登入帳號名稱
%M  FTP 主機所能允許的使用者最大連線數量
%N  FTP 主機目前已經連線的使用者數量
%B  關於硬碟容量的限額
%Q  目前的 block 數量
%I  最大的可用 inodes 
%i  針對 inodes 的限額
%H  當過度使用硬碟空間時的時間限制
%h  當使用過度檔案時的時間限制
%s  預計關閉 FTP 的時間(與 /etc/shutmsg 有關)
%r  預計關閉 FTP 前禁止再連線的時間(與 /etc/shutmsg 有關)
%d  預計關閉 FTP 前已連線的中斷時間(與 /etc/shutmsg 有關)

 

最簡單的 ftpaccess 設定檔

[root@test root]# vi .message
您可以上傳/下載的比例為 1:%xR
您此次登入至目前剩下的時間:%xT
由登入到目前為止使用的時間:%xE
您可以上傳的最大容量(KBytes):%xU
您可以下載的最大容量(KBytes):%xD

[root@test root]# vi /etc/ftpaccess
# 幾乎就是新增兩行即可: guestuser 與 guest-root 
 
guestuser test
guest-root /home/test/public_html test
 
# 第一行說的是要將 test 這個使用者變成 guest 啦!
# 第二行則是說, test 這個使用者的家目錄是在 /home/test/public_html 

  1. Client 端主動向 Server 端發送連線需求:由於是用戶端想要連上 FTP 主機,所以呢,當然連線的方向首先會由 Client 發起!此時,Client 端隨機選取一個大於 1024 以上的 port 來主動的連線到 FTP 主機提供的 FTP 埠口(通常為port 21),而由於是主動的連線封包,所以這個連線會帶有 SYN 的標誌在;

 

 

整體檔案數目與檔案容量的限額:

 

 

.message

 


在 Internet 上面的傳輸協定當中, FTP ( File Transfer Protocol ) 算是一個最古老的協定之一了!早期還沒有這麼多好用的協定之前( 例如 SAMBA ),都是使用 FTP 來進行資料的傳遞的呢!另外,一般來說,資料的傳輸以 FTP 這個協定來傳送是相當的快速的,而且某些場合當中其實也相當的方便。不過,值得注意的是,使用 FTP 來傳輸時,其實是具有一定程度的『危險性』,因為資料在 Internet 上面是完全沒有受到保護的『明碼』機制!所以,其實鳥哥不太建議大家使用這個伺服器的啦!尤其當你建置好了 FTP 之後,如果經常進行資料的傳遞,對於您的網路頻寬『真的有很大的損害』啊!不過,無論如何, FTP 仍然有其存在的必要!例如中山大學的 FTP 站就作的相當的棒啊!所以,底下我們就來談一談用在這個古老的協定上面,最古老的伺服器之一: Wu FTP

 

 

 

 

 

 

 

 

 

 

 

 


[root@test root]# vi /etc/ftpaccess
# 時間參數預設都是以 秒 為單位的!

timeout accept 120
# FTP 這個 daemon 會等待一個 PASV 的連線多久?由於 client 端的連線可能
# 受限於一些網路頻寬或者其他的因素,導致無法立即連上時,我們的 daemon
# 預設就會等待 120 秒來期待 client 端的連線成功!

timeout connect 120
# 與 accept 有點類似,不過 accept 是在等待 client 端的要求之回應,而 
# connect 則是在等待確認的回應!亦即三向交握內的 client 端回應 ACK 的
# 封包囉!

timeout data 2400
# 當我們下載檔案的時候,最多 FTP 可以讓我們下載或上傳一個檔案多久?
# 一般來說,由於目前大家都使用 ADSL 來傳輸,所以資料傳送不算慢,
# 不過,萬一您的檔案太大了,導致傳送速度很慢,那就比較麻煩啦!
# 通常這個設定的預設值是 1200 ,不過,建議可以大一點,例如 2400 可達 40
# 分鐘,對於傳輸速度較慢的使用者會比較好一點!

timeout idle 1800
# 就是我們上面提到的,多久沒有動作會被踢掉?預設是 900 ,你可以改大一點!

timeout maxidle 1800
# 與 idle 類似!不過由於 Client 端可以要求延長 idle 的時間,因此,
# 還會有所謂的 maxidle 喔!您大可將這兩個咚咚都設定一樣即可!

limit-time anonymous 30
limit-time guest    100
# 這個項目在設定『一次連線內,多久會被強制斷線?』以上面的例子來說,
# anonymous 每次登入之後,可以取得 30 分鐘的工作時間,如果超過 30 分鐘,
# 系統會主動的將他踢出去!(強制斷線!)這個項目對於 real user 沒有效果!

[root@test root]# vi /etc/pam.d/ftp
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed <==此行與上行為同一行
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth

 


 

 

拒絕不良的 IP 或網域或 domain :

 

 

 

TCP_Wrappers


 

 

設定檔

[root@test root]# mkdir /var/ftp/upload
[root@test root]# chown ftp:sys /var/ftp/upload
[root@test root]# mkdir /home/wwwuser1/public_html
[root@test root]# mkdir /home/wwwuser2/public_html
[root@tset root]# chown wwwuser1:myftpusers /home/wwwuser1/public_html
[root@tset root]# chown wwwuser2:myftpusers /home/wwwuser2/public_html

 

源自:
前往參考用解答

(1)命令通道的 ftp (預設為 port 21 ) 與
(2)資料傳輸的 ftp-data (預設為port 20)

 

 

 

 



[root@test root]# /etc/rc.d/init.d/xinetd restart

[root@test root]# netstat -tl 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ftp                   *:*                     LISTEN

[root@test root]# ftp localhost 
Connected to localhost (127.0.0.1).
220 localhost.localdomain FTP server (Version wu-2.6.1-20) ready.
Name (localhost:testing): testing  <==輸入登入者帳號
331 Password required for testing.
Password:  <==輸入你的密碼
230 User testing logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit<==離開 FTP

 


權限有關

 

 

  1. Client 端回應主機端,並繼續完成三向交握:在接到 Server 來的封包之後, Client 會回應一個帶有 ACK 確認的封包,並繼續來完成另一個三向交握的程序,此時,資料傳輸的通道才正式的建立。
[root@test root]# vi /etc/ftpaccess
 
anonymous-root /home/ftp/public

使用到的 port:

[root@test root]# vi /etc/passwd
.... 略 ....
test:x:511:100:testacount:/home/test:/sbin/nologin
.... 略 ....

 

基礎學習篇

 

Wu FTP 的結構

套件安裝:

 

  • FTP 在建立連線以及資料傳輸時,會建立哪些連線?
  • FTP 主動式與被動式連線有何不同?
  • 有哪些動作可以讓您的 FTP 主機更為安全 ( secure ) ?
  • 我們知道 ftp 會啟用兩個 ports ,請問這兩個 port 在哪裡規範的?而且,一般正規的 port 是幾號?
  • Wu FTP 的主要設定檔在哪裡?
  • 在 Wu FTP 的設定檔當中,那個 log transfer 是幹嘛用的?
  • 在 Wu FTP 的設定檔當中,那個 passive ports 是幹嘛用的?
  • 那一個檔案可以用來抵擋類似 root 這種系統帳號的登入 FTP?
  • 在 FTP 的 server 與 client 端進行資料傳輸時,有哪兩種模式?為何這兩種模式影響資料的傳輸很重要?

Server 端設定:


  1. 先設定使用者的帳號:

 



 

  1. 修改一下 ftpaccess 裡面相關的設定囉:
  1. Server 端接受後,回應給 Client 端:

 

iptalbes

 

 

 

 

  1. 命令記錄與登錄檔記錄:FTP 可以利用系統的 syslogd 這個 daemon 來進行資料的紀錄,而記錄的資料包括了使用者曾經下達過的命令與使用者傳輸資料(傳輸時間、檔案大小等等)的紀錄呢!

認識服務

 

/welcome.msg
/home/wwwuser1/public_html/.message
/home/wwwuser2/public_html/.message
/var/ftp/welcome.msg如果想要一勞永逸,那麼將 /welcome.msg 這個檔案複製到 /etc/skel/welcome.msg 以及 /etc/skel/public_html/.message 則是一個不錯的主意!  

限制最大線上人數

網路基礎

 

 

開放的用戶身份與可能造成的危害 建議事項
實體用戶(Real user)
  • 在預設的條件下,開放 FTP 本來就提供了實體用戶登入之用。
  • 不過,需要瞭解的是,以實體用戶做為 FTP 登入者身份時,基本上,系統並沒有針對實體用戶來進行『限制』的,所以他可以針對整個檔案系統進行任何的工作。因此,如果您的 FTP 使用者沒能好好的保護自己的密碼,導致被入侵,那麼你的整個 Linux 系統將很有可能被毀滅啊!
  • 由於實體用戶本來就可以透過網路連接到主機來進行工作,因此實在沒有特別的需要開放 FTP 的服務啊!例如 sftp 本來就能達到傳輸檔案的功能囉!
  • 如果確定要讓實體用戶使用者利用 FTP 伺服器的話,那麼您就需要避免讓幾個系統用的帳號可以登入!這個時候可以將『不想讓他登入』的帳號寫入 /etc/ftpusrs 這個檔案當中啊!例如 root 就是個很好的例子!
訪客(Guest)
  • 通常會建立 guest 身份的案例當中,多半是由於主機提供了類似『個人 Web 首頁』的功能給一般身份使用者,那麼這些使用者總是需要管理自己的網頁空間吧?這個時候將使用者的身份壓縮成為 guest ,並且將他的可用目錄設定好,即可提供使用者一個方便的使用環境了!且不需要提供他 real user 的權限喔!
  • 僅提供需要登入的帳號即可,不需要提供系統上面所有人均可登入的環境啊!
  • 當然,我們在主機的設定當中,需要針對不同的訪客給他們不一樣的『家目錄』,而這個家目錄與使用者的權限設定需要相符合喔!例如要提供 test 這個人管理他的網頁空間,而他的網頁空間放置在 /home/test/www 底下,那我就將 test 在 FTP 提供的目錄僅有 /home/test/www 而已,比較安全啦!而且也方便使用者啊!
  • 針對這樣的身份者,需要設定較多的限制,包括:上下傳檔案數目與硬碟容量的限制、連線登入的時間限制、許可使用的指令要減少很多很多,例如 chmod 就不要允許他使用等等!
匿名者(anonymoust)
  • 提供匿名登入實在不是個好主意~因為畢竟你的系統為何要讓別人登入利用呢?
  • 不過,如果是提供整個學校單位來利用的話,那就另當別論了!
  • 無論如何,提供匿名登入都是一件相當危險的事情,因為,只要您一不小心,將重要的資料放置到匿名者可以讀取的目錄中時,那麼就很有可能會洩密!與其戰戰兢兢,不如就不要設定啊~
  • 果真要開放匿名登入時,很多限制都要進行的,這包括:(1)允許的工作指令要減低很多,幾乎就不許匿名者使用指令啦、(2)限制檔案傳輸的數量,盡量不要允許『上傳』資料的設定、(3)限制匿名者同時登入的最大連線數量,可以控制盜連喔!

 

 

 

 

FTP 的安全性問題與替代方案

 

super daemon

最後出現的那一條規則為預設的規則

原理:File Transfer Protocol ( FTP )

Telnet

 

 

 

 

: Wu FTP 的設定檔主要有底下這幾個:

 

拒絕某些危險的帳號:

 

SSH


 

[root@test root]# vi /etc/xinetd.d/wu-ftpd
service ftp
{
        disable = yes  <==就是他,將他改為 no 即可!
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.ftpd
        server_args             = -l -a
        log_on_success          = DURATION USERID
        log_on_failure          = USERID
        nice                    = 10
}

 

 

 

 

 

 


  1. 修改一下該帳號的 shell 部分欄位,舉個例子來說,假如我的帳號是 test ,那麼在 /etc/passwd 裡面應該就會變成:

 

[root@test root]# vi /etc/ftpaccess
# 給予的限制情況:
# <throughput> <根目錄> <次目錄> <檔名> <bytes/s> <倍數> <位址>
 
throughput /var/ftp   *       * 10240 - *
throughput /home/test  /public_html  * 51200 - *
throughput /home/test  /realdown   * oo   - *.vbird.org
 
# 上面我設定了兩個有被限制的下載目錄,分別是 /var/ftp 這個目錄,以及
# /home/test/public_html 這個目錄,需要注意的是, 10240 代表 10Kbytes 
# 喔!設定錯誤會讓使用者下載到瘋掉啊!此外,那個 /home/test/realdown
# 則是『全速』開放給使用者下載喔!

 

[root@test root]# vi /etc/ftpaccess
 
restricted-uid *
restricted-uid 200-400 test testing

[root@test root]# /etc/rc.d/init.d/xinetd restart

[root@test root]# vi /etc/ftpaccess
# 1. 設定人物群組名稱
#   設定這個 FTP 伺服器的人物身份設定,使用 class 來設定的!他的語法是:
#   class <人物群組名稱> <用戶身份1,用戶身份2,..> <允許連線的來源>
 
class   all   real,guest,anonymous  *
 
# 上面的意思是說,我設定一個類別群組為 all ,這個 all  裡面就包含了
# 三種身份的使用者,就是 FTP 預設的 real, guest 與 anonymous 這三個,
# 需要注意的是,這三個類別的使用者之間是以逗號『,』隔開的,並沒有空白字元
# 而這個 class 允許的來源來自任何地方『*』。
# 這個 class 可以多重設定,並且,萬一重複設定時,以第一個出現的 class 類別
# 為準!舉個例子,假如我的 FTP 裡面的 real 僅允許學術網路登入,至於其他
# 的 guest 與 anonymous 則雖然可以由任何地方登入,但是不可以由 chinait.com
# 這個網域以及 61.141.0.0/16 這個網域登入時,那我可以這樣設定兩個 class 喔:
# class allone real,guest,anonymous *.edu.tw
# class alltwo guest,anonymous  !*.chinait.com !61.141.0.0/16 *
# 請注意到,驚嘆號『!』有代表『否,不允許』的意思存在,而星號『*』則代表
# 任何地方的意思,則如上面所設定時,如此一來,學術單位可以連到我的 FTP ,
# 至於 guest 與 anonymous 則可以任何地方連進,當然,除了上面的兩個網域之外
# 所以說,經由這個 class 的設定,就可以輕易的將三種身份是否可以登入主機的
# 狀態搞定了! ^_^
 
# 2. 設定系統的 FTP 管理員的 e-mail 信箱位址,與主機名稱!
#   單純的就是顯示出系統當中 FTP 伺服器管理員的網址啦!預設的設定如下:
 
email root@localhost
hostname vbird.adsldns.org
 
# 一般來說,我會將這個 e-mail 後面的位址寫上可以被使用者發信的信箱,例如:
# email testing@test.adsldns.org
# 這樣的格式!這個 email 可能會出現在進出網站時的歡迎畫面當中!
# 最大的任務是:當使用者發現問題的時候,可以跟系統的管理員聯絡啊!
# 所以當然要寫下『可以收信』的正常 email 囉!
# 至於那個 hostname 則僅與歡迎畫面時的變數有關!
 
# 3. 允許同一次連線當中,錯誤登入的次數
#   為了避免被不明攻擊者的『暴力攻擊』法,所以在一次連線當中,
#   僅允許對方最多有 5 次的登入機會,如果密碼或 ID 一直發生錯誤,
#   則會將該連線『踢』掉的啦!
 
loginfails 5
 
# 當然囉!如果您想將登入的次數改小一點的話,也可以使用『loginfails 3』
 
# 4. 向使用者顯示『README, 讀我』檔案的內容訊息!
#  當使用者登入或者變換目錄時,若目的端目錄有 README 這個檔案時
#  (可以附加檔名),則向使用者顯示該檔案的內容!語法為:
#  <readme> <README*> <動作>
#  一般來說,動作有『登入』與『變換目錄』,代號為 login 與 cwd=*
 
readme  README*    login
readme  README*    cwd=*
 
# 舉個例子來說,我是 testing 這個身份的使用者,在我的家目錄內有個檔案:
# /home/testing/data/README.important
# 那麼當我使用 FTP 軟體連進我的家目錄 (/home/testing) 然後切換目錄到
# /home/testing/data 後,我的螢幕就會出現『請讀取 README.important』
# 的字樣囉!以提醒使用者之用!
 
# 5. 與 readme 的意義蠻相同的!不過這個 message 卻會將後面所接的檔案的
#  內容直接顯示在螢幕上面,而不僅是告知使用者去讀取而已~
 
message /welcome.msg            login
message .message                cwd=*
 
# 上面的意思是說,當我 login 或者切換到任何有檔名為 .message 的目錄時,
# 該檔案的內容就會顯示到螢幕上面!一般來說,那個 /welcome.msg 就是
# 『進站歡迎畫面』囉!這個等一下我們在底下會獨立出一小節來介紹他!
 
# 6. 是否提供使用者線上立即執行的指令!
#  一般的格式為:
#  <指令名稱> <是否允許/yes/no> <針對的對象是誰>
 
compress        yes             all
tar             yes             all
chmod           no              guest,anonymous
delete          no              anonymous
overwrite       no              anonymous
rename          no              anonymous
umask           no              all
 
# 以上面的例子來說,我允許任何成功登入我主機的使用者(all)使用我的
# FTP 主機來執行壓縮這個指令的動作!但是我不許匿名者(anonymous)
# 使用我的 FTP 主機進行刪除(delete)以及改名(rename)的動作!
# 你當然還可以增加自己所想要提供,或者減少提供使用者使用的指令!
# 當然啦,既然 FTP 主要是針對『檔案』,所以指令以檔案的刪除、移動、
# 更改與壓縮為主!
 
# 7. 將使用者執行的部分指令歷程記錄到 /var/log/xferlog 這個檔案
#  FTP 進行上傳、下載或者其他使用者動作時,可以將過程訊息記錄下來,
#  記錄的檔案就是 /var/log/xferlog 這個檔案囉!語法為:
#  <log> <欲登錄的項目> <記錄的使用者身份> <何種動作>
 
log transfers anonymous,guest,real inbound,outbound
 
# 上面說明的是『針對檔案傳輸(transfers)進行記錄,而針對所有人均紀錄,
# 分別記錄上傳與下載(inbound,outbound)』,請注意,身份如果有多種,要以
# 逗號『,』隔開,不要加空白喔!所以,當你的 FTP 使用者連上主機,
# 並且有任何檔案傳輸的動作時,則檔案大小以及檔案數等資訊,就會被紀錄
# 到 /var/log/xferlog 裡面去啦!而除了檔案傳輸之外,還有什麼可以紀錄的呢?
# 基本上,那個『欲登錄的項目』內容就包含了下面幾項資料:
# a. log commands <身份> :例如『log commands real,anonymous』,表示
#  real 與 anonymous 這兩種身份的人,在 FTP 上面所下達的任何指令君會
#  被紀錄在 /var/log/xferlog 裡面
# b. log security <typelist> :例如『log security guest,anonymous』
#  表示當 guest 與 anonymous 使用者『違反安全機制』時,則會將當時
#  使用者所下達的指令或者其他動作紀錄下來!
 
# 8. 關閉 FTP 的設定檔!
#  我們可以設定關閉 FTP 這個服務的時間,就利用 shutdown 後面接的檔案!
 
shutdown /etc/shutmsg
 
# 如果 /etc/shutmsg 不存在,則 FTP 服務就不會被關閉!所以不存在沒關係!
# 而如果 /etc/shutmsg 存在的話,他的內容包含有底下這些資料(注意:
# 第一行為時間參數,共有七個時間參數,用空白鍵分隔,而提示文字可以隨便
# 編寫內容喔!也可以使用變數啊!):
# <年> <月> <日> <時> <分> <抵擋新連線> <刪除已連線> 
# <提示文字>
# 年:任何大於 1970 年的年份;月:0-11!請注意啊!是由 0-11 喔!
# 0 代表 1 月、 1 代表 2 月!
# 日:當然就是 1-31 囉!  ;時:由 0-23 ;分:0-59
# 抵擋新連線與刪除已連線:格式是 HHMM 例如 90 分鐘則是 0130 ,在關機前的
# 設定時內,會拒絕新連線與將以連線之通道切除喔!例如:
# 『2003 5 30 12 0 0230 0030
#  I will shutdown my FTP server !sorry!』
# 在 2003/6/30 的 12:00 要關閉 FTP ,而 12:00 之前的兩小時30分內(09:30)
# 就不許新的嘗試登入的連線,而在 30 分鐘前(11:30)就切掉已經已經連線之
# 使用者連線!事實上,這個 shutdown 蠻有趣的!因為實際上,您的 FTP
# 服務並沒有關掉,僅只是讓他人無法使用 FTP 而已啊!那麼如何重新啟動呢?
# 很簡單啊!將 /etc/shutmsg 殺掉,或者裡面的時間更動一下即可!
 
# 9. 匿名者的密碼驗證:
#  如果您的 FTP 允許 anonymous 的話,那麼還是需要讓匿名者輸入密碼的,
#  不過就是密碼的設定比較鬆散就是了!目前的密碼格式為:
#  <passwd-check> <no|trivial|rfc822> <動作>
 
passwd-check rfc822 warn
 
# 上面說的是,以匿名者登入的使用者也需要輸入密碼,而密碼的格式為 rfc822,
# 如果使用者的密碼不合格,那麼就警告(warn)使用者,但仍允許使用者登入!
# 密碼的格式方面目前有兩種(no是不需要密碼確認,所以不討論!)
# trivial:密碼當中必須含有 @ 這個 e-mail 的字元;
# rfc822 :密碼必須符合 frc822 的規範!
# 通常我們使用的是 rfc822 即可!至於動作主要有兩種動作:
# warn   :使用者輸入錯誤的密碼時,僅顯示警告訊息,仍允許其登入;
# enforce:使用者若輸入錯誤密碼,儲顯示警告訊息,並中斷連線喔!
# 注意:
# 如果你不想讓某個 email 的型態通過認證時,可以使用 deny-email 這個
# 項目來抵擋!舉個例子來說,你不想讓 IE 的預設郵件地址通過認證,可使用
# deny-email IE?0User@
# deny-email mozilla@
# 上面這兩個項目可以同時存在,如果還有不想讓他通過的 email address 
# 可以持續上面的設定多行!這有什麼用途呢?如果您不想讓 web browsers 
# 通過密碼的確認,而僅想讓類似一般的 FTP client 來連線,那麼這個
# 限制項目就有用的很了!因為他可以將 IE 之類的 browsers 擋下來啊!
 
# 10. 設定允許與不許登入 FTP 伺服器的使用者與群組
 
deny-uid %-99 e534-
deny-gid %-99 e534-
allow-uid ftp
allow-gid ftp
 
# 這個是在 Red Hat 系統上面新增出來的設定啦!在一般正常的系統當中,
# UID 小於 100 通常是系統帳號,而 UID 大於 65534 可能有安全上的問題,
# 所以,我們就直接將這兩段 UID 與 GID 切掉啊!讓他們無法登入,也就可以
# 拒絕某些不當的入侵攻擊了!那就是 deny-uid 與 deny-gid 的功效!
# 所以,上面的意義是,小於99與大於65534 的UID/GID都予以抵擋連線;
# 而開放的 UID 與 GID 則僅有 ftp 這個群組與使用者喔!
# deny-uid 後面除了接數字外,也可以直接接帳號名稱,例如要擋住 testing 
# 與 testqq 這個用戶時,可以設定:
# deny-uid testing testqq 
# 後面可以接多個 UID 或帳號或者使用範圍,例如抵擋 100 到 1000 之間的 UID 
# deny-uid 100-1000
# 至於 allow-uid 則恰好相反啊!就是允許的意思~

 

 

  1. 使用 Linux NAT 主機的 iptables 預設模組,亦即 ip_conntrack_ftp 與 ip_nat_ftp 這兩個核心模組!應用 modprobe 這個指令就可以將這兩個模組載入了!我們剛剛說過,既然 iptables (NAT 主機)可以記錄 client 端向外連線的資訊,而 client 端向 server 端要求資料傳輸時,會主動告知 Server 我(client) 要等你來連線的 port ,因此,這兩個聰明的模組可以透過檢查 NAT 主機內的資訊而加以應用,那就可以讓 Server 與 Client 端建立 ftp-data 的連線啦!不過,這兩個模組並不是萬能的,因為這兩個模組目前僅能針對預設的 ftp-data(port 20) 進行檢驗的工作,萬一您連線的是一個使用非 port 20 為 ftp-data 傳輸的主機時,那這兩個模組就沒有辦法發揮其效能了!

 

 

 

  1. 建立可上傳目錄與使用者家目錄:

 

 

 

[root@test root]# vi /etc/shutmsg
2003 2 30 12 00 0100 0030
我將要關閉連線、請不要再進行連線啦!
即將關機的時間:%s
新連線失敗的時間:%r
已連線關閉的時間:%d

註:上面的內容格式為兩段,第一段就是時間的參數,分別是:
年 月 日 小時 分鐘 HHMM HHMM (最後兩個分別是新連線與已連線的斷線時間)
第二行以後則是一些文字的敘述!可以參考 message 裡面的變數!

 

  1. 隨時更新到最新版本的 FTP 軟體,並隨時注意漏洞訊息;
  2. 善用 iptables 來規定可以使用 FTP 的網域;
  3. 善用 TCP_Wrappers 來規範可以登入的網域;
  4. 善用 FTP 軟體的設定來限制使用您 FTP 主機的使用者的不同權限啊;
  5. 使用 Super daemon 來進階管理您的 FTP 主機;
  6. 隨時注意使用者的家目錄、以及匿名使用者登入的目錄的『檔案權限』;
  7. 若不對外公開的話,或許也可以修改 FTP 的 port 。

事實上,使用 Wu ftp 來架設你的 FTP 伺服器時,還是以 RPM 的方式來安裝比較好啦!另外,如果您的 Linux distribution 提供其他版本的 FTP 伺服器,呵呵!那麼就不要使用 wu ftp 也沒有關係啊!這是因為 wu ftp 實在是太古老了,所以很多的駭客軟體都是針對他來設計的,也因為如此啊,所以才會產生『Wu FTP 伺服器比較不安全』的情況啊!好了,底下我們以 Red Hat 7.x 的版本來進行說明吧。基本上,一個 FTP 伺服器包含 Server 與 Client 用途的套件至少要有:  

[root@test root]# rpm -qa | grep ftp
ncftp-3.0.3-6
ftp-0.17-12
wu-ftpd-2.6.1-20

 
其中:

  • wu-ftpd :這就是主要的 FTP 伺服器套件啦!
  • ftp :提供 ftp 指令,就是 client 端的工具啦!
  • ncftp :提供匿名登入的 FTP 網站的 client 端相當棒的另一套連線 FTP 軟體!

如果沒有安裝,請馬上安裝吧!如果不曉得怎麼安裝,那麼請拿出『鳥哥的 Linux 私房菜 -- 基礎學習篇』好好的將 mount CD 的指令、搜尋的指令,以及 RPM 的指令瞧一瞧先!

 

Client 端的使用 FTP 軟體:

 

使用額外檔案來抵擋:/etc/ftphosts

[root@test root]# vi /etc/ftpaccess
# alias <你想要給這個目錄起的名字> <實際 Linux 系統的目錄>
 
alias  anonymousdir  /var/ftp

 

NAT

  • Xinetd 這個 Super daemon 的設定檔:/etc/xinetd.d/wu-ftpd
  • Port 對應 daemon 名稱的檔案:/etc/services

 

 

 

  1. 限制或解除使用者家目錄所在(change root, 簡稱 chroot):為了避免使用者在您的 Linux 系統當中隨意逛大街,意指離開使用者家目錄而進入到 Linux 系統的其他目錄去,所以將使用者的工作範圍『侷限』在使用者的家目錄底下,嗯!實在是個不錯的好主意!FTP 可以限制使用者僅能在自己的家目錄當中活動喔!如此一來,由於使用者無法離開自己的家目錄,而且登入 FTP 後,顯示的『根目錄』就是自己家目錄的內容,這種環境稱之為 change root ,簡稱 chroot ,改變根目錄的意思啦!這有什麼好處呢?當一個惡意的使用者以 FTP 登入您的系統當中,如果沒有 chroot 的環境下,他可以到 /etc, /usr/local, /home 等其他重要目錄底下去察看檔案資料,尤其是很重要的 /etc/ 底下的設定檔,如 /etc/passwd 等等。這樣他就有辦法取得系統的某些重要資訊,用來『入侵』您的系統呢!所以在 chroot 的環境下,當然就比較安全一些咯!

 

  1. Client 端回應確認封包:在 Client 端接收到來自 Server 端告知的封包後,會再次的發送一個確認封包給主機,此時,兩邊才會正式的建立起連線的通道,這個步驟 1 ~ 3 就是 Three-Way Handshake(三向交握的啦!)。需要注意的是,這個已經建立連線的通道(通常是 port 21)僅能進行 FTP 的『指令』而已,如果該指令涉及到資料的傳送(data transfer)時,例如上傳或下載等等,那麼就需要額外建立一條資料傳輸的通道才行 ( ftp-data )!而資料傳輸的通道建立則需要繼續底下的步驟;
  • 如果想要開放全部的頻寬 (就是全速、不限制下載的速度) 那就需要使用 oo 才行!注意喔!不是數字的零,而是英文字母小寫的 o 喔!
  • 那麼什麼是倍數呢?倍數就是下載的速度乘上的一個倍數值,舉個例子好了,如果我的下載速度是 51200 (50KBytes),而我想要開放到 1000KBytes ,那麼那個倍數的地方就寫上 20 就對了!但是,如果是 1.0 倍呢?這個時候可以寫 1 也可以寫『 - 』這個減號!
  • 最後一個是 Client 端的主機名稱或位址 (IP)。

 

 

[root@test root]# vi /etc/ftpaccess
# nice   <數值> <使用者群組或身份>
# defumask <數值> <使用者群組或身份>
 
nice 10 anonymous
nice -5 real
defumask 022 real
defumask 002 anonymous
 
# 請務必搞懂什麼是 nice 與 umask 喔!上面的 defumask 就是 default umask 
# 的意思!不難理解吧?!

 

  1. 不同等級的使用者身份:FTP 預設的情況下可以提供三種主要的身份,分別是(1)實體帳號,real user;(2)訪客, guest;(3)匿名登入者, anonymous 這三種。分成三種身份主要可以做為主機的控管上面的便利性,而且也可以將使用者作一個有效的管理呢!例如實體用戶可以進行的動作可能會比較多一些,至於匿 名登入者,大概我們就僅提供他下載一下資源而已,並不許匿名者使用太多主機的資源啊!當然,這三種人物能夠使用的『線上指令』自然也就不相同囉! ^_^

 

anonymous 的根目錄與建立可上傳目錄

 

  1. 首先,請先將 /etc/ftpusers 裡面的 root 拿掉;
  2. 確認 /etc/ftphosts 沒有擋掉欲登入的主機的 IP 或者是 hostname;
  3. 確認 /etc/ftpaccess 裡頭關於 deny-uid 與 deny-gid 沒有 0 這個數字存在!
  4. 重新啟動 /etc/rc.d/init.d/xinetd 這個 daemon !
  • man ftpaccess
  • Study Area :http://www.study-area.org
  • Wu FTP 官方網站:http://www.wu-ftpd.org

最近更新日期:2003/09/13

 

 

讓 root 可以使用 FTP 功能:


FTP 的運作流程與使用到的 port

 

 

:除了上面提到的這些設定檔之外,還有一些執行檔也需要瞭解一下:

 


 

  1. Client 端主動向 Server 端建立連線並繼續完成三向交握:經由命令通道得知 Server 的埠口之後, Client 端會隨機挑選另一個大於 1024 的埠口,並主動向 Server 端的等待連線的埠口進行連線動作,所以此連線封包是帶有 SYN 的標誌的喔!然後 Server 會回應一個帶有 ACK 確認的封包,並繼續來完成另一個三向交握的程序,此時,資料傳輸的通道就正式的建立。

請注意,那個 Any 大小寫不要搞錯了!另外, Any 後面沒接資料,表示『任何時間』的意思,否則需要以 HHMM 的格式來書寫時間的樣式!

  1. Server 端以 ftp-data 埠口主動連線到 Client :收到命令之後的 Server 會『主動』的以 ftp-data 埠口(一般為 port 20)向 Client 端通知的那個高於 1024 的埠口進行連線,特別需要留意的是,此時是『Server 端主動向 Client 端的連線』喔,所以該連線的 TCP 封包會帶有一個 SYN 的標誌在;

 

 

這個 alias 『僅針對 cd 這個指令有用』

 

 

  1. Client 端發送資料傳輸要求的命令給 Server:當需要進行資料的傳輸時,Client 端會啟用另一個高於 1024 的埠口來做為連線的準備(這個高於 1024 的埠口與步驟 1 那個埠口不是同一個!),並且 Client 端會主動的利用剛剛已經建立的指令通道(通常是 port 21)發送一個命令告訴 Server 說:『我已經準備好一個資料傳輸的埠口了,請準備進行傳輸吧』!特別留意喔,這個時候 Client 是透過『命令通道』來對 Server 下達命令的,而且已經通知 Server 我(client)要啟用的埠口了喔!
  • ftp:就是最陽春的 client 端軟體囉!
  • ncftp:可以使用在匿名 FTP 網站喔!相當棒的軟體!可以支援整個目錄的下載呢!

針對人物(real, guest, anonymous)的限制設定項目

本文由分分快三计划发布,转载请注明来源

关键词: