前言 Linux是在1991年發展起來的與UNIX兼容的操作系統,可以免費使用,它的源代碼可以自由傳播且可任人修改、充實、發展,開發者的初衷是要共同創造一個完美、理想並可以免費使用的操作系統。 我們並不能使同學們通過這次系列講座成為一個UNIX類操作系統的高手,這次系列講座的目的就是在同學們中間普及Linux基礎知識,為今後我們更加接近的了解Linux做一個好的開端。 第一講 Linux基礎 在這一講中,我們主要是了解一下Linux的概況,以及對Linux有一個初步的感性認識。 一.什麼是Linux? Linux是一個以Intel系列CPU(CYRIX,AMD的CPU也可以)為硬件平台,完全免費的UNIX兼容系統,完全適用於個人的PC。它本身就是一個完整的32位的多用戶多任務操作系統,因此不需要先安裝DOS或其他的操作系統(MS Windows, OS2, MINIX..)就可以進行直接的安裝。 Linux的最早起源是在1991年10月5日由一位芬蘭的大學生Linux Torvalds ([email protected])寫了Linux核心程序的0.02版開始的,但其後的發展卻幾乎都是由互聯網上的Linux社團(Linux Community)互通交流而完成的。Linux不屬於任何一家公司或個人,任何人都可以免費取得甚至修改它的源代碼(source code)。Linux上的大部分軟件都是由GNU倡導發展起來的,所以軟件通常都會在附著GNU Public License(GPL)的情況下被自由傳播。GPL是一種可以使你免費獲得自由軟件的許可證,因此Linux使用者的使用活動基本不受限制(只要你不將它用於商業目的),而不必像使用微軟產品是那樣,需要為購滿許可證付出高價還要受到系統安裝數量的限制。我在講義的最後面附有GPL的非官方中文譯稿。 目前Linux中國的發行版本(Linux Distribution)主要有Red Hat(紅帽子), Slackware, Caldera, Debian, Red Flag(紅旗), Blue Point(藍點), Xteam Linux(沖浪), Happy Linux(幸福Linux), Xlinux等若干種,我推薦同學們使用的發行版本是Red Hat(事實標准)和Xlinux(安裝最容易)。 二.安裝Linux的好處? Linux的核心具有Windows無法比擬的穩定性和高效率,在不使用X Windows的情況下,它占用系統資源較少,可以使一台Intel486搖身一變成為高效工作站。對於想要學習UNIX的用戶來說,使他們熟悉UNIX操作環境,通往“骨灰級”高手境界的一大捷徑。最重要的是,Linux上有公認的C語言世界最好的編譯器gcc,如果你想得到一個效率更高的開發環境(並不一定是最友好的,但一定是最強大的),我建議你一定要好好的熟悉一下Linux。 三.如何得到Linux? 據我所知,大多數的Linux發行版本(Linux distribution)和核心(Kernel)都是可以從網上下載的,但是我不推薦易用這種方法得到Linux,因為僅僅核心就有幾十個Mbit的數據量,而一個完整的發行版本大概都是1Gbit左右的數據量,你自己可以估計一下得用多少時間來下載它們? 我建議你最好去軟件商店買光盤來,因為Linux的產品光盤是非常便宜的,連帶許可證GPL在內你大概支付50元人民幣就可以,而具有同樣功能的Windows NT 4.0你至少得付出17000元人民幣(有一點需要聲明:在你購買光盤時GPL許可證你是不會肉眼看到的)。直接到商店去買,可以省去你很多麻煩,因為從網上下載的Linux有很多它還是要求你有光盤刻錄工具將安裝文件刻到光盤上。 四.如何得到Linux的最新消息? 關於Linux的站點現在到處都是,我這裡向大家推薦的是一個關於Linux核心最新消息的一個網站,你可以得到核心(Kernel)發展情況的最新信息。網址如下: http://www.kernel.org 另外還有一個非常著名的討論組,你也可以去看看: http://www.linuxforum.net 另外還有一個我常去的討論組,這個討論組是有高手專門維護的,而且回應貼子的速度很快: http://www.coventive.com.cn/club/default.htm 在我這份講義快寫完的時候,又有一個非常好的自由軟件團體出現了,那就是AKA,大家可以到他們的網頁上去看看,裡面有許多很實用的信息: http://www.aka.org.cn 五.Linux操作系統上有什麼應用? Linux上有豐富的的應用軟件,在這裡我給大家做一個簡單的介紹,具體它們是什麼樣子我會在講座上為大家一一演示。 文本處理方面(控制台界面,X Window界面在後面介紹) l vi 最令UNIX類操作系統初學者裹足不前的editor,然而只要你習慣於操作,你會覺得它比任何的editor都好用,且功能強大。 l pico 一種風格很像Microsoft DOS的EDIT的一種文本編輯器。 中文化方面 XCIN+Crxvt 缺省的Linux系統是不支持顯示中文的,雖然現在國內湧現出許多著名的Linux漢化廠商,但是一些著名的Linux distribution如Red Hat、Debian、Caldera仍然不支持中文的輸入和輸出。這套漢化工具組合在控制台(console)方式和X Window方式下都可以顯示和輸入漢字信息。 l Cxterm 可以很容易的自行設置輸入法,或者修改現有的輸入法表格。 視窗界面(window manager)方面 l KDE 這是X Window System使用率最高的Window Manager。 l Fvwm 公認的最為好用的Window Manager之一。 l Fvwm95 擁有和Microsoft Win95 同樣界面的Window Manager。 l Afterstep 公認的最好看的Window Manager,但號內存也很大。 l Enlightenment 界面最華麗的Window Manager, Win95和它相比簡直就是nothing,但是號內存太大,有點華而不實。 l Icewin 又一個極富個性的Window Manager。 視窗應用軟件方面 l WWW Browser Netscape公司的navigator3.x和communicator4.x版可用,使用方法和MS Windows上一樣。 l 圖像處理 GIMP是類似於Photoshop的繪圖軟件,號稱是Linux上最強的繪圖軟件。 l 看圖工具 l MTV 這是一個可以播放VCD的軟件,但是它是共享軟件(Shareware),不是免費軟件,我們也得不到它的源代碼。 l Star Office 這是一套著名的辦公軟件,我個人認為它無論在界面上還是在功能上都強於Microsoft Office產品。唯一的缺憾是他不支持漢字,無論GB還是BIG5。 l Word Perfect 這是一個非常精彩的字處理軟件,功能類似於Microsoft Word。 l 文傑字處理系統 這是一套由韓國人開發的字處理系統,功能強大,有專門的中文版推出,類似於Microsoft Word。 編譯環境 l gcc 公認的C語言世界中功能最為強大的編譯器,但是界面不是很友好。 l 除此之外還有FORTRAN、Pascal、GNU make、GNU debugger、GNU LISP、GNU PERL、TCL。 這裡因為本人對這些編譯工具都不熟悉,因此不多介紹。 MS Windows的模擬環境 l WINE 可以使絕大多數的16位MS Window程序運行在這個模擬環境中。但是不支持32位的程序。 六.在那裡可以找到討論區? 大家最熟悉的是北郵的BBS: 202.204.7.235 port:23 另外還有如下著名討論區: 七.安裝過程 這是非常重要的一部分,希望大家仔細了解本部分內容。 就我個人認為,對於初學者來說,Linux的安裝過程是相當難的,新手往往會遇到系統屢裝不成的情況。遇到這種事情,是非常痛苦的,但是幾乎每個新手又都會遇到,因此我覺得安裝過程應當仔細的說明一下。但是由於篇幅有限,我不見這個這個問題在講義的正文中陳述,而是把它放在附文2中仔細說明。希望沒有安裝過Linux的同學們將這篇文章看一看。我想在上課的時候我會給大家演示一遍安裝的過程。 第二講 Linux基礎進階 經過上一節課的探討,我想同學們應該對Linux有了一個初步的感性認識,但我們的認識還只是處在一個尚需進步的表層上。通過這一節的學習,同學們會對Linux的體系結構,它的基本操作,基本功能有一個更進一步的認識。 一.Linux的文件系統結構 Linux的文件系統和MS-Windows的文件系統有很大的不同,對於微軟視窗系統的文件結構我在這裡不再多說,我們主要了結一下linux的文件系統結構. linux只有一個文件樹,整個文件系統是以一個樹根"/"為起點的,所有的文件和外部設備都以文件的形式掛結在這個文件樹上,包括硬盤,軟盤,光驅,調制解調器等,這和以"驅動器盤符為基礎的MS-Windows系統是大不相同的. Linux的文件結構體現了這個操作系統簡潔清析的設,常我們能夠接觸到的linux發行版本的根目錄大都是以下結構: /bin /etc /lost+found /sbin /var /boot /root /home /mnt /tmp /dev /lib /proc /usr 現在我將這些目錄給大家做一個簡要的介紹: l /bin和/sbin 使用和維護UNIX和Linux系統的大部分基本程序都包含在/bin和/sbin裡,這兩個目錄的名氣之所以包含bin,是因為可執行的程序都是二進制文件(binary files). /bin目錄通常用來存放用戶最常用的基本程序,如: login Shells 文件操作實用程序 系統實用程序 壓縮工具 /sbin目錄通常存放基本的系統和系統維護程序,如: fsck fdisk mkfs shutdown lilo init 存放在這兩個目錄中的程序的主要區別是:/sbin中的程序只能由root(管理員)來執行. l /etc 這個目錄一般用來存放程序所需的整個文件系統的配置文件,其中的一些重要文件如下: passwd shadow fstab hosts motd profile shells services lilo.conf l /lost+found 這個目錄專門是用來放那些在系統非正常菪機後重新啟動系統時,不知道改網哪裡恢復的“流浪”文件的。 l /boot 這個目錄下面存放著和系統啟動有關系的各種文件,包括系統的引導程序和系統核心部分。 l /root 這是系統管理員(root)的主目錄。 l /home 系統中所有用戶的主目錄都存放在/home中,它包含實際用戶(人)的主目錄和其他用戶的主目錄.Linux同UNIX的不同之處是,Linux的root用戶的主目錄通常是在/root或/home/root,而UNIX通常是在/。 l /mnt 按照約定,像CD-ROM,軟盤,Zip盤,或者Jaz這樣的可以動介質都應該安裝在/mnt目錄下,/mnt目錄通常包含一些子目錄,每個子目錄是某種特定設備類型的一個安裝點。例如: /cdrom /floppy /zip /win .... 如果我們要使用這些特定設備,我們需要用mount命令從/dev目錄中將外部設備掛接過來。在這裡大家可能看到了有一個win的目錄,這是我的機子上面做的一個通向windows文件系統的掛接點,這樣我通過訪問這個目錄就可以訪問到我在windows下面的文件了。但如果你的windows文件系統是NTFS格式,那麼這個辦法就不行了。 l /tmp和/var 這兩個目錄用來存放臨時文件和經常變動的文件。 l /dev 這是一個非常重要的目錄,它存放著各種外部設備的鏡像文件,其中有一些內容我們是要牢牢記住的。例如第一個軟盤驅動器的名字是fd0;第一個硬盤的名字是hda,硬盤中的第一個分區是hda1,第二個分區是hda2;第一個光盤驅動器的名字是hdc;此外,還用modem和其他外設的名字,在這麼多的名字中,我們只需要記住最最常用的那幾個外設就可以了。 l /usr 按照約定,這個目錄用來存放與系統的用戶直接相關的程序或文件,這裡面有每一個系統用戶的主目錄,就是相對於他們的小型“/”。 l /proc 這個目錄下面的內容是當前在系統中運行的進程的虛擬鏡像,我們在這裡可以看到由當前運行的進程號組成的一些目錄,還有一個記錄當前內存內容的kernel文件。 就個人經驗,我認為這些目錄以及在它們下面應該存儲什麼內容,我們都應當很熟練的記下來,這對於我們進一步的使用系統是很有幫助的。 二.Linux的文件類型 本來我是想把基本操作命令放在這裡介紹一下,但是這些命令中又不少是涉及到文件類型的,所以我就只好先介紹一下文件類型了。 Linux的文件類型大致可分為五類,而且它支持長文件名,不論是文件還是目錄名,最長可以達到256個字節。如果你能夠用128個漢字寫一片小作文,那你也可以用它來做某個文件的文件名(當然這裡面不能有不合規定的命名字符存在)。 1. 一般性文件 一般性文件,例如純文本文件mtv-0.0b4.README,設置文件lilo.conf,記錄文件FTP.log等等都是。一般類型的文件在控制台的顯示下都沒有顏色,系統默認的是白色。 2. 目錄 至於目錄是什麼意思我就不解釋了,我的任務是要告訴大家,你可以用cd+目錄名進入到這個目錄中去,而這個目錄在控制台下顯示的顏色是藍色的,非常容易辨認。如果你用ls -l來觀看它們,會發現它們的文件屬性(共10個字符)的一個字符是d,這表明它是一個目錄,而不是其它的東西。 三.Linux基本操作命令 首先介紹一個名詞“控制台(console)”,它就是我們通常見到的使用字符操作界面的人機接口,例如dos。我們說控制台命令,就是指通過字符界面輸入的可以操作系統的命令,例如dos命令就是控制台命令。我們現在要了解的是基於Linux操作系統的基本控制台命令。 有一點一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)對大小寫是敏感的,也就是說,如果你輸入的命令大小寫不對的話,系統是不會做出你期望的響應的。 l ls 這個命令就相當於dos下的dir命令一樣,肯定是我第一個就要介紹的,這也是Linux控制台命令中最為重要幾個命令之一。ls最常用的參數有三個: -a -l -F。 ls -a Linux上的文件以.開頭的文件被系統視為隱藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示 一般文件名外,連隱藏文件也會顯示出來。 ls -l(這個參數是字母L的小寫,不是數字1) 這個命令可以使用長格式顯示文件內容,如果需要察看更詳細的文件資料,就要用到ls -l這個指令。例如我在某個目錄下鍵入ls -l可能會顯示如下信息(最上面兩行是我自己加的): 位置1 2 3 4 5 6 7 文件屬性 文件數 擁有者 所屬的group 文件大小 建檔日期 文件名 drwx------ 2 Guest users 1024 Nov 21 21:05 Mail -rwx--x--x 1 root root 89080 Nov 7 22:41 tar* -rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname* lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip -rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh* -rwsr-x--- 1 root bin 9853 Aug 15 5:46 su* 下面,我為大家解釋一下這些顯示內容的意義。 第一個欄位,表示文件的屬性。 Linux的文件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。但是這裡有十個格子可以添(具體程序實現時,實際上是十個bit位)。第一個小格是特殊表示格,表示目錄或連結文件等等,d表示目錄,例如drwx------;l表示連結文件,如lrwxrwxrwx;如果是以一橫“-”表示,則表示這是文件。其余剩下的格子就以每3格為一個單位。因為Linux是多用戶多任務系統,所以一個文件可能同時被許多人使用,所以我們一定要設好每個文件的權限,其文件的權限位置排列順序是(以-rwxr-xr-x為例): rwx(Owner)r-x(Group)r-x(Other) 這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的用戶可讀,不可寫,可執行;其它用戶可讀,不可寫,可執行。另外,有一些程序屬性的執行部分不是X,而是S,這表示執行這個程序的使用者,臨時可以有和擁有者一樣權力的身份來執行該程序。一般出現在系統管理之類的指令或程序,讓使用者執行時,擁有root身份。 第二個欄位,表示文件個數。 如果是文件的話,那這個數目自然是1了,如果是目錄的話,那它的數目就是該目錄中的文件個數了。 第三個欄位,表示該文件或目錄的擁有者。 若使用者目前處於自己的Home,那這一欄大概都是它的賬號名稱。 第四個欄位,表示所屬的組(group)。 每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都只屬於一個組,只有當系統管理員希望給予某使用者特殊權限時,才可能會給他另一個組。 第五欄位,表示文件大小。 文件大小用byte來表示,而空目錄一般都是1024byte,你當然可以用其它參數使文件顯示的單位不同,如使用ls –k就是用kb萊顯示一個文件的大小單位,不過一般我們還是以byte為主。 第六個欄位,表示創建日期。 以“月,日,時間”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。 第七個欄位,表示文件名。 我們可以用ls –a顯示隱藏的文件名。 Ls –F(注意,是大寫的F) 使用這個參數表示在文件的後面多添加表示文件類型的符號,例如*表示可執行,/表示目錄,@表示連結文件,這都是因為使用了-F這個參數。但是現在基本上所有的Linux發行版本的ls都已經內建了-F參數,也就是說,不用輸入這個參數,我們也能看到各種分辨符號。 l cd命令 這個命令是用來進出目錄的,它的使用方法和在dos下沒什麼兩樣,所以我覺得沒什麼可說的,但有兩點我補充一下。 首先,和dos不同的是Linux的目錄對大小寫是敏感的,如果大小寫沒拼對,你的cd操作是成功不了的。 其次,cd如果直接輸入,cd後面不加任何東西,會回到使用者自己的Home Directory。假設如果是root,那就是回到/root.這個功能同cd ~是一樣的。 l mkdir,rmdir命令 mkdir命令用來建立新的目錄,rmdir用來刪除以建立的目錄,這兩個指令的功能不再多加介紹,他們同dos下的md,rd功能和用法都是基本一樣的。 l cp命令 這個命令相當於dos下面的copy命令,具體用法是: cp –r 源文件(source) 目的文件(target) 參數r是指連同元文件中的子目錄一同拷貝。熟悉dos的讀者用起這個命令來會覺得更方便,畢竟比在dos下面要少敲兩下鍵盤。 l rm命令 這個命令是用來刪除文件的,和dos下面的rm(刪除一個空目錄)是有區別的,大家千萬要注意。Rm命令常用的參數有三個: -i,-r,-f。 比如我現在要刪除一個名字為text的一個文件: rm –i test 系統會詢問我們:“rm:remove ‘test’?y”,敲了回車以後,這個文件才會真的被刪除。之所以要這樣做,是因為linux不象dos那樣有undelete的命令,或者是可以用pctool等工具將刪除過的文件救回來,linux中刪除過的文件是救不回來的,所以使用這個參數在刪除前讓你再確定一遍,是很有必要的。 rm –r 目錄名 這個操作可以連同這個目錄下面的子目錄都刪除,功能上和rmdir相似。 rm –f 文件名(目錄名) 這個操作可以進行強制刪除。 l mv命令 這個命令的功能是移動目錄或文件,引申的功能是給目錄或文件重命名。它的用法同dos下面的move基本相同,這裡不再多講。當使用該命令來移動目錄時,他會連同該目錄下面的子目錄也一同移走。另外因為linux下面沒有rename的命令,所以如果你想給一個文件或目錄重命名時可以用以下方法: mv 原文件(目錄)名 新的文件(目錄)名 l du,df命令 du命令可以顯示目前的目錄所占的磁盤空間,df命令可以顯示目前磁盤剩余的磁盤空間。 如果du命令不加任何參數,那麼返回的是整個磁盤的使用情況,如果後面加了目錄的話,就是這個目錄在磁盤上的使用情況(這個功能可是dos沒有的呦)。不過我一般不喜歡用du,因為它給出的信息是在是太多了,我看不過來,而df這個命令我是最常用的,因為磁盤上還剩多少空間對我來說是很重要的。 l cat命令 這個命令是linux中非常重要的一個命令,它的功能是顯示或連結一般的ascii文本文件。cat是concatenate的簡寫,類似於dos下面的type命令。它的用法如下: cat text 顯示text這個文件 cat file1 file2 依順序顯示file1,file2的內容 cat file1 file2>file3 把file1,file2的內容結合起來,再“重定向(>)”到file3文件中。 “〉”是一個非常有趣的符號,是往右重定向的意思,就是把左邊的結果當成是輸入,然後輸入到file3這個文件中。這裡要注意一點是file3是在重定向以前還未存在的文件,如果file3是已經存在的文件,那麼它本身的內容被覆蓋,而變成file1+file2的內容。 如果〉左邊沒有文件的名稱,而右邊有文件名,例如: cat >file1 結果是會“空出一行空白行”,等待你輸入文字,輸入完畢後再按[Ctrl]+[c]或[Ctrl]+[d],就會結束編輯,並產生file1這個文件,而file1的內容就是你剛剛輸入的內容。這個過程和dos裡面的copy con file1的結果是一樣的。 另外,如果你使用如下的指令: cat file1>>file2 這將變成將file1的文件內容“附加”到file2的文件後面,而file2的內容依然存在,這種重定向符〉〉比〉常用,可以多多利用。 l more,less命令 這是兩個顯示一般文本文件的指令。 如果一個文本文件太長了超過一個屏幕的畫面,用cat來看實在是不理想,就可以試試more和less兩個指令。More指令可以使超過一頁的文件臨時停留在屏幕,等你按任何的一個鍵以後,才繼續顯示。而less除了有more的功能以外,還可以用方向鍵往上或網下的滾動文件,所以你隨意浏覽,閱讀文章時,less是個非常好的選擇。 l clear命令 這個命令是用來清除屏幕的,它不需要任何參數,和dos下面的clr具有相同的功能,如果你覺得屏幕太紊亂,就可以使用它清除屏幕上的信息。 l pwd命令 這個命令的作用是顯示用戶當前的工作路徑,這個命令不用多說,大家一試即知。 l ln命令 這是linux中又一個非常重要命令,請大家一定要熟悉。它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數是-s,具體用法是: ln –s 源文件 目標文件 當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。例如: ln –s /bin/less /usr/local/bin/less -s 是代號(symbolic)的意思。 這裡有兩點要注意:第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;第二,ln的鏈接又軟鏈接和硬鏈接兩種,軟鏈接就是ln –s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接ln ** **,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。 如果你用ls察看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用ln命令生成的文件,用ls –l命令去察看,就可以看到顯示的link的路徑了。 l man命令 如果你的英文足夠好,那完全可以不靠任何人就精通linux,只要你會用man。Man實際上就是察看指令用法的help,學習任何一種UNIX類的操作系統最重要的就是學會使用man這個輔助命令。man是manual(手冊)的縮寫字,它的說明非常的詳細,但是因為它都是英文,看起來非常的頭痛。建議大家需要的時候再去看man,平常嗎,記得一些基本用法就可以了。 l logout命令 一看就知道了,這是退出系統的命令,我就不多說了。要強調的一點是,linux是多用戶多進程的操作系統,因此如果你不用了,退出系統就可以了,關閉系統你就不用操心了,那是系統管理員的事情。但有一點切記,即便你是單機使用linux,logout以後也不能直接關機,因為這不是關機的命令。 四.基本的系統管理命令 系統管理基本上可以分為兩種,一種是root(系統管理員)對linux的系統管理部分,root本身的職責就是負責整個linux系統的運行穩定,增加系統安全性,校驗使用者的身份,新增使用者或刪除惡意的使用者,並明確每一個在機器上的使用者權限等等。另一種就是每一個使用者(包括root)對自己文件的權限管理。因為linux是多用戶多任務系統,每一個使用者都有可能將其工作的內容或是一些機密性的文件放在Linux工作站上,所以對每個文件或是目錄的歸屬和使用權,都要有非常明確的規定。下面我就按管理員和一般用戶分類來介紹基本的系統管理命令。 1. 管理員使用的系統管理指令 l adduser命令 新增使用者賬號的命令,如果你想新增一個叫做jack的用戶,那麼需在控制台下輸入: adduser jack 這樣就增加了一個名字為jazk的用戶,要注意這裡對大小寫是敏感的。另外,新增的用戶是沒有口令的,你還應當為用戶設置口令或者是吩咐用戶在第一次登錄系統的時候為自己設置口令。 l passwd命令 這個命令可以修改特定用戶的口令,使用格式是: passwd 用戶名 這是,系統會提示你輸入新密碼,你輸入第一遍後,還要輸入第二遍進行確認。輸入兩遍相同的密碼之後,系統就接受了新的密碼。如果這個命令是一般用戶來使用的話,那就只能改變它自己的密碼。 l find,whereis,locate命令 這三個命令都是用來查找文件的,使用格式是: find 路徑名稱 -name 文件名 參數(我們這裡就不討論參數了) whereis 文件名 locate 文件名 一般來說,find命令功能最為強大,但是對硬件的損耗也是最大的,當你使用find去查找你個文件時,你會發現硬盤等在不停的閃動,這就意味著你的硬盤可能會比別人的少用個三四年。當你使用whereis或locate去查找文件時,你會發現硬盤卻是安安靜靜的,這是因為這兩個命令是從系統的數據庫中查找文件,而不是去拼命的讀硬盤。所以,如果平常你只是想找一些笑文件的話,使用whereis或locate就可以了,如果你是要進行系統管理的工作,那麼使用find再加上一些參數就可以滿足你的要求了。 l su命令 這個命令可以讓普通用戶變成具有管理員權限的超級用戶(superuser),只要它知道知道管理員的密碼就可以。多用戶多任務系統的強調的重點之一就是系統的安全性,所以應避免直接使用root身份登錄系統去做一些日常性的操作,因為時間一久root密碼就有可能被知道而危害到系統安全。所以平常應避免用root身份登錄,即使要管理系統,也請盡量使用su指令來臨時管理系統,然後記住定期的更換root密碼。 加入你現在是以一個普通用戶的身份登錄系統,現在你輸入: su 系統會要求你輸入管理員的口令,當你輸入正確的密碼後,就可以獲得全部的管理員權限,這是你就是超級用戶(superuser)。但你執行完各種管理操作以後,只要輸入logout就可以退回到原先的那個普通用戶的狀態。 l shutdown,halt命令 這兩個命令是用來關閉linux操作系統的。 在前面我說過,作為一個普通用戶是不能夠隨便關閉系統的,因為雖然你用完了機器,可是這時候可能還有其它的用戶正在使用系統。因此,關閉系統或者是重新啟動系統的操作只有管理員才有權執行。另外linux系統在執行的時候會用部分的內存作緩存區,如果內存上的數據還沒有寫入硬盤,就把電源拔掉,內存就會丟失數據,如果這些數據是和系統本身有關的,那麼會對系統造成極大的傷害。一般,我們建議在關機之前執行三次同步指令sync,可以用分號“;”來把指令合並在一起執行,如: # sync;sync;sync 使用shutdown關閉系統的時候有以下幾種格式: shutdown (系統內置2分鐘關機,並傳送一些消息給正在使用的user) shutdown –h now (下完這個指令,系統立刻關機) shutdown –r now (下完這個指令,系統立刻重新啟動,相當於reboot) shutdown –h 20:25 (系統會在今天的20:25關機) shutdown –h +10 (系統會在十分鐘後關機) 如果在關機之前,要傳送信息給正在機器上的使用者,可以加“-q”的參數,則會輸出系統內置的shutdown信息給使用者,通知他們離線。 halt命令就不用多說了,只要你輸入halt,系統就會開始進入關閉過程,其效果和shutdown –h now是完全一樣的,我每次關機的時候都是用halt。 l reboot命令 一看這個詞,就知道這個命令是用來重新啟動系統的。 當你輸入reboot後,你就會看到系統正在將一個一個的服務都關閉掉,然後再關閉文件系統和硬件,接著機器開始重新自檢,重新引導,再次進入linux系統。 2.普通用戶使用的系統管理指令 l chown命令 這個命令的作用是改變文件的所有者。 如果你有一個文件名為classment.list的文件,所有權要給於另一個賬號為golden的同學,則可用chown來實現這個操作,但是當你改變了文件的所有者以後,該文件雖然在你的Home目錄下,可是你已經無任何修改或刪除該文件的權限了,這一點同學們千萬要注意。通常會用到這個指令的時機,應該是你想讓linux機器上的某位使用者到你的Home下去用謀個文件是會用到。不過,潑出去的水就收不回來了,你用這個命令的時候可一定要想清楚呦。 l chmod命令 這個命令用來改變目錄或文件的屬性,是linux中一個應當熟悉的命令。 對這個命令,使用的方法很多,鑒於篇幅的原因,我只例出其中我最常用的一種。前面講過,一個文件用10個小格來記錄文件的權限。前三個小格是擁有者(user)本身的權限,中間三個小格是和使用者同一組的成員(group)的權限,最後三個小格是表示其它使用者(other)的權限。現在我們用三位的2進制數來表示相應的三小格的權限,例如: 111 rwx 101 r-x 011 –wx 001 –x 100 r— 這樣一來,我們就可以用三個十進制的數來表示一個文件屬性位上的十個格,其中每一個十進制數大小等於代表每三格的那個三位的二進制數。例如,如果一個文件的屬性是: rwxr—r--,那麼我們就可以用744來代表它的權限屬性;如果一個文件的屬性是:rwxrwxr--,那它對應的三個十進制數就是774。這樣一來我們就可以用這種簡便的方法指定文件的屬性了。例如,我想把一個文件test.list的屬性設置為rwxr-x---,那麼我只要執行: chmod 750 test.list 就可以了,對於改變後的權限,你用ls –l就可以看到。 到這裡,我們第二講的內容就基本結束了,可以說,這一講是比較無聊的,但它又是必不可少的。這裡列出的僅僅是最最常用的控制台命令,要進一步的熟悉Linux操作系統,了解類UNIX操作系統的管理思想,我們還有很多要學習,有興趣的同學可以參看其它的相關參考書籍。 第三講 Linux下的網絡服務,配置問題和常用工具 這一講我們會接觸到Linux下能夠提供的一些典型的網絡服務,大家會對這些服務有一個感性的認識,除此之外我們還會看到Linux下面一些非常重要的配置文件以及他們的用法。最後我們會看到Linux下面最常用的幾個工具軟件。 一.Linux下的網絡服務 一般來說,各種操作系統在網絡方面的性能比較是這樣的順序BSD>Linux>Win NT>Win 9X, 由此說來,Linux的網絡功能僅次於UNIX,而強於Win NT和其它的視窗系列產品,對於Win2000我還不能評價太多,因為不是很熟。 Linux的網絡功能除了基本的連線功能如telnet, ftp, rsh, login, finger等等以外,架設各種服務器的功能更把Linux網絡功能發揮的淋漓盡致,下面我大概的為大家介紹一下Linux下的各種網絡服務。 l Mail Server Email現在是網絡上最重要的服務了,你可能沒有用過FTP, BBS, INN,但是如果你連電子郵件都沒有用過,那作為BUPT的一員,你得自己好好反省一下了。 現在又很多功能強大的mailserver供你選擇,例如freemail.263.net, hotmail.com, freemail.sohu.com,等等,這些都是免費的。但這是從使用者角度來看,如果你是想為一個局域網內部提供一個交換電子郵件的服務,那它們對你來說可就是一筆巨款了,再說人家賣不賣給你還不好說呢。Linux下面最著名的mail server是Sendmail,它是一個負責監控和傳送電子郵件的郵件代理程序,你使用它就可以在在一個小的局域網(例如宿捨網)裡提供一個電子郵件服務,這是多麼神奇的事情啊!使用Linux下面的MailServer最大的好處是性價比高,這些軟件的功能強大,卻又是完全免費的,我們完全不用去花幾萬元買一個功能有限還要按照人頭收費的Exchange Server,或者是使用D版軟件被別人扎脊梁骨。 l Router和Gateway 如果你的計算機可以連接到外面的Internet上去,然而一些可以連接到你這台機器上的計算機卻只能訪問裡面的局域網,那麼你可以安裝Router或Gateway的服務,這樣別人就可以通過你的機器和外面的世界聯系了。當然了,這麼做的前提是你有一顆大公無私的信,要我就不行,我可捨不得把我的PIII的機器貢獻給宿捨的網蟲們。 l Samba 在Windows橫行的今天,Samba的出現對於Linux的茁壯成長是非常重要的,它大大拓寬了Linux的應用領域。Samba可以提供一種轉換SMB(windows使用的一種信息格式)和NFS(Linux使用的一種信息格式)的服務,通過Samba, 運行Windows的工作站就可以同運行Linux的服務器之間進行通信,還可以 讓網絡上的使用者(包括Windows用戶)共享一台打印機,這樣Linux的服務器就可以運行在Windows的環境中了。 l NFS Server Linux還可以作為文件服務器,為網絡上具有存取權限的Windows/Linux機器分享相同的文件系統,這樣一來,不論是在Windows還是在Linux的網絡中,Linux的文件服務器都能夠發揮作用了。 l Terminal Server 這種服務能夠提供PPP/SLIP Dialup(包括multi-port,就是一台計算機連多個調制解調器上網),讓一般的民用網絡Moden使用者可通過Terminal Server與Internet連接起來。 l BBS 在北郵如果你沒有上過BBS(Bulletin Board System電子布告版)我會很吃驚的,202.112.101.44或者是202.204.7.235你至少應該去過一個吧?如果沒有去過,那麼趕快把這一課補上。關於BBS到底能做什麼我就不多說了,我假定你已經知道了,現在網絡上流行的免費BBS版本很多,著名的有Phoenix,Maple,Firebird,Pivot等等,這些都可以在Linux上使用。另外還有許多基於WWW的BBS,例如著名的跨平台的Motiff Community,可以非常穩定的在Linux下運行,這是“瘟都死”所不能比擬的。 l WWW 在Linux下面也有功能強大的WWW服務器,你完全可以不必去使用又貴又不穩定的IIS。但是不可否認IIS的操作非常的簡單,如果你覺得自己有錢,可以買得起Win2000 Advanced Server,又出得起“人頭稅”,那你就用“瘟都死”吧。在Linux上的WWW服務程序很多,現在最著名最流行的是Apache,在北郵,有許多的服務器就是跑Apache的。現在在Linux上使用Apache+PHP+mysql是實現動態頁面的最佳搭配,立志於搞網站建設的朋友可一定要留心這一塊,因為它可以為你的網站建設節省大筆的成本(現在可是操作系統比機器貴)。我知道一個討論組:www.coventive.com.cn/club/default.htm,它就是用Apache+PHP+MySQL這種組合建立起來的,有興趣的朋友可以去看看。 二.幾種重要的配置文件 Linux下面的配置文件非常的多,對於初學者來說,我們只需要知道最最常用的幾個配置文件就可以了。由於片符合時間的原因,在這裡我只介紹四個非常經典的配置文件(lilo.conf, passwd,inittab,fasttab),這四個文件中我重點介紹lilo.conf,其余三個文件會簡單的在課堂上演示。至於Linux其它眾多的配置文件必須各位同學自己下去查找相關資料自己學習了。 l lilo.conf 這是Linuxloader(lilo)的配置文件。對於初學者來說,這個配置文件是非常重要的,因為它直接關系到你的系統是否能夠正確的引導到Linux上來。我在這裡主要將一下如何使用lilo實現多個在一台機器上安裝多個操作系統。 一般來說,第一次安裝Linux後,缺省引導的系統是Linux,但是對大多數Linux用戶來說,他們使用windows的時間會多於Linux,所以我們最好能夠將缺省引導的系統改為windows,這樣的話,就省去了每次啟動時敲一串字符的麻煩。要修改引導順序,就要修改Linux系統中的一個配置文件,這個文件就是/etc/lilo.conf。我使用的是Xlinux OS 1.5,用vi打開這個文件後,會出現下面的文字: boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=100 linear default=xlinux image=/boot/vmlinuz-2.2.14-5.0 label=xlinux read-only root=/dev/hda4 other=/dev/hda1 label=win 這就是剛剛安裝完畢後的LILO配制文件.這個文件是按照由前到後順序引用的,通過修改這個文件就可以改變lilo執行時的一些特性.首先我將這個文件中比較重要的幾個地方給大家介紹一下: 首先請看第5行:timeout=100,這是一個設置在lilo引導缺省的系統之前等候用戶輸入系統別名的等候時間長度.它的時長好象不是按秒一級的數量級進行計算的,總之用戶可以按照自己的實際需要設置相應的時長.我一般是設置成timeout=500. 然後我們看第7行:default=xlinux,這裡是關鍵之一!這一行指明缺省引導的系統的別名是xlinux,要想改變系統的缺省引導順序,這裡是需要修改的,稍後就會說到是怎麼修改的. 再看第8行到第11行,這四行指明了引導Linux系統的一些細節. image=/boot/vmlinuz-2.2.14-5.0指明了操作系統核心是放在哪裡的,以便於引導程序裝載操作系統核心;label=xlinux指明了引導這個操作系統時用的別名,這裡是xlinux; root=/dev/hda4指明了引導程序需要到哪一個硬盤的第幾個分區去尋找init過程,在這裡是要到第一個硬盤的第四個分區中去將引導系統的控制權交給這個分區裡的init過程. 最後我們看看文件中的最後兩行.other=/dev/hda1說明除了linux操作系統以外,機器中還安裝了別的操作系統(當然我知道這個另外的操作系統是我的win2000了),它位於第一塊硬盤中的第一個分區,一般來說,這個路徑是在安裝的時候就設置好的,不需要我們手工修改,但是我認為知道這些信息還是很有必要的;label=win指明了這個系統引導時使用的別名為win.因為lilo是順序引用的,所以如果我們想要讓缺省引導的系統變成windows,就需要將這兩行移動到image=.....那一行之前的位置,我建議的位置是放在image=...之前和default=.....之後.這是關鍵之二! 當你將前面的兩個關鍵步驟完成之後,還需要將default=....那一行改成default=win,這是比較重要的一步,雖然即使你不改動這裡,系統也可以按照你的想法去引導,但是我可不敢保證你這樣做不會出一點問題.再說,如果你不改動這裡那多別扭啊! 做到這裡,我們對lilo.conf這個文件的改動就結束了,然後只要退出vi,然後鍵入 lilo -v -v -v這個命令來更新一下LILO,我們就大功告成了.當你reboot以後,就會發現在"lilo:"那裡敲入回車鍵後,系統就會缺省的引導到windows系統去了. l Passwd 這個配置文件是關於用戶口令的。如果你是一名系統管理員,有可能會一次新增很多的用戶,這時用adduser就相當麻煩了。一般有功力的管理員會直接去修改/etc/passwd文件。利用passwd文件,可以控制用戶的口令狀態及一些個人配置。 對於這個文件,普通單機用戶使用的並不是很多,主要是多用戶的管理員使用,對於它的一些基本配置方法,我會在課堂上為同學們演示,這裡不再贅述。 l Inittab和fasttab 這兩個文件都是存放在/etc這個目錄下面的,Inittab文件用來配置Linux初始化的一些動作,我們最常用的是設定Linux的啟動方式。Fasttab文件用來設定一些在Linux啟動時的動作,主要是文件系統或者是外設的掛接動作,如果你想讓你的Linux一開始就能夠使用光盤驅動器,就可以把mount指令加到這個文件中去。 因為這兩個文件對我們初學者來說,可以利用的地方不是很多,所以我不用過多的文字來描述它們的功能,具體的操作我會在課堂上為同學們演示,這裡不再贅述。 三.Linux下常用的工具軟件 這裡我會為大家介紹Linux世界裡最常用的幾種工具軟件,包括:vi, tar, gzip, rpm。 l 文字編輯 vi是Linux(UNIX)世界最強大的文本編輯工具,我在第一講中提到過它,現在我把它的一些基本使用方法介紹給大家。 Vi的三種狀態 1.Command mode : 控制螢幕游標之移動,字元或游標之刪除,搬移復制某區段及進入 Insert mode 下,或者到 Last line mode 。 2.Insert mode : 唯有在 Insert mode 下, 才可做文字資料輸入,按Esc鍵可到 Command mode 。 3.Last line mode : 將檔案寫入或離開編輯器,亦可設定編輯環境, 如尋找字串、列出行號..等。 vi 的基本操作 1. 進入 vi 在系統提示符號下輸入 vi 及檔案名稱後即進入 vi 全螢幕編輯畫面,且在 Command mode 下。 2. 切換至 Insert mode 編輯文件: 在 Command mode 下可按 'i' 或 'a' 或 'o' 三鍵進入 Insert mode。 3. 離開 vi 及存檔: 在 Command mode 下可按 ':' 鍵進入 Last line mode, :w filename (存入指定檔案) :wq (寫入並離開 vi) :q! (離開並放棄編輯的檔案) Command mode 下功能鍵簡介 1. 進入 Insert mode i : 插入, 從目前游標所在之處插入所輸入之文字。 a : 增加, 目前游標所在之下一個字開始輸入文字。 o : 從新的一行行首開始輸入文字。 2. 移動游標 h、j、k、l : 分別控制游標左、下、上、右移一格。 ^b : 往後一頁。 ^f : 往前一頁。 G : 移到檔案最後。 0 : 移到檔案開頭。 3. 刪除 x : 刪除一個字元。 #x : 例, 3x 表刪除 3 個字元。 dd : 刪除游標所在之行。 #dd : 例, 3dd 表刪除自游標算起之 3 行。 4. 更改 cw : 更改游標處之字到字尾 $ 處。 c#w : 例, c3w 表更改 3 個字。 5. 取代 r : 取代游標處之字元。 R : 取代字元直到按 為止。 6. 復制 yw : 拷貝游標處之字到字尾。 p : 復制(put)到所要之處。(指令 'yw' 與 'p' 必須搭配使用。) 7. 跳至指定之行 ^g : 列出行號 #G : 例, 44G 表移動游標至第 44 行行首。 Last line mode 下指令簡介 注意: 使用前請先按 鍵確定在 Command mode 下。按 ':' 或 '/' 或 '?' 三鍵即可進入 Last line mode。 1.列出行號 :set nu (可用 :set all 列出所有的選擇項。) 2.尋找字串 /word (由首至尾尋找) ?word (由尾至首尋找) l 壓縮工具 tar,gzip的使用方法 1.壓縮一組文件為tar.gz後綴。 # tar cvf backup.tar /etc #gzip -q backup.tar 或 # tar cvfz backup.tar.gz /etc/ 2.釋放一個後綴為tar.gz的文件。 #gunzip backup.tar.gz #tar xvf backup.tar 或 # tar xvfz backup.tar.gz 3.用一個命令完成壓縮 #tar cvf - /etc/ gzip -qc > backup.tar.gz 4.用一個命令完成釋放 # gunzip -c backup.tar.gz tar xvf - 5.如何解開tar.Z的文件? # tar xvfz backup.tar.Z 或 # uncompress backup.tar.Z #tar xvf backup.tar 6.如何解開.tgz文件? #gunzip backup.tgz 7.如何壓縮和解壓縮.bz2的包? #bzip2 /etc/smb.conf 這將壓縮文件smb.conf成smb.conf.bz2 #bunzip2 /etc/smb.conf.bz2 這將在當前目錄下還原smb.conf.bz2為smb.conf 注: .bz2壓縮格式不是很常用,你可以man bzip2 l 安裝工具 RPM是世界著名的Red Hat公司推出的一種軟件包安裝工具,全稱為Redhat Package Manager。RPM的出現提供了一種全新的軟件包安裝方法,在方便性上甚至超過了微軟的Windows。下面我就介紹一下RPM的基本使用方法。 1.安裝一個包 # rpm -ivh < rpm package name> 2.升級一個包 # rpm -Uvh < rpm package name> 3.移走一個包 # rpm -e < rpm package name> 4.安裝參數 --force 即使覆蓋屬於其它包的文件也強迫安裝 --nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。 5.查詢一個包是否被安裝 # rpm -q < rpm package name> 6.得到被安裝的包的信息 # rpm -qi < rpm package name> 7.列出該包中有哪些文件 # rpm -ql < rpm package name> 8.列出服務器上的一個文件屬於哪一個RPM包 #rpm -qf 文件名稱 9.可綜合好幾個參數一起用 # rpm -qil < rpm package name> 10.列出所有被安裝的rpm package # rpm -qa < rpm package name> 11.列出一個未被安裝進系統的RPM包文件中包含有哪些文件? # rpm -qilp < rpm package name> 尾語 到這裡,我們這次Linux基礎講座的授課部分就基本結束了,祝願大家能夠開始對這個新興的操作系統賦予足夠的關注,並能夠在Linux的世界裡得到豐厚的收獲。我們這個系列講座也只能起到一個拋磚引玉的作用,希望大家能夠在今後的學習中不斷的充實自己的實力,早日成為“骨灰級”的Linux高手。 如果條件允許的話,我們還會在第四次講座的時候請一位Linux高手來和大家一起談談,解答大家在使用Linux時的一些問題。 在本書的最後我附上了GPL的非官方中文譯本,這對於每一個Linux的基礎學習材料都是必需的,copy left是Linux的另一大精髓。 GNU GPL -- GNU通用公共許可證 譯者不詳,轉載自linuxforum.net 1991.6第二版 版權所有(C)1989,1991 Free Software foundation,Inc.675 Mass Ave,Cambridge,MAO2139,USA 允許每個人復制和發布這一許可證原始文檔的副本,但絕對不允許對它進行任何修改。 序言 大多數軟件許可證決意剝奪你的共享和修改軟件的自由。對比之下,GNU通用公共許可證力圖保證你的共享和修改自由軟件的自由——保證自由軟件對所有用戶是自由的。GPL適用於大多數自由軟件基金會的軟件,以及由使用這些軟件而承擔義務的作者所開發的軟件。(自由軟件基金會的其他一些軟件受GNU庫通用許可證的保護)。你也可以將它用到你的程序中。 當我們談到自由軟件(free software)時,我們指的是自由而不是價格。我們的GNU通用公共許可證決意保證你有發布自由軟件的自由(如果你願意,你可以對此項服務收取一定的費用);保證你能收到源程序或者在你需要時能得到它;保證你能修改軟件或將它的一部分用於新的自由軟件;而且還保證你知道你能做這些事情。為了保護你的權利,我們需要作出規定:禁止任何人不承認你的權利,或者要求你放棄這些權利。如果你修改了自由軟件或者發布了軟件的副本,這些規定就轉化為你的責任。例如,如果你發布這樣一個程序的副本,不管是收費的還是免費的,你必須將你具有的一切權利給予你的接受者;你必須保證他們能收到或得到源程序; 並且將這些條款給他們看,使他們知道他們有這樣的權利。 我們采取兩項措施來保護你的權利。 (l)給軟件以版權保護。 (2)給你提供許可證。它給你復制,發布和修改這些軟件的法律許可。同樣,為了保護每個作者和我們自己,我們需要清楚地讓每個人明白,自由軟件沒有擔保(no warranty)。如果由於其他某個人修改了軟件,並繼續加以傳播。我們需要它的接受者明白:他們所得到的並不是原來的自由軟件。由其他人引人的任何問題,不應損害原作者的聲譽。 最後,任何自由軟件不斷受到軟件專利的威脅。我們希望避免這樣的風險,自由軟件的再發布者以個人名義獲得專利許可證。事實上,將軟件變為私有。為防止這一點,我們必須明確:任何專利必須以允許每個人自由使用為前提,否則就不准許有專利。 有關復制,發布和修改的條款和條件 0.此許可證適用於任何包含版權所有者聲明的程序和其他作品,版權所有者在聲明中明確說明程序和作品可以在GPL條款的約束下發布。下面提到的“程序”指的是任何這樣的程或作品。而“基於程序的作品”指的是程序或者任何受版權法約柬的衍生作品。也就是說包含程序或程序的一部分的作品。可以是原封不動的,或經過修改的和/或翻譯成其他語言的(程序)。在下文中,翻譯包含在修改的條款久每個許可證接受人(license)用你來稱呼。許可證條款不適用於復制,發布和修改以外的活動。這些活動超出這些條款的范圍。運行程序的活動不受條款的限止。僅當程序的輸出構成基於程序作品的內容時,這一條款才適用(如果只運行程序就無關)。是否普遍適用取決於程序具體用來做什麼。 1.只要你在每一副本上明顯和恰當地出版版權聲明和不承擔擔保的聲明,保持此許可證 的聲明和沒有擔保的聲明完整無損,並和程序一起繪每個其他的程序接受者一份許可證的副本,你就可以用任何媒體復制和發布你收到的原始的程序的源代碼。你可以為轉讓副本的實際行動收取一定費用。你也有權選擇提供擔保以換取一定費用。 2.你可以修改程序的一個或幾個副本或程序的任何部分,以此形成基於程序的作品。只要你同時滿足下面的所有條件,你就可以按前面第一款的要求復制和發布這一經過修改的程序或作品。 a)你必須在修改的文件中附有明確的說明:你修改了這一文件及具體的修改日期。 b)你必須使你發布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允許第三方作為整體按許可證條款免費使用。 c)如果修改的程序在運行時以交互方式讀取命令,你必須使它在開始進入常規的交互使用方式時打印或顯示聲明:包括適當的版權聲明和沒有擔保的聲明(或者你提供擔保的聲明);用戶可以按此許可證條款重新發布程序的說明;並告訴用戶如何看到這一許可證的副本。(例外的情況:如果原始程序以交互方式工作,它並不打印這樣的聲明,你的基於程序的作品也就不用打印聲明)。 這些要求適用於修改了的作品的整體。如果能夠確定作品的一部分並非程序的衍生產品,可以合理地認為這部分是獨立的,是不同的作品。當你將它作為獨立作品發布時,它不受此許可證和它的條款的約束。但是當你將這部分作為基於程序的作品的一部分發布時,作為整體它將受到許可證條款約束。准予其他許可證持有人的使用范圍擴大到整個產品。也就是每個部分,不管它是誰寫的。 因此,本條款的意圖不在於索取權利;或剝奪全部由你寫成的作品的權利。而是履行權利來控制基於程序的集體作品或衍生作品的發布。此外,將與程序無關的作品和該程序或基於程序的作品一起放在存貯體或發布媒體的同一卷上,並不導致將其他作品置於此許可證的約束范圍之內。 3.你可以以目標碼或可執行形式復制或發布程序(或符合第2款的基於程序的作品),只要你遵守前面的第l,2款,並同時滿足下列3條中的1條。 a)在通常用作軟件交換的媒體上,和目標碼一起附有機器可讀的完整的源碼。這些源碼的發布應符合上面第1,2款的要求。或者 b)在通常用作軟件交換的媒體上,和目標碼一起,附有給第三方提供相應的機器可讀的源碼的書面報價。有效期不少於3年,費用不超過實際完成源程序發布的實際成本。源碼的發布應符合上面的第1,2款的要求。或者 c)和目標碼一起,附有你收到的發布源碼的報價信息。(這一條款只適用於非商業性發布,而且你只收到程序的目標碼或可執行代碼和按b)款要求提供的報價)。 作品的源碼指的是對作品進行修改最優先擇取的形式。對可執行的作品講,完整的源碼包括:所有模塊的所有源程序,加上有關的接口的定義,加上控制可執行作品的安裝和編譯的script。作為特殊例外,發布的源碼不必包含任何常規發布的供可執行代碼在上面運行的操作系統的主要組成部分(如編譯程序,內核等)。除非這些組成部分和可執行作品結合在一起。 如果采用提供對指定地點的訪問和復制的方式發布可執行碼或目標碼,那麼,提供對同一地點的訪問和復制源碼可以算作源碼的發布,即使第三方不強求與目標碼一起復制源碼。 4.除非你明確按許可證提出的要求去做,否則你不能復制,修改,轉發許可證和發布程序。任何試圖用其他方式復制,修改,轉發許可證和發布程序是無效的。而且將自動結束許可證賦予你的權利。然而,對那些從你那裡按許可證條款得到副本和權利的人們,只要他們繼續全面履行條款,許可證賦予他們的權利仍然有效。 5.你沒有在許可證上簽字,因而你沒有必要一定接受這一許可證。然而,沒有任何其他東西賦予你修改和發布程序及其衍生作品的權利。如果你不接受許可證,這些行為是法律禁止的。因此,如果你修改或發布程序(或任何基於程序的作品),你就表明你接受這一許可證以及它的所有有關復制,發布和修改程序或基於程序的作品的條款和條件。 6.每當你重新發布程序(或任何基於程序的作品)時,接受者自動從原始許可證頒發者那裡接到受這些條款和條件支配的復制,發布或修改程序的許可證。你不可以對接受者履行這裡賦予他們的權利強加其他限制。你也沒有強求第三方履行許可證條款的義務。 7.如果由於法院判決或違反專利的指控或任何其他原因(不限於專利問題)的結果,強加於你的條件(不管是法院判決,協議或其他)和許可證的條件有沖突。他們也不能用許可證條款為你開脫。 在你不能同時滿足本許可證規定的義務及其他相關的義務時,作為結果,你可以根本不發布程序。例如,如果某一專利許可證不允許所有那些直接或間接從你那裡接受副本的人們在不付專利費的情況下重新發布程序,唯一能同時滿足兩方面要求的辦法是停止發布程序。 如果本條款的任何部分在特定的環境下無效或無法實施,就使用條款的其余部分。並將條款作為整體用於其他環境。 本條款的目的不在於引誘你侵犯專利或其他財產權的要求,或爭論這種要求的有效性。 本條款的主要目的在於保護自由軟件發布系統的完整性。它是通過通用公共許可證的應用來實現的。許多人堅持應用這一系統,已經為通過這一系統發布大量自由軟件作出慷慨的供獻。作者/捐獻者有權決定他/她是否通過任何其他系統發布軟件。許可證待有人不能強制這種選擇。 本節的目的在於明確說明許可證其余部分可能產生的結果。 8.如果由於專利或者由於有版權的接口問題使程序在某些國家的發布和使用受到限止,將此程序置於許可證約束下的原始版權擁有者可以增加限止發布地區的條款,將這些國家明確排除在外。並在這些國家以外的地區發布程序。在這種情況下,許可證包含的限止條款和許可證正文一樣有效。 9.自由軟件基金會可能隨時出版通用公共許可證的修改版或新版。新版和當前的版本在原則上保持一致,但在提到新問題時或有關事項時,在細節上可能出現差別。 每一版本都有不同的版本號。如果程序指定適用於它的許可證版本號以及“任何更新的版本”。你有權選擇遵循指定的版本或自由軟件基金會以後出版的新版本,如果程序未指定許可證版本,你可選擇自由軟件基金會已經出版的任何版本。 10.如果你願意將程序的一部分結合到其他自由程序中,而它們的發布條件不同。寫信給作者,要求准予使用。如果是自由軟件基金會加以版權保護的軟件,寫信給自由軟件基金會。我們有時會作為例外的情況處理。我們的決定受兩個主要目標的指導。這兩個主要目標是:我們的自由軟件的衍生作品繼續保持自由狀態。以及從整體上促進軟件的共享和重復利用。 沒有擔保 l1.由於程序准予免費使用,在適用法准許的范圍內,對程序沒有擔保。除非另有書面說明,版權所有者和/或其他提供程序的人們“一樣” 不提供任何類型的擔保。不論是明確的,還是隱含的。包括但不限於隱含的適銷和適合特定用途的保證。全部的風險,如程序的質量和性能問題都由你來承擔。如果程序出現缺陷,你承擔所有必要的服務,修復和改正的費用。 12.除非適用法或書面協議的要求,在任何情況下,任何版權所有者或任何按許可證條款修改和發布程序的人們都不對你的損失負有任何責任。包括由於使用或不能使用程序引起的任何一般的,特殊的,偶然發生的或重大的損失(包括但不限於數據的損失,或者數據變得不精確,或者你或第三方的持續的損失,或者程序不能和其他程序協調運行等)。即使版權所有者和其他人提到這種損失的可能性也不例外。 最後的條款和條件 如何將這些條款用到你的新程序 如果你開發了新程序,而且你需要它得到公眾最大限度的利用。 要做到這一點的最好辦法是將它變為自由軟件。使得每個人都能在遵守條款的基礎上對它進行修改和重新發布。為了做到這一點,繪程序附上下列聲明。最安全的方式是將它放在每個源程序的開頭,以便最有效地傳遞拒絕擔保的信息。每個文件至少應有“版權所有”行以及在什麼地方能看到聲明全文的說明。 <用一行空間給出程序的名稱和它用來做什麼的簡單說明> 版權所有(C)19xx(<作者姓名> 這一程序是自由軟件,你可以遵照自由軟件基金會出版的GNU通用公共許可證條款來修改和重新發布這一程序。或者用許可證的第二版,或者 (根據你的選擇)用任何更新的版本。 發布這一程序的目的是希望它有用,但沒有任何擔保。甚至沒有適合特定目的的隱含的擔保。更詳細的情況請參閱GNU通用公共許可證。 你應該已經和程序一起收到一份GNU通用公共許可證的副本。如果還沒有,寫信給: The Free Software Foundation,Inc,,675 Mass Ave,Cambridge, MAO2139,USA還應加上如何和你保持聯系的信息。 如果程序以交互方式進行工作,當它開始進人交互方式工作時,使它輸出類似下面的簡短聲明ll Gnomovision第69版,版權所有(C)19XX,作者姓名, Gnomovision絕對沒有擔保。要知道詳細情況,請輸人'show w'。 這是自由軟件,歡迎你遵守一定的條件重新發布它,要知道詳細情況,請輸人'Show c'。 假設的命令‘shovr w’和‘show c’應顯示通用公共許可證的相應條款。當然,你使用的命令名稱可以不同於‘show w’和‘show c,。根據你的程序的具體情況,也可以用菜單或鼠標選項來顯示這些條款。 如果需要,你應該取得你的上司(如果你是程序員)或你的學校簽署放棄程序版權的聲明。下面只是一個例子,你應該改變相應的名稱: Ynyodyne公司以此方式放棄James Harker所寫的Gnomovision程序的全部版權利益。 <Ty coon簽名>,1989.4.1 Ty coon付總裁 這一許可證不允許你將程序並人專用程序。如果你的程序是一個子程序庫。你可能會認為用庫的方式和專用應用程序連接更有用。如果這是你想做的事,使用GNU庫通用公共許可證代替本許可證。