大概在 1999~2000 年期間為了防止自己忘記所作的學習心得紀錄!
1999 年初次接觸 Unix 系統,1999 年底接觸 Red Hat 6.1,而在 2000 開始撰寫一些心得文章,於是有了底下這些文字的產生。 這些文字對大家來說,可能沒什麼,但是對鳥哥來說,這是相當珍貴的!所有鳥站的資料起源,都是從這些文字開始的! 慢慢再將許多的指令分門別類的處理進去!網站的資料彙整,真的相當花費時間啊~
不過對於學習者來說,這些資料真的不要再讀了!因為實在太老舊... 建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。最新文章請前往鳥站首頁查閱囉!
認識檔案如果您已經安裝好了 Linux ,並且已經以 root 的身份登入了這架主機,那接下來要做些啥?我想,你應該先試著瞭解一下 Linux 的主要檔案屬性,以免不小心砍了一些重要的檔案,或者當以一般使用者身份登入時,產生無法進入一些沒有權限之目錄的情況!
首先,進入 Linux 之後,你可以如下輸入一個可以觀看檔案屬性的指令: ls -al
[root @tsai root]# ls -al
-rw-r--r-- 1 root root 1422 Jun 18 17:20 .Xdefaults
-rw-r--r-- 1 root root 24 Jun 18 17:20 .bash_logout
-rw-r--r-- 1 root root 230 Jun 18 17:20 .bash_profile
-rw-r--r-- 1 root root 124 Jun 18 17:20 .bashrc
drwxr-xr-x 3 root root 4096 Jun 18 17:20 .kde
-rw-r--r-- 1 root root 435 Jun 18 17:20 .kderc
-rw-r--r-- 1 root root 3394 Jun 18 17:20 .screenrc
drwxr-xr-x 5 root root 4096 Jun 18 17:20 Desktop
lrwxrxwrwx 1 root root 10 Jun 18 17:21 link_file -> /home/vbird/test
-rw-rw-rw- 1 root root 238 Jun 18 17:22 test.txt第一欄 二 三 四 五 六 七
[檔案屬性][檔案數][擁有者][所有者群組][大小][建檔日期][檔名]ls 是『list』的意思,而參數『-al』則表示列出所有的檔案(包含隱藏檔)。如上所示,在你第一次登入 Linux 時,如果你輸入指令後,應該有上列的幾個東西,先解釋一下上面七個欄位個別的意思:
舉個例子來說,如果有下面的兩個檔案:
- 第一欄代表這個檔案的屬性,仔細看的話,你應該可以發現這一欄其實共有十個屬性,第一個屬性代表這個檔案是『目錄、檔案或連結檔』當為[d]則是目錄;為[-]則是檔案,若是[l]則表示為連結檔(link file)。接下來的屬性中,三個為一組,且均為『rwx』的三個參數的組合。其中,[r]代表可讀、[w]代表可寫、[x]代表可執行,而第一組為『所有人的權限』、第二組為『同群組的權限』、第三組為『其他非本群組的權限』,若有一個檔案的屬性為『-rwxr-xr--』,簡單的可由下面說明之:
[-][rwx][r-x][r--]
1 234 567 890
1 為:代表這個檔名為目錄或檔案(上面為檔案)
234為:擁有人的權限(上面為可讀、可寫、可執行)
567為:同群組使用者權限(上面為可讀可執行)
890為:其他使用者權限(上面為僅可讀)上面的情況代表一個檔案、這個檔案的擁有人可讀可寫可執行、但同群組的人僅可讀與執行,非同群組的使用者僅可讀的意思!
- 第二欄表示有多少檔案在這個目錄(若為1則通常為檔案);
- 第三欄表示這個檔案(或目錄)的『擁有人』;
- 第四欄表示擁有人的群組;
這裡解釋一下,在 Linux 中,你的 ID (如 root 或 vbird 等帳號均是 ID)即是你的身份,而且你還有附屬在一個群組之下,例如你有一個團體(即群組)代號為 bird,且這個群體裡有四個人,其代號分別是 bird1, bird2, bird3, bird4,則這四個人為同一群組即 bird!若看上面的情況,則代表所有人為 root 且群組為 root (群組與所有人名稱可以相同)
- 第五欄為這個檔案的大小;
- 第六欄為這個檔案的建檔日期,分別為月份、日期及時間;
- 第七欄為這個檔案的檔名,如果檔名之前多一個『 . 』,則代表這個檔案為『隱藏檔』,例如上表第二行的『.Xdefaults』檔名即是隱藏檔,由於我們有下一個參數為 ls -al,所以連隱藏檔都列出來,如果你只輸入 ls 則檔名有加『 . 』的檔案就不會被顯示出來!
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 bird1 bird 5238 Jun 19 10:25 ping_tsai則檔案『 test.txt 』只有 root 可以讀寫,其他人僅可以讀;而另一個檔案『 ping_tsai 』所有人 bird1 可讀可寫可執行,而 bird2, bird3, bird4 這三個與 bird1 同樣是 bird 群組的僅可讀可執行但不能寫(亦即不能修改),至於非 bird 這一個群組的人則僅可以讀,不能寫也不能執行!
連結檔
另一個比較有趣的檔案是連結檔。如果你常常將應用程式捉到桌面來的話,你就應該知道在 Windows 底下有所謂的『捷徑』,你可以將 linux 下的連結檔簡單的視為一個檔案或目錄的捷徑。但是基本上這兩個東西是不一樣的!在 Windows 系統的捷徑中,你將無法修改主程式,但是在 Linux 中,連結檔可以直接連結到主程式,因此你只要改了這個連結檔,則主程式亦被改變了!
一些檔案的分別
通常在 Linux 底下會有顏色來顯示每一種檔案型態,主要有底下幾種檔案型態:
- 一般檔案:檔案的第一個屬性顯示 - ;
- 目錄: 如果你只輸入 ls -l 來察看檔案的時候,可以看到檔案第一個屬性為 d;
- 可執行檔:可以看到檔案屬性會有 x 這個屬性;
- 壓縮檔:基本上,只要檔案是 .Z .z .gz .zip .tgz 都是壓縮檔喔!
如果你是以系統管理員(root)的身份登入這部 Linux 機器,則你的路徑應該是在 [root@tsai root]# 底下,這時你可以輸入:會回到根目錄『/』下,再輸入剛剛學過的指令『ls -al』則會看到如下的畫面:
[root @tsai root]# cd ..
要說明的是,這裡的目錄為 RedHat 6.1 的配置,在 RedHat 7.0 中有稍做改變,但其實也是差不多的!底下針對上面幾個路徑來做說明:
[root@tsai /]$ ls -al
total 117
drwxr-xr-x 2 root root 4096 May 10 06:50 bin
drwxr-xr-x 3 root root 1024 Mar 16 18:37 boot
drwxr-xr-x 7 root root 36864 Jul 8 04:02 dev
drwxr-xr-x 42 root root 4096 Jul 9 15:21 etc
drwxr-xr-x 35 root root 4096 Jul 9 15:20 home
drwxr-xr-x 4 root root 4096 Jan 29 22:55 lib
drwxr-xr-x 2 root root 16384 Jan 29 22:52 lost+found
drwxr-xr-x 6 root root 4096 Mar 27 19:10 mnt
drwxr-xr-x 2 root root 4096 Aug 24 1999 opt
dr-xr-xr-x 60 root root 0 Jul 1 12:52 proc
drwxr-x--- 12 root root 4096 Jun 7 14:21 root
drwxr-xr-x 3 root root 4096 May 10 06:50 sbin
drwxrwxrwt 6 root root 4096 Jul 11 01:04 tmp
drwxr-xr-x 23 root root 4096 Sep 16 2000 usr
drwxr-xr-x 23 root root 4096 Jan 29 17:11 var
drwxr-xr-x 6 root root 4096 Jan 1 1970 win98se
- /bin :這是放例如: ls, mv, rm, mkdir, rmdir, gzip, tar, telnet, 及 ftp 等等常用的執行檔的地方(這些執行檔的執行方法會在後面提到),而通常這個檔案的內容與 /usr/bin 是一樣的(有時候甚至會使用連結檔哩);
- /boot :記得我們在之前的 多重開機設定 那一部份有提到你的開機檔所在位置吧!沒錯,這裡就是放置你 Linux 核心與開機相關檔案的地方;
- /dev :擺放一些與裝置有關的檔案。基本上 Unix 或 Linux 系統均把裝置當成是一個檔案來看待,例如 /dev/fd0 代表軟碟,亦即 Windows 系統下的 A 槽,而 /dev/cdrom 則代表光碟,等等!
- /etc :系統在開機過程中需要讀取的檔案均在這個目錄中,例如 Lilo 的參數、人員的帳號與密碼、系統的主要設定、http 架站的參數內容、你所要開啟的服務項目等等都在這個目錄中,所以在這個目錄下工作的時候,請記得一定要備份,否則檔案被改掉了可是很麻煩的!
- /etc/rc.d :這個路徑主要在記錄一些開關機過程中的 scripts 檔案, scripts 有點像是 DOS 下的批次檔(.bat檔名);
- /etc/xinetd.d :這個路徑在 RedHat 7.0 以後的版本才有,由於 RedHat 6.1 用來開啟服務的檔案是 inetd.conf ,但是在 7.0 以後的版本中,開啟服務的項目已經變成使用 xinetd.conf 這個檔案,因此,你若需要啟動一些額外的服務的話,在 7.0 以後就要到 /etc/xinetd.d 這個目錄下了;
- /etc/X11 :這是與 X windows 有關的設定檔;
- /home :基本上,這是系統預設的使用者的家目錄( home directory ),另外,在 RedHat 6.1 版中,httpd及 ftp 等程式的家目錄也在這個目錄下!
- /lib :在 Linux 執行或編譯核心的時候,均會使用到一些函式庫(library),就在這個目錄下;
- /lost+found :系統不正常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。例如你加裝一棵硬碟於 /disk 中,那在這個目錄下就會自動產生一個這樣的目錄 /disk/lost+found,這是砍不掉的目錄喔;
- /mnt :這是軟碟與光碟接掛點的地方;通常軟碟掛在 /mnt/floppy 下,而光碟掛在 /mnt/cdrom 下;
- /proc :系統核心與執行程序的一些資訊;
- /root :系統管理員的家目錄;
- /sbin :放置一些系統管理常用的程式,例如: fdisk, mke2fs, fsck, mkswap, mount 等等;
- /tmp :這是讓一般使用者暫時存放檔案的地方,例如你在安裝 Linux 下的軟體時,可能軟體預設的工作目錄就是 /tmp ,所以你要定期的清理一下,當然,重要資料最好不要放在這裡!
- /usr :這是最重要的一個目錄了,裡面含有相當多的系統資訊,內有許多目錄,用來存放程式與指令;
- /usr/bin :放置可執行程式,如前所說,這個目錄的檔案與 /bin 幾乎是相同的;
- /usr/include :c語言的header檔;
- /usr/lib :內含許多程式與子程式所需的函式庫 ;
- /usr/local :在你安裝完了 Linux 之後,基本上所有的配備你都有了,但是軟體總是可以升級的,例如你要升級你的 proxy 服務,則通常軟體預設的安裝地方就是在 /usr/local 中( local 是『當地』的意思),同時,安裝完畢之後所得到的執行檔,為了與系統原先的執行檔有分別,因此升級後的執行檔通常擺在 /usr/local/bin 這個地方;
- /usr/sbin :放置管理者使用程式,與 /sbin 相同;
- /usr/doc :放置一些系統說明文件的地方,(RedHat 7.0 以後改放在 /usr/share/doc 下);
- /usr/man :放置一些程式的說明檔的地方, (RedHat 7.0 以後放在 /usr/share/man 底下);
- /usr/src :這是放置核心原始碼的預設目錄;
- /usr/X11R6 :X Window System存放相關檔案的目錄 。
- /var :這是系統在工作時,預設的工作目錄,例如這架主機使用者的登錄檔案資訊、尚未寄出的郵件存放地、接收的郵件放置處等等;
在 Linux 系統中,有幾個目錄是特別需要注意的,以下提供幾個需要注意的目錄,以及預設相關的用途:
- /etc:這個目錄相當重要,如前所述,你的開機與系統資料檔案均在這個目錄之下,因此當這個目錄被破壞,那你的系統大概也就差不多該死掉了!而在往後的文件中,你會發現我們常常使用這個目錄下的 /etc/rc.d/init.d 這個子目錄,因為這個 init.d 子目錄是開啟一些 redhat 這個 Linux 系統服務的 scripts (可以想成是 批次檔 )的地方。而在 /etc/rc.d/rc.local 與 /etc/rc.d/rc.sysinit 這兩個檔案是開機的執行檔,有點像是舊 Windows 系統下的 autoexec.bat 及 config.sys 檔。所以,如果你有需要在開機載入的服務或執行檔案,可以寫在這兩個檔案的最後一行,則開機時就會自動幫你載入執行檔了!
- /bin, /sbin, /usr/bin, /usr/sbin:這是系統預設的執行檔的放置目錄,例如 root 常常使用的 userconf, netconf, perl, gcc, c++ 等等的資料都放在這幾個目錄中,所以如果你在提示字元下找不到某個執行檔時,可以在這四個目錄中查一查!
- /usr/local:這是系統預設的讓你安裝你後來升級的套件的目錄。例如,當你發現有更新的 Web 套件(如 Apache )可以安裝,而你又不想以 rpm 的方式升級你的套件,則你可以將 apache 這個套件安裝在 /usr/local 底下。安裝在這裡有個好處,因為目前大家的系統都是差不多的,所以如果你的系統要讓別人接管的話,也比較容易上手呀!也比較容易找的到資料喔!因此,如果你有需要的話,通常我都會將 /usr/local/bin 這個路徑加到我的 path 中。
- /home:這個是系統將有帳號的人口的家目錄設置的地方。
- /var:這個路徑就重要了!不論是登入、各類服務的問題發生時的記錄、以及常態性的服務記錄等等的記錄目錄,所以當你的系統有問題時,就需要來這個目錄記錄的檔案資料中察看問題的所在囉!而 mail 的預設放置也是在這裡,所以他是很重要的喔!
- /usr/man, /usr/local/man:這兩個目錄為放置各類套件說明檔的地方,例如你如果執行 man man,則系統會自動去找這兩個目錄下的所有說明檔,如果有相同的資料就會叫出來給你幽!
通常一般的大型主機都不會將所有的資料放置在一個磁碟中(就是只有一個『 / 』根目錄),這有幾個目的:你或許可以將你的系統做成這樣的分佈:
- 安全性考量:你的系統通常是在 /usr/ 中,而資料庫則可能放置在 /home 當中,至於一些開機資料則放置在 /etc 當中。如果將所有的資料放在一起,當你的系統不小心被駭客破壞,或者不小心自己砍了一個小東西,則所有的咚咚也都跟著不見了.....這對於我們市井小民或許無所謂,再安裝一次就好了,但是對於一些大型企業可不行這樣!因此需要將資料分別放置於不同的磁碟中,會比較保險些。
- 便利性:如果你需要升級你的系統的話,是否需要重新 format 安裝呢?有些資料例如 /home 裡面的資料為個人用戶的資料,似乎與系統無關!所以如果你將這些資料分別放置於不同的磁碟,則你要升級或者進行一些系統更動時,將比較有彈性。
這是比較常見的磁碟分佈情況,其中,
- /
- /boot
- /usr
- /home
- /var
- / 根目錄可以分配約 256 MB 以內;
- /boot 大概在 50 MB 就可以了,因為開機檔案並不大;
- /var 就至少需要 1GB 以上,因為你的 mail 、 proxy 預設的儲存區都在這個目錄中,除非你要將一些設定改變!
- /home 與 /usr 通常是最大的,因為你所安裝的資料都是在 /usr/ 當中,而用戶資料則放置在 /home 當中,因此通常書上都會建議你將所剩下的磁碟空間平均分配給這兩個目錄說!
- Q:Xwindows 的設定檔為 XF86Config,請問這個檔案在 RedHad 的哪裡?
A:
這個檔案放置在 /etc/X11 底下,通常我們在設定 X-Windows 時,比較喜歡用 Xconfigurator 來做簡單的設定,也可以使用 XF86Setup 來做設定;