亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2383 | 回復(fù): 0
打印 上一主題 下一主題

第 3 部分: 中級(jí)管理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-02-02 16:03 |只看該作者 |倒序?yàn)g覽

在本教程中,通過(guò)講述不同的主題(包括:系統(tǒng)和因特網(wǎng)文檔、Linux 權(quán)限模式、用戶帳戶管理以及登錄環(huán)境調(diào)節(jié)),我們將使您的基本的 Linux 管理技能方面的知識(shí)趨于完善。
一。關(guān)于本教程
本教程講述了什么內(nèi)容?
歡迎來(lái)到“中級(jí)管理”,專為 Linux Professional Institute 的 101 考試準(zhǔn)備的四部分教程系列的第三部分。在本教程中,通過(guò)講述不同的主題(包括:系統(tǒng)和因特網(wǎng)文檔、Linux 權(quán)限模式、用戶帳戶管理以及登錄環(huán)境調(diào)節(jié)),我們將使您的基本的 Linux 管理技能方面的知識(shí)趨于完善。
在本教程系列結(jié)束之際(總共 8 部分),您將具備成為“Linux 系統(tǒng)管理員”所必需的知識(shí),并且如果您選擇參加 LPI 考試,您將為取得 Linux Professional Institute 頒發(fā)的 LPIC Level 1 證書(shū)做好準(zhǔn)備。
LPI 徽標(biāo)是 Linux Professional Institute 的商標(biāo)。
我應(yīng)該學(xué)習(xí)該教程嗎?
本教程(第 3 部分)是為想要學(xué)習(xí) Linux 權(quán)限模型、帳戶管理以及系統(tǒng)和因特網(wǎng)文檔的人員提供的理想教材。對(duì)一些人來(lái)說(shuō),本教程的許多內(nèi)容都很新穎,而更有經(jīng)驗(yàn)的 Linux 用戶可能會(huì)發(fā)現(xiàn)本教程是使他們基本的 Linux 系統(tǒng)管理技能“爐火純青”的有效途徑。
如果您是 Linux 新手,我們建議您在繼續(xù)學(xué)習(xí)之前,先完成本教程系列的
第 1 部分

第 2 部分
內(nèi)容的學(xué)習(xí)。
關(guān)于作者
關(guān)于本教程內(nèi)容的技術(shù)方面的問(wèn)題,請(qǐng)與作者聯(lián)系:

Daniel Robbins 居住在新墨西哥州的 Albuquerque 市,他是
Gentoo Technologies 公司
的總裁/CEO,是 Gentoo Linux(一種面向 PC 的高級(jí) Linux)和 Portage 系統(tǒng)(Linux 的下一代移植系統(tǒng))的創(chuàng)始人。他還是 Macmillan 書(shū)籍 Caldera OpenLinux Unleashed、 SuSE Linux UnleashedSamba Unleashed 的撰稿人。Daniel 自二年級(jí)起就與計(jì)算機(jī)某些領(lǐng)域結(jié)下不解之緣,那時(shí)他首先接觸的是 Logo 程序語(yǔ)言,并沉溺于 Pac Man 游戲中。這可能是他后來(lái)作為 SONY Electronic Publishing/Psygnosis 的“首席圖形設(shè)計(jì)師”的原因。Daniel 喜歡與他的妻子 Mary 和他的女兒 Hadassah 共享天倫之樂(lè)。
Chris Houser,朋友稱他為“Chouser”,自 1994 年他加入印地安那州 Taylor University(他在這里獲得了“計(jì)算機(jī)科學(xué)與數(shù)學(xué)”的學(xué)士學(xué)位)的計(jì)算機(jī)科學(xué)網(wǎng)絡(luò)管理小組開(kāi)始,他就一直是一名 UNIX 支持者。其后,他曾經(jīng)從事 Web 應(yīng)用程序編程、用戶界面設(shè)計(jì)、專業(yè)視頻軟件支持,現(xiàn)在他正在
Compaq
從事 Tru64 UNIX 設(shè)備驅(qū)動(dòng)程序編程。他還為各種自由軟件項(xiàng)目出力,最近的項(xiàng)目是
Gentoo Linux
。他與他的妻子及兩只貓居住在新罕布什爾州。
Aron Griffis 畢業(yè)于 Taylor University,在那里獲得計(jì)算機(jī)科學(xué)學(xué)位,并且被譽(yù)為“烏托邦 UNIX 社區(qū)的未來(lái)奠基人”。Aron 為這個(gè)目標(biāo)而奮斗,他受聘于
Compaq
,從事編寫(xiě) Tru64 UNIX 的網(wǎng)絡(luò)驅(qū)動(dòng)程序的工作,閑暇時(shí)間里他喜歡彈鋼琴或開(kāi)發(fā)
Gentoo Linux
。他和他的妻子 Amy(也是一位 UNIX 工程師)居住在新罕布什爾州的 Nashua。
二。系統(tǒng)和網(wǎng)絡(luò)文檔
Linux 系統(tǒng)文檔的類型
從本質(zhì)上說(shuō),Linux 系統(tǒng)中有三種文檔資源:手冊(cè)頁(yè)、信息頁(yè)和 /usr/share/doc 中的應(yīng)用程序隨附的文檔。在本章中,我們將揭示瀏覽這其中的每一種資源的方法,而不用“突破常規(guī)”地查找更多信息。
手冊(cè)頁(yè)
手冊(cè)頁(yè)(manual pages,或“man pages”)是 UNIX 和 Linux 的參考文檔的典型形式。理想的情況是,您可以在手冊(cè)頁(yè)中查找任何命令、配置文件或庫(kù)例程的信息。實(shí)際上,由于 Linux 是自由軟件,一些手冊(cè)頁(yè)沒(méi)有編寫(xiě),或者顯得過(guò)時(shí)了。雖然如此,當(dāng)您需要幫助的時(shí)候,手冊(cè)頁(yè)仍是您的首選。
要訪問(wèn)手冊(cè)頁(yè),只需輸入 man,后面跟上您要查詢的主題。頁(yè)面閱讀器(pager)將被啟動(dòng),那么當(dāng)您完成閱讀時(shí),您需要按 q。例如,為了查找關(guān)于 ls 命令的信息,您要輸入:
$ man ls 了解手冊(cè)頁(yè)的布局對(duì)于快速地轉(zhuǎn)到您所需要的信息很有幫助。一般來(lái)說(shuō),您將在手冊(cè)頁(yè)中找到下面這些章節(jié): NAME命令的名稱和單行描述SYNOPSIS怎樣使用命令DESCRIPTION命令功能的深入討論EXAMPLES怎樣使用命令的建議SEE ALSO
相關(guān)主題(通常是手冊(cè)頁(yè))
手冊(cè)頁(yè)章節(jié)
構(gòu)成手冊(cè)頁(yè)的這些文件存儲(chǔ)在 /usr/share/man 中(或者有些舊一點(diǎn)的系統(tǒng)存儲(chǔ)在 /usr/man 中)。在該目錄內(nèi),您將發(fā)現(xiàn)手冊(cè)頁(yè)被組織成下面這些章節(jié):
man1用戶程序man2系統(tǒng)調(diào)用man3庫(kù)函數(shù)man4特殊文件man5文件格式man6游戲man7其它
多個(gè)手冊(cè)頁(yè)
有些主題在多個(gè)章節(jié)中存在。為了說(shuō)明這一點(diǎn),我們來(lái)使用 whatis 命令,它將顯示一個(gè)主題所有可用的手冊(cè)頁(yè):
$ whatis printf
printf               (1)  - format and print data
printf               (3)  - formatted output conversion
在這種情況下,man printf 將第 1 節(jié)(“用戶程序”)中的頁(yè)面作為缺省手冊(cè)頁(yè)。如果我們正在寫(xiě) C 程序,我們可能對(duì)第 3 節(jié)(“庫(kù)函數(shù)”)中的頁(yè)面更感興趣。您可以通過(guò)在命令行中指定章節(jié)來(lái)打開(kāi)某一章節(jié)中的手冊(cè)頁(yè),因此要打開(kāi) printf(3),我們將輸入:$ man 3 printf
查找正確的手冊(cè)頁(yè)有時(shí),對(duì)于給定的主題很難找到正確的手冊(cè)頁(yè)。在這種情況下,您可以試著使用 man -k 來(lái)搜索手冊(cè)頁(yè)的 NAME 這一節(jié)。請(qǐng)注意這是子串搜索,因此運(yùn)行像 man -k ls 這樣的命令將給出一大堆輸出!下面是使用更具體的查詢的一個(gè)示例:數(shù)字權(quán)限語(yǔ)法$ man -k whatis
apropos              (1)  - search the whatis database for strings
makewhatis           (8)  - Create the whatis database
whatis               (1)  - search the whatis database for complete words
所有關(guān)于 apropos 的內(nèi)容
啊,前一屏的這個(gè)示例引出了兩點(diǎn)更多的內(nèi)容!第一,apropos 命令正好等價(jià)于 man -k。(事實(shí)上,我要讓您知道一些小竅門。當(dāng)您運(yùn)行 man -k 時(shí),它實(shí)際在幕后運(yùn)行 apropos。)第二點(diǎn)是 makewhatis 命令,它掃描您的 Linux 系統(tǒng)上的所有手冊(cè)頁(yè),并且為 whatisapropos 構(gòu)建數(shù)據(jù)庫(kù)。通常這由 root 用戶定期運(yùn)行,從而使數(shù)據(jù)庫(kù)保持更新:
# makewhatis
要獲取關(guān)于“man”及其參數(shù)的更多信息,您應(yīng)該從它本身的手冊(cè)頁(yè)開(kāi)始:
$ man man
MANPATH
缺省情況下,man 程序?qū)⒃?/usr/share/man、/usr/local/man、/usr/X11R6/man 以及還可能在 /opt/man 中查找手冊(cè)頁(yè)。有時(shí),您可能發(fā)現(xiàn)您需要給該搜索路徑添加一個(gè)附加項(xiàng)。如果是這樣,只需在文本編輯器中編輯 /etc/man.conf,添加一行類似這樣的內(nèi)容:
MANPATH /opt/man
從這一點(diǎn)向前,將找到 /opt/man/man* 目錄中的所有手冊(cè)頁(yè)。請(qǐng)記住您將需要重新運(yùn)行 makewhatis,從而將這些新手冊(cè)頁(yè)添加到 whatis 數(shù)據(jù)庫(kù)中。
GNU 信息
手冊(cè)頁(yè)的一個(gè)缺點(diǎn)是它們不支持超文本,因此您不能容易地從一個(gè)地方跳到另一個(gè)地方。GNU 的工作者們意識(shí)到了這個(gè)缺點(diǎn),因此他們發(fā)明了另一種文檔格式:“信息”頁(yè)。許多 GNU 程序帶有信息頁(yè)形式的擴(kuò)展文檔。您可以用“info”命令開(kāi)始閱讀信息頁(yè):
$ info
以這種方式調(diào)用 info 將在系統(tǒng)上生成可用頁(yè)面的索引。您可以用箭頭鍵在上面來(lái)回移動(dòng),使用 enter 鍵進(jìn)入鏈接(用星號(hào)表明),按 q 退出。這些鍵是基于 Emacs 的,因此如果您對(duì)這種編輯器很熟悉,那么您應(yīng)該能夠很容易地瀏覽。

您也可以在命令行中指定信息頁(yè):
$ info diff
為了獲取關(guān)于使用 info 閱讀器更多的信息,請(qǐng)?jiān)囍喿x它的信息頁(yè)。您應(yīng)該能夠自己學(xué)會(huì)使用我已經(jīng)提到的幾個(gè)鍵進(jìn)行瀏覽:
$ info info
/usr/share/doc Linux 系統(tǒng)上還有最后一種幫助資源。許多程序還帶有其它格式的附加文檔:文本、PDF、PostScript、HTML,這里僅舉出幾種。在 /usr/share/doc 中(或者舊一些的系統(tǒng)上的 /usr/doc)看一看。您將發(fā)現(xiàn)一個(gè)很長(zhǎng)的目錄列表,其中每個(gè)目錄都帶有您系統(tǒng)上的某個(gè)應(yīng)用程序。搜索該文檔通常可以發(fā)現(xiàn)一些在手冊(cè)頁(yè)或信息頁(yè)中找不到的精品,比如教程或附加的技術(shù)文檔?焖贆z查將發(fā)現(xiàn)這里有大量有用的閱讀材料:
$ cd /usr/share/doc
$ find . -type f | wc -l
   7582
哎呀!今晚您的家庭作業(yè)就是閱讀這些文檔的一半(3791)。等著明天測(cè)驗(yàn)哦。 ;-) Linux 文檔計(jì)劃除系統(tǒng)文檔之外,因特網(wǎng)上有很多優(yōu)秀的 Linux 參考資料。“Linux 文檔計(jì)劃”(Linux Documentation Project)是一群志愿者將完整的免費(fèi) Linux 文檔系列放在一起的行動(dòng)。該計(jì)劃的存在是為了將 Linux 文檔的不同片斷放在容易搜索和使用的地方。您可以在:
http://www.linuxdoc.org/
上查閱 LDPLDP 概述LDP 由下面這些方面組成:
  • 指南 ― 更長(zhǎng)、更深入的書(shū)籍,比如
    The Linux Programmer's Guide
  • HOWTO ― 特定主題的幫助,比如
    DSL HOWTO
  • FAQ ― 帶有回答的“常見(jiàn)問(wèn)題”(Frequently Asked Questions),比如
    Brief Linux FAQ
  • 手冊(cè)頁(yè) ― 個(gè)別命令的幫助(它們與您在 Linux 上使用 man 命令時(shí)所得到的手冊(cè)頁(yè)相同)
如果您不確信要細(xì)讀哪一部分,您可以利用搜索框,它允許您通過(guò)主題來(lái)查找內(nèi)容。 此外,LDP 還提供鏈接和參考資料列表,比如
Linux Gazette

LinuxFocus
,以及郵件列表和新聞歸檔文件的鏈接。 郵件列表郵件列表很可能提供了 Linux 開(kāi)發(fā)者相互合作的最重要的因素。項(xiàng)目一般由相隔遙遠(yuǎn)的貢獻(xiàn)者制定,他們甚至可能在地球的兩端。對(duì)于一個(gè)項(xiàng)目,郵件列表為每個(gè)開(kāi)發(fā)者提供一種方法,使他們可與所有其他開(kāi)發(fā)者聯(lián)系,還可以通過(guò)電子郵件舉行小組討論。最有名的開(kāi)發(fā)郵件列表之一是“Linux Kernel Mailing List”,在
http://www.tux.org/lkml/
中有描述。更多的關(guān)于郵件列表的內(nèi)容 除了開(kāi)發(fā)之外,郵件列表還可以提供提問(wèn)以及從博學(xué)的開(kāi)發(fā)者,或者甚至從其他用戶那里得到回答的方法。例如,單獨(dú)的分發(fā)包經(jīng)常給新來(lái)者提供郵件列表。您可以檢查您的分發(fā)包的 Web 站點(diǎn),以獲取所提供的關(guān)于郵件列表的信息。 如果您花時(shí)間閱讀過(guò)前一屏上鏈接的 LKML FAQ,您可能已經(jīng)注意到郵件列表訂戶通常對(duì)于被重復(fù)問(wèn)到的問(wèn)題不太友好。在寫(xiě)問(wèn)題之前,搜索一下所給郵件列表的歸檔文件總是很明智的。這很可能也將節(jié)省您的時(shí)間!新聞組 因特網(wǎng)“新聞組”類似于郵件列表,但是它基于叫做 NNTP(“Network News Transfer Protocol”,網(wǎng)絡(luò)新聞傳輸協(xié)議)的協(xié)議,而不使用電子郵件。為了參加新聞組,您需要使用 NNTP 客戶端程序,比如 slrnpan。其主要的優(yōu)點(diǎn)是您可以只參加您想?yún)⒓拥挠懻,而不?huì)總有郵件發(fā)到您的信箱中。:-) 最有影響力的新聞組的討論是 comp.os.linux。您可以在 LDP 站點(diǎn)
http://www.linuxdoc.org/linux/#ng
上瀏覽該列表。 和郵件列表一樣,新聞組討論經(jīng)常被歸檔。一個(gè)很受歡迎的新聞組歸檔站點(diǎn)是
Deja News
。供應(yīng)商和第三方 Web 站點(diǎn)各種 Linux 分銷商的 Web 站點(diǎn)經(jīng)常提供更新的文檔、安裝說(shuō)明、硬件兼容性/不兼容性聲明以及其它支持,如知識(shí)庫(kù)搜索工具。例如: Linux 咨詢公司 一些 Linux 咨詢公司,比如 Linuxcare 和 Mission Critical Linux 提供了一些免費(fèi)的文檔以及付費(fèi)的支持合同。有許多 Linux 咨詢公司;下面是兩個(gè)較大的 Linux 咨詢公司: 硬件和軟件供應(yīng)商 近年來(lái),很多硬件和軟件供應(yīng)商將 Linux 支持添加到它們的產(chǎn)品中。在它們的站點(diǎn)上,您可以找到支持 Linux 的硬件、軟件開(kāi)發(fā)工具、發(fā)行的資源、面向特定硬件的 Linux 驅(qū)動(dòng)程序的下載包以及其它專門的 Linux 工程方面的信息。例如: 開(kāi)發(fā)者資源
除此之外,許多硬件和軟件供應(yīng)商已經(jīng)為 Linux 開(kāi)發(fā)者和管理者開(kāi)發(fā)出許多很優(yōu)秀的的資源。雖然聽(tīng)上去似有自我吹噓之嫌,但由硬件/軟件供應(yīng)商運(yùn)營(yíng)的最有價(jià)值的 Linux 資源是
IBM developerWorks Linux 專區(qū)
。
三。linux權(quán)限模型
一個(gè)用戶、一個(gè)組

在這一章,我們將來(lái)看一看 Linux 權(quán)限和所有權(quán)模型。我們已經(jīng)看到每個(gè)文件屬于一個(gè)用戶和一個(gè)組。這正是 Linux 中權(quán)限模型的核心。您可以在 ls -l 清單中查看用戶和組:
$ ls -l /bin/bash
-rwxr-xr-x    1 root     wheel      430540 Dec 23 18:27 /bin/bash
在這個(gè)特殊的示例中,/bin/bash 可執(zhí)行文件屬于 root 用戶,并且在 wheel 組中。Linux 權(quán)限模型通過(guò)允許給每個(gè)文件系統(tǒng)對(duì)象設(shè)置三種獨(dú)立的權(quán)限級(jí)別來(lái)工作 ― 它們?yōu)槲募乃姓、文件的組以及所有其他用戶。
理解“l(fā)s -l”
我們來(lái)看一看我們的 ls -l 輸出,檢查一下這個(gè)清單的第一欄:
$ ls -l /bin/bash
-rwxr-xr-x    1 root     wheel      430540 Dec 23 18:27 /bin/bash
第一個(gè)字段 -rwxr-xr-x 包含該特殊文件的權(quán)限的符號(hào)表示。該字段中的首字符(-)指定該文件的類型,本例中它是一個(gè)常規(guī)文件。其它可能的首字符還有:
“d”目錄
“l(fā)”符號(hào)鏈接
“c”字符專門設(shè)備文件
“b”塊專門設(shè)備文件
“p”先進(jìn)先出
“s”套接字
三個(gè)三元組
$ ls -l /bin/bash
-rwxr-xr-x    1 root     wheel      430540 Dec 23 18:27 /bin/bash
該字段的其余部分由三個(gè)三元組字符組成。第一個(gè)三元字符組代表文件所有者的權(quán)限,第二個(gè)代表文件的組的權(quán)限,第三個(gè)代表所有其他用戶的權(quán)限:
"rwx"
"r-x"
"r-x"
上面,r 表示允許讀(查看文件中的數(shù)據(jù)),w 表示允許寫(xiě)(修改文件以及刪除),x 表示允許“執(zhí)行”(運(yùn)行程序)。將所有這些信息放在一起,我們可以發(fā)現(xiàn)每個(gè)人都能夠讀該文件的內(nèi)容和執(zhí)行該文件,但是只允許文件所有者(root 用戶)可以以任何方式修改該文件。因此,雖然一般用戶可以復(fù)制該文件,但是只允許 root 用戶更新或刪除它。
我是誰(shuí)?
在我們看怎樣改變文件的用戶所有權(quán)和組所有權(quán)之前,我們首先來(lái)看一看怎樣得知您當(dāng)前的用戶標(biāo)識(shí)和組成員資格。除非最近您使用過(guò) su 命令,否則您當(dāng)前的用戶標(biāo)識(shí)是您用來(lái)登錄系統(tǒng)的用戶標(biāo)識(shí)。但是,如果您經(jīng)常使用 su,您可能不記得您當(dāng)前有效的用戶標(biāo)識(shí)。要查看用戶標(biāo)識(shí),輸入 whoami
# whoami
root
# su drobbins
$ whoami
drobbins
我在哪一組?
要看看您屬于哪一組,使用 group 命令:
$ groups
drobbins wheel audio
在上面的示例中,我是 drobbins、wheel 和 audio 組的成員。如果您想看看其他用戶在什么組,指定他們的用戶名作為參數(shù):
$ groups root daemon
root : root bin daemon sys adm disk wheel floppy dialout tape video
daemon : daemon bin adm
改變用戶和組所有權(quán)
為了改變文件或其它文件系統(tǒng)對(duì)象的所有者或組,分別使用 chownchgrp。這兩個(gè)命令都要一個(gè)用戶名或組名作參數(shù),后面跟上一個(gè)或多個(gè)文件名。
# chown root /etc/passwd
# chgrp wheel /etc/passwd
您還可以用 chown 命令的另一種形式同時(shí)設(shè)置所有者和組:
# chown root.wheel /etc/passwd
除非您是超級(jí)用戶,否則您不可以使用 chown,然而任何人都可以使用 chgrp 來(lái)將文件的組所有權(quán)改為他們所屬的組。
遞歸的所有權(quán)改變
chown 和 chgrp 都有一個(gè) -R 選項(xiàng),該選項(xiàng)可以用來(lái)告訴它們遞歸地將所屬權(quán)和組改變應(yīng)用到整個(gè)目錄樹(shù)中。例如:
# chown -R drobbins /home/drobbins
介紹 chmod
chownchgrp 可以用來(lái)改變文件系統(tǒng)對(duì)象的所有者和組,而另一個(gè)程序 ― 叫做 chmod ― 用來(lái)改變我們可以在 ls -l 清單中看到的 rwx 權(quán)限。chmod 帶有兩個(gè)或多個(gè)參數(shù):“mode”,描述怎樣改變權(quán)限,后面跟將會(huì)受到影響的文件或文件列表:
$ chmod +x scriptfile.sh
在上面的示例中,我們的“mode”是 +x。您可能會(huì)猜到,+x 模式告訴 chmod,使該特殊文件對(duì)于用戶、組以及其它任何人都是可執(zhí)行的。
如果我們想要除去一個(gè)文件的所有執(zhí)行權(quán)限,我們應(yīng)該這樣做:
$ chmod -x scriptfile.sh
用戶/組/其他粒度  
到此,我們的 chmod 示例已經(jīng)影響到了所有三個(gè)三元組 ― 用戶、組和所有其他用戶。通常,一次只修改一個(gè)或兩個(gè)三元組很方便。要這樣做,只需要在 +- 符號(hào)之前,給您想要修改的特定的三元組指定符號(hào)字符。對(duì)于“用戶”三元組使用 u,對(duì)于“組”三元組使用 g,對(duì)于“其他/每個(gè)人”使用 o
$ chmod go-w scriptfile.sh
我們剛除去了組和所有其他用戶的寫(xiě)權(quán)限,而保留“所有者”權(quán)限不動(dòng)。
重新設(shè)置權(quán)限
除了交替打開(kāi)和關(guān)閉權(quán)限位以外,我們還可以一起重新設(shè)置它們。通過(guò)使用 = 操作符,我們可以告訴 chmod 我們要指定權(quán)限和取消別的權(quán)限:
$ chmod =rx scriptfile.sh
上面,我們只設(shè)置了所有的“read”和“execute”位,沒(méi)有設(shè)置所有的“write”位。如果您僅僅想重新設(shè)置特定的三元組,您可以像下面這樣,在 = 之前指定該三元組的符號(hào)名:
$ chmod u=rx scriptfile.sh
數(shù)字模式
直到現(xiàn)在為止,我們使用了叫做“符號(hào)”的模式來(lái)用 chmod 指定權(quán)限的改變。然而,指定權(quán)限還有一種普遍使用的方法 ― 使用 4 位八進(jìn)制數(shù)。使用叫做數(shù)字權(quán)限語(yǔ)法的語(yǔ)法,每一位代表一個(gè)權(quán)限三元組。例如,在 1777 中,777 設(shè)置本章我們所討論的“owner”、“group”和“other”標(biāo)志。1 用來(lái)設(shè)置專門的權(quán)限位,我們將在本章的結(jié)束部分講到。這個(gè)圖表說(shuō)明了怎樣解釋第二到四位(777):
模式數(shù)字rwx7rw-6r-x5r--4-wx3-w-2--x1---0
當(dāng)您需要給一個(gè)文件指定所有權(quán)限時(shí),數(shù)字權(quán)限語(yǔ)法特別有用,比如在下面的示例中:
$ chmod 0755 scriptfile.sh
$ ls -l scriptfile.sh
-rwxr-xr-x    1 drobbins drobbins        0 Jan  9 17:44 scriptfile.sh
在該示例中,我們使用了 0755 模式,它展開(kāi)為一個(gè)完整的權(quán)限設(shè)置“-rwxr-xr-x”。
umask
當(dāng)進(jìn)程創(chuàng)建了新文件時(shí),它指定新文件應(yīng)該具有的權(quán)限。通常,所請(qǐng)求的模式是 0666(每個(gè)人可讀和可寫(xiě)),它比我們希望的具有更多的權(quán)限。幸運(yùn)的是,不管什么時(shí)候創(chuàng)建了新文件,Linux 將參考叫做“umask”的東西。系統(tǒng)用 umask 值來(lái)將初始指定的權(quán)限降低為更合理、更安全的權(quán)限。您可以通過(guò)在命令行中輸入 umask 來(lái)查看您當(dāng)前的 umask 設(shè)置:
$ umask
0022
Linux 系統(tǒng)上,umask 的缺省值一般為 0022,它允許其他人讀您的新文件(如果他們可以得到它們),但是不能進(jìn)行修改。
為了在缺省的情況下使新文件更安全,您可以改變 umask 設(shè)置:
$ umask 0077
umask 將確保組和其他用戶對(duì)于新創(chuàng)建的文件絕對(duì)沒(méi)有任何權(quán)限。那么,umask 怎樣工作呢?與文件的“常規(guī)”權(quán)限不同,umask 指定應(yīng)該關(guān)閉哪一個(gè)權(quán)限。我們來(lái)參閱一下我們的“模式到數(shù)字”映射表,從而使我們可以理解 0077 的 umask 的意思是什么:
模式數(shù)字rwx7rw-6r-x5r--4-wx3-w-2--x1---0
使用該表,0077 的最后三位擴(kuò)展為 ---rwxrwx。現(xiàn)在,請(qǐng)記住 umask 告訴系統(tǒng)禁用哪個(gè)權(quán)限。根據(jù)推斷,我們可以看到將關(guān)閉所有“組”和“其他”權(quán)限,而“用戶”權(quán)限將保留不動(dòng)。
介紹 suid 和 sgid
當(dāng)您最初登錄時(shí),將啟動(dòng)一個(gè)新的 shell 進(jìn)程。您已經(jīng)知道,但是您可能還不知道這個(gè)新的 shell 進(jìn)程(通常是 bash)使用您的用戶標(biāo)識(shí)運(yùn)行。照這樣,bash 程序可以訪問(wèn)所有屬于您的文件和目錄。事實(shí)上,作為用戶,我們完全依靠其它程序來(lái)代表我們執(zhí)行操作。因?yàn)槟鷨?dòng)的程序繼承了您的用戶標(biāo)識(shí),因此它們不能訪問(wèn)任何不允許您訪問(wèn)的文件系統(tǒng)對(duì)象:
例如,一般用戶不能直接修改 passwd 文件,因?yàn)椤皐rite”標(biāo)志已經(jīng)對(duì)除“root 用戶”以外的每個(gè)用戶關(guān)閉:
$ ls -l /etc/passwd
-rw-r--r--    1 root     wheel        1355 Nov  1 21:16 /etc/passwd
但是,一般用戶確實(shí)需要在他們需要改變其密碼的任何時(shí)候,能夠修改 /etc/passwd(至少間接地)。但是,如果用戶不能修改該文件,究竟怎樣完成這個(gè)工作呢?suid
幸好,Linux 權(quán)限模型有兩個(gè)專門的位,叫做“suid”和“sgid”。當(dāng)設(shè)置了一個(gè)可執(zhí)行程序的“suid”這一位時(shí),它將代表可執(zhí)行文件的所有者運(yùn)行,而不是代表啟動(dòng)程序的人運(yùn)行。
現(xiàn)在,回到 /etc/passwd 問(wèn)題。如果看一看 passwd 可執(zhí)行文件,我們可以看到它屬于 root 用戶:
$ ls -l /usr/bin/passwd
-rwsr-xr-x    1 root     wheel       17588 Sep 24 00:53 /usr/bin/passwd
您還將注意到,這里有一個(gè) s 取替了用戶權(quán)限三元組中的一個(gè) x。這表明,對(duì)于這個(gè)特殊程序,設(shè)置了 suid 和可執(zhí)行位。由于這個(gè)原因,當(dāng) passwd 運(yùn)行時(shí),它將代表 root 用戶執(zhí)行(具有完全超級(jí)用戶訪問(wèn)權(quán)),而不是代表運(yùn)行它的用戶運(yùn)行。又因?yàn)?passwdroot 用戶訪問(wèn)權(quán)運(yùn)行,所以能夠修改 /etc/passwd 文件,而沒(méi)有什么問(wèn)題。
suid/sgid 告誡說(shuō)明
我們看到了 suid 怎樣工作,sgid 以同樣的方式工作。它允許程序繼承程序的組所有權(quán),而不是當(dāng)前用戶的程序所有權(quán)。
這里有一些關(guān)于 suid 和 sgid 的其它的但是很重要的信息。首先,suid 和 sgid 占據(jù)與 ls -l 清單中 x 位相同的空間。如果還設(shè)置了 x 位,則相應(yīng)的位表示為 s(小寫(xiě))。但是,如果沒(méi)有設(shè)置 x 位,它將表示為 S(大寫(xiě))。
另一個(gè)很重要的提示:在許多環(huán)境中,suid 和 suid 很管用,但是不恰當(dāng)?shù)厥褂眠@些位可能使系統(tǒng)的安全遭到破壞。最好盡可能地少用“suid”程序。passwd 命令是為數(shù)不多的必須使用“suid”的命令之一。
改變 suid 和 sgid
設(shè)置和除去 suid 與 sgid 位相當(dāng)簡(jiǎn)單。這里,我們?cè)O(shè)置 suid 位:
# chmod u+s /usr/bin/myapp
此處,我們從一個(gè)目錄除去 sgid 位。我們將看到 sgid 位怎樣影響下面幾屏中的目錄:
# chmod g-s /home/drobbins權(quán)限和目錄
到此為止,我們從常規(guī)文件的角度來(lái)看權(quán)限。當(dāng)從目錄的角度看權(quán)限時(shí),情況有一點(diǎn)不同。目錄使用同樣的權(quán)限標(biāo)志,但是它們被解釋為表示略微不同的含義。
對(duì)于一個(gè)目錄,如果設(shè)置了“read”標(biāo)志,您可以列出目錄的內(nèi)容;“write”表示您可以在目錄中創(chuàng)建文件,“execute”表示您可以進(jìn)入該目錄并訪問(wèn)內(nèi)部的任何子目錄。沒(méi)有“execute”標(biāo)志,目錄內(nèi)的文件系統(tǒng)對(duì)象是不可訪問(wèn)的。沒(méi)有“read”標(biāo)志,目錄內(nèi)的文件系統(tǒng)對(duì)象是不可查看的,但是只要有人知道磁盤(pán)上對(duì)象的完整路徑,就仍然可以訪問(wèn)目錄內(nèi)的對(duì)象。
目錄和 sgid
如果啟用了目錄的“sgid”標(biāo)志,在目錄內(nèi)創(chuàng)建的任何文件系統(tǒng)對(duì)象將繼承目錄的組。當(dāng)您需要?jiǎng)?chuàng)建一個(gè)屬于同一組的一組人使用的目錄樹(shù)時(shí),這種特殊的功能很管用。只需要這樣做:
# mkdir /home/groupspace
# chgrp mygroup /home/groupspace
# chmod g+s /home/groupspace
現(xiàn)在,mygroup 組中的所有用戶都可以在 /home/groupspace 內(nèi)創(chuàng)建文件或目錄,同樣,他們也將自動(dòng)地分配到 mygroup 的組所有權(quán)。根據(jù)用戶的 umask 設(shè)置,新文件系統(tǒng)對(duì)象對(duì)于 mygroup 組的其他成員來(lái)說(shuō),可以或不可以是可讀、可寫(xiě)或可執(zhí)行的。
目錄和刪除
缺省情況下,Linux 目錄以一種不是在所有情況下都很理想的方式表現(xiàn)。一般來(lái)說(shuō),只要對(duì)一個(gè)目錄有寫(xiě)訪問(wèn)權(quán),任何人都可以重命名或刪除該目錄中的文件。對(duì)于個(gè)別用戶使用的目錄,這種行為是很合理的。
但是,對(duì)于很多用戶使用的目錄來(lái)說(shuō),尤其是 /tmp/var/tmp,這種行為可能會(huì)產(chǎn)生麻煩。因?yàn)?i>任何人都可以寫(xiě)這些目錄,任何人都可以刪除或重命名任何其他人的文件 ― 即使是不屬于他們的!顯然,當(dāng)任何其他用戶在任何時(shí)候都可以輸入“rm -rf /tmp/*”并損壞每個(gè)人的文件時(shí),很難把 /tmp 用于任何有意義的文件。
所幸,Linux 有叫做“粘滯位”(sticky bit)的東西。當(dāng)給 /tmp 設(shè)置了粘滯位(用 chmod +t),唯一能夠刪除或重命名 /tmp 中文件的是該目錄的所有者(通常是 root 用戶)、文件的所有者或 root 用戶。事實(shí)上,所有 Linux 分發(fā)包都缺省地啟用了 /tmp 的粘滯位,而您還可以發(fā)現(xiàn)粘滯位在其它情況下也很管用。
難以理解的第一位

總結(jié)本章,我們最后來(lái)看一看數(shù)字模式的難以理解的第一位數(shù)。您可以看到,這個(gè)第一位數(shù)用來(lái)設(shè)置 sticky、suid 和 sgid 位:
suidsgidsticky模式數(shù)字ononon7ononoff6onoffon5onoffoff4offonon3offonoff2offoffon1offoffoff0
這里有一個(gè)怎樣用 4 位數(shù)字模式來(lái)設(shè)置一個(gè)目錄的權(quán)限的示例,該目錄將由一個(gè)工作組使用:
# chmod 1775 /home/groupfiles
作為家庭作業(yè),請(qǐng)想一想 1755 數(shù)字模式權(quán)限設(shè)置的含義。:)
四。linux賬戶管理
介紹 /etc/passwd
在這一章,我們來(lái)看一看 Linux 帳戶管理機(jī)制。我將以介紹 /etc/passwd 文件開(kāi)始,該文件定義了 Linux 系統(tǒng)上存在的所有用戶。您可以通過(guò)輸入“l(fā)ess /etc/passwd”來(lái)查看您自己的 /etc/passwd 文件。
/etc/passwd 中的每一行定義一個(gè)用戶帳戶。這里有一個(gè)來(lái)自于我的 /etc/passwd 文件的示例行:
drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash
您可以看到,這一行中有相當(dāng)多的信息。實(shí)際上,每個(gè) /etc/passwd 行由多個(gè)字段組成,每個(gè)字段用 : 隔開(kāi)。
第一個(gè)字段定義了用戶名(drobbins),第二個(gè)字段包含一個(gè) x。在舊式的 Linux 系統(tǒng)上,該字段將包含一個(gè)用來(lái)認(rèn)證的加密密碼,但是事實(shí)上現(xiàn)在所有的 Linux 系統(tǒng)將這個(gè)密碼信息存儲(chǔ)在另一個(gè)文件中。
第三個(gè)字段(1000)定義了與該特殊用戶相關(guān)聯(lián)的數(shù)字用戶標(biāo)識(shí),第四個(gè)字段(1000)將用戶與一個(gè)特殊組關(guān)聯(lián)起來(lái);在下面幾屏中,我們將看到定義組 1000 的地方。
第五個(gè)字段包含該帳戶的文本描述 ― 在本例中,是用戶的名稱。第六個(gè)字段定義該用戶的主目錄,第七個(gè)字段指定用戶缺省的 shell ― 當(dāng)用戶登錄時(shí),將自動(dòng)啟動(dòng)的 shell。
/etc/passwd 技巧和竅門
您可能已經(jīng)注意到,/etc/passwd 中定義的用戶帳戶比實(shí)際登錄您系統(tǒng)的用戶帳戶多得多。這是因?yàn)椴煌?Linux 組件使用用戶帳戶來(lái)加強(qiáng)安全性。通常,這些系統(tǒng)帳戶有一個(gè)小于 100 的用戶標(biāo)識(shí)(“uid”),這其中的很多系統(tǒng)帳戶將像 /bin/false 這樣的程序列為缺省的 shell。因?yàn)?/bin/false 程序什么也不做,而是返回一個(gè)錯(cuò)誤碼退出,這有效地阻止這些帳戶被用作登錄帳戶 ― 他們只供內(nèi)部使用。
/etc/shadow
這樣,用戶帳戶本身在 /etc/passwd 中定義。Linux 系統(tǒng)包含一個(gè) /etc/passwd 的同伴文件,叫做 /etc/shadow。該文件不像 /etc/passwd,只有對(duì)于 root 用戶來(lái)說(shuō)是可讀的,并且包含加密的密碼信息。我們來(lái)看一看 /etc/shadow 的一個(gè)樣本行:
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
每一行給一個(gè)特殊帳戶定義密碼信息,同樣的,每個(gè)字段用 : 隔開(kāi)。第一個(gè)字段定義與這個(gè) shadow 條目相關(guān)聯(lián)的特殊用戶帳戶。第二個(gè)字段包含一個(gè)加密的密碼。其余的字段在下表中描述:
字段 3自 1/1/1970 起,密碼被修改的天數(shù)字段 4密碼將被允許修改之前的天數(shù)(0 表示“可在任何時(shí)間修改”)字段 5系統(tǒng)將強(qiáng)制用戶修改為新密碼之前的天數(shù)(1 表示“永遠(yuǎn)都不能修改”)字段 6密碼過(guò)期之前,用戶將被警告過(guò)期的天數(shù)(-1 表示“沒(méi)有警告”)字段 7密碼過(guò)期之后,系統(tǒng)自動(dòng)禁用帳戶的天數(shù)(-1 表示“永遠(yuǎn)不會(huì)禁用”)字段 8該帳戶被禁用的天數(shù)(-1 表示“該帳戶被啟用”)字段 9保留供將來(lái)使用
/etc/group
接下來(lái),我們來(lái)看一看 /etc/group 文件,它定義了 Linux 系統(tǒng)上所有的組。這里有一個(gè)樣本行:
drobbins:x:1000:
/etc/group 字段格式如下。第一個(gè)字段定義組名稱,第二個(gè)字段是不再使用的密碼字段(現(xiàn)在只是保留為 x),第三個(gè)字段定義了這個(gè)特殊組的數(shù)字組標(biāo)識(shí),第四個(gè)字段(上面的示例為空)定義是該組成員的所有用戶。
您將回想起樣本 /etc/passwd 行引用的組標(biāo)識(shí)為 1000。即使 /etc/group
組提示
關(guān)于用戶和組相關(guān)聯(lián)的一點(diǎn)提示 ― 在一些系統(tǒng)上,您將發(fā)現(xiàn)每個(gè)新的登錄帳戶與同名組(通常是標(biāo)識(shí)號(hào)一樣)相關(guān)聯(lián)。在其它系統(tǒng)上,所有登錄帳戶將屬于單個(gè)用戶組。在您管理的系統(tǒng)上,您使用的方法取決于您自己。為每個(gè)用戶創(chuàng)建匹配組的好處是,通過(guò)將可信的朋友放在自己的個(gè)人組中,使用戶能夠更容易地控制對(duì)自己文件的訪問(wèn)權(quán)。
手工地添加用戶和組
現(xiàn)在,我將為您展示怎樣創(chuàng)建您自己的用戶和組帳戶。學(xué)習(xí)怎樣完成這些工作的最好方法是,手工地將用戶新添加到系統(tǒng)中。為了開(kāi)始學(xué)習(xí),首先確保您的 EDITOR 環(huán)境變量設(shè)置為您喜歡的文本編輯器:
# echo $EDITOR
vim
如果不是,您可以通過(guò)輸入這樣的命令來(lái)設(shè)置 EDITOR: # export EDITOR=/usr/bin/emacs
現(xiàn)在,輸入:
# vipw
現(xiàn)在您應(yīng)該發(fā)現(xiàn)自己在所喜歡的文本編輯器中,編輯器內(nèi) /etc/passwd 文件被裝入,顯示在屏幕上。當(dāng)修改系統(tǒng) passwd 和 group 文件時(shí),使用 vipwvigr 命令非常重要。它們采用了額外的預(yù)防措施來(lái)確保您關(guān)鍵的 passwdgroup 文件被恰當(dāng)?shù)劓i定,使它們不會(huì)破壞。
編輯 /etc/passwd
既然您已經(jīng)打開(kāi)了 /etc/passwd 文件,則接著添加下面的代碼行:
testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false
我們剛剛添加了一個(gè) UID 為 3000 的“testuser”用戶。我們將他添加到 GID 為 3000 的組中,該組還未創(chuàng)建。另一種做法是,如果愿意,我們還可以給這個(gè)用戶分配 users 組的 GID。這個(gè)新用戶有一條注釋為:LPI tutorial test user;該用戶的主目錄設(shè)置為 /home/testuser,出于安全的目的,該用戶的 shell 設(shè)置為 /bin/false。如果我們正創(chuàng)建一個(gè)非測(cè)試帳戶,那么我們可以將 shell 設(shè)置為 /bin/bash。OK,接著保存您所做的更改,然后退出。
編輯 /etc/shadow
現(xiàn)在,我們需要在 /etc/shadow 中給這個(gè)特殊用戶添加一個(gè)條目。要這樣做,輸入 vipw -s。您將會(huì)看到您喜歡的編輯器,它現(xiàn)在包含 /etc/shadow 文件,F(xiàn)在,接著復(fù)制一個(gè)現(xiàn)有用戶帳戶行(也就是有一個(gè)密碼,并且長(zhǎng)于標(biāo)準(zhǔn)系統(tǒng)帳戶條目):
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
現(xiàn)在,將所復(fù)制的代碼行中的用戶名改為您的新用戶的名稱,確保所有的字段(特別是密碼的期限設(shè)置)設(shè)置為您喜歡的模式:
testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
保存,然后退出。
設(shè)置密碼
您將回到提示符,F(xiàn)在,是給您的新用戶設(shè)置密碼的時(shí)候了:
# passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser's new password again)編輯 /etc/group
既然 /etc/passwd/etc/shadow 設(shè)置好了,現(xiàn)在該恰當(dāng)配置 /etc/group 了。要這么做,輸入:
# vigr
您的 /etc/group 文件將出現(xiàn)在您面前,準(zhǔn)備好進(jìn)行編輯,F(xiàn)在,如果您選擇給您的特殊的測(cè)試用戶分配 users 缺省組,那么您不需要將任何組添加到 /etc/groups 中。但是,如果您選擇給該用戶創(chuàng)建新的組,接著添加下面的行:
testuser:x:3000:
保存,然后退出。
創(chuàng)建主目錄
我們基本上已經(jīng)完工。輸入下面的命令來(lái)創(chuàng)建 testuser 的主目錄。
# cd /home
# mkdir testuser
# chown testuser.testuser testuser
# chmod o-rwx testuser
我們用戶的主目錄現(xiàn)在已經(jīng)到位,并且?guī)粢褱?zhǔn)備好可用。好的,基本就緒。如果您想使用該帳戶,您將需要使用 vipw 來(lái)將 testuser 的缺省 shell 改為 /bin/bash,使用戶可以登錄。
帳戶管理實(shí)用程序
既然您知道怎樣手工添加新帳戶和組,我將要評(píng)論一下 Linux 下可用的各種省時(shí)的帳戶管理實(shí)用程序。由于版面的限制,我將不深究描述這些命令的眾多細(xì)節(jié)。請(qǐng)記住,通過(guò)查看命令的手冊(cè)頁(yè),您總能夠獲得關(guān)于命令的更多信息。如果您計(jì)劃參加 LPIC 101 考試,我建議您花些時(shí)間來(lái)讓您自己熟悉一下下面每一條命令。
newgrp
缺省情況下,用戶創(chuàng)建的任何文件都被分配到 /etc/passwd 中所指定的用戶的組。如果用戶屬于其他組,他或她可以輸入 newgrp thisgroup 來(lái)將當(dāng)前缺省組的成員資格設(shè)置為組 thisgroup。然后,所創(chuàng)建的任何新文件將繼承該組的成員資格。
chage
chage 命令用來(lái)查看和改變存儲(chǔ)在 /etc/shadow 中的密碼期限設(shè)置。
gpasswd
一個(gè)一般目的的組管理工具
groupadd/groupdel/groupmod
用來(lái)在 /etc/group 中添加/刪除/修改組
更多的命令
useradd/userdel/usermod
用來(lái)在 /etc/passwd 中添加/刪除/修改用戶。這些命令還完成其它各種便利功能。要獲取更多的信息,請(qǐng)參閱手冊(cè)頁(yè)。
pwconv/grpconv
用來(lái)將 passwdgroup 文件轉(zhuǎn)換為“新式”的 shadow 密碼。事實(shí)上,所有 Linux 系統(tǒng)已經(jīng)使用 shadow 密碼,因此您應(yīng)該不會(huì)需要使用這些命令。
pwunconv/grpunconv
用來(lái)將 passwdshadowgroup 文件轉(zhuǎn)換成“舊式”的非 shadow 密碼。您應(yīng)該不會(huì)需要使用這些命令。
五。調(diào)節(jié)用戶環(huán)境
介紹“fortune”
您的 shell 有很多可設(shè)置為適合您的個(gè)人愛(ài)好的有用的選項(xiàng)。但是,到目前為止,除了每次重新輸入以外,我們還沒(méi)有討論到每次您登錄時(shí),自動(dòng)設(shè)置這些設(shè)置的任何方法。在本章中,我們將看一看通過(guò)修改啟動(dòng)文件來(lái)調(diào)節(jié)您的登錄環(huán)境。
首先,當(dāng)您初次登錄時(shí),我們來(lái)添加一條友好的消息。要看示例消息,運(yùn)行 fortune
$ fortune
No amount of careful planning will ever replace dumb luck.bash_profile
現(xiàn)在,我們來(lái)設(shè)置 fortune,使每次您登錄時(shí),它能運(yùn)行。使用您喜歡的文本編輯器來(lái)編輯您的主目錄中名為 .bash_profile 的文件。如果該文件還不存在,則接著創(chuàng)建它。在頂部插入一行:
fortune
試著注銷,然后再回來(lái)。除非您正在運(yùn)行一個(gè)像 xdm、gdmkdm 這樣的顯示管理器,否則當(dāng)您登錄時(shí),您應(yīng)該會(huì)很愉快地看到:
mycroft.flatmonk.org login: chouser
Password:
Freedom from incrustations of grime is contiguous to rectitude.
$
登錄 shell
當(dāng) bash 啟動(dòng),它將遍歷您主目錄中的 .bash_profile 文件,就象在 bash 提示符下輸入命令一樣運(yùn)行每一行。這叫做“source”文件。
根據(jù) bash 啟動(dòng)的方式,bash 的動(dòng)作有些不同。如果它作為“登錄”shell 被啟動(dòng),它將像上面那樣動(dòng)作 ― 首先 source 系統(tǒng)范圍的 /etc/profile,然后是您個(gè)人的 ~/.bash_profile
告訴 bash 作為登錄 shell 運(yùn)行有兩種方式。一種方式是當(dāng)您初次登錄時(shí)使用 ― bash 由一個(gè)名為 -bash 的進(jìn)程啟動(dòng)。您可以在您的進(jìn)程清單中看到這些:
:$ ps u
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
chouser    404  0.0  0.0  2508  156 tty2     S     2001   0:00 -bash
您很可能看到長(zhǎng)得多的清單,但是在您的 shell 名之前,至少有一個(gè)帶有短劃線的 COMMAND,如上面示例中的 -bash。shell 用這個(gè)短劃線來(lái)確定它是否正作為“登錄”shell 運(yùn)行。
理解 --login
告訴 bash 作為“登錄”shell 運(yùn)行的第二種方法是用 --login 命令行選項(xiàng)。終端仿真器(如 xterm)有時(shí)使用這個(gè)選項(xiàng)來(lái)使它們的 bash 會(huì)話表現(xiàn)得像初始登錄會(huì)話。
當(dāng)您登錄以后,將運(yùn)行 shell 的更多副本。除非它們以 --login 啟動(dòng)或進(jìn)程名中有短劃線,否則這些會(huì)話將不是“登錄”shell。但是,如果它們給出提示符,那么它們叫“交互式”shell。如果 bash 作為“交互式”shell 啟動(dòng),而不是作為“登錄”shell 啟動(dòng),它將忽略 /etc/profile~/.bash_profile,而將 source ~/.bashrc
interactiveloginprofilercyesyessourceignoreyesnoignoresourcenoyessourceignorenonoignoreignore
交互性測(cè)試
有時(shí) bash source 您的 ~/.bashrc,即使它不是真正的交互式 shell,比如當(dāng)使用像 rshscp 這樣的命令時(shí)。將這些牢記在心很重要,因?yàn)橄袂懊嫖覀冇?fortune 命令所做的一樣,打印出文本可能真的會(huì)打亂這些非交互式的 bash 會(huì)話。在從啟動(dòng)文件打印出文本之前,使用 PS1 變量來(lái)檢測(cè)當(dāng)前的 shell 是否是交互式 shell 是一個(gè)好辦法:
if [ -n "$PS1" ]; then
        fortune
fi
/etc/profile 和 /etc/skel
作為系統(tǒng)管理員,您掌管著 /etc/profile。因?yàn)楫?dāng)初次登錄時(shí),每個(gè)人都 source 它,所以使它保持工作狀態(tài)很重要。它也是提供給新用戶的強(qiáng)大工具,該工具使新用戶一登錄進(jìn)他們的新帳戶,一切就正確運(yùn)行。
但是,有一些您可能希望新用戶作為缺省值的設(shè)置,而且允許容易地修改它們。這是 /etc/skel 目錄的用途所在。當(dāng)您用 useradd 命令來(lái)創(chuàng)建一個(gè)新用戶帳戶時(shí),它將所有的文件從 /etc/skel 復(fù)制到用戶的新的主目錄中。這意味著您可以將有幫助的 .bash_profile.bashrc 文件放在 /etc/skel 中,使新用戶有一個(gè)好的開(kāi)始。
export
可以給 bash 中的變量作上標(biāo)記,使它們?cè)谌魏?bash 啟動(dòng)的新的 shell 中設(shè)置相同;這被稱為做上標(biāo)記以便導(dǎo)出。在您的 shell 會(huì)話中,您可以列出 bash 所有的當(dāng)前標(biāo)記為要導(dǎo)出的變量:
$ export
declare -x EDITOR="vim"
declare -x HOME="/home/chouser"
declare -x MAIL="/var/spool/mail/chouser"
declare -x PAGER="/usr/bin/less"
declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/chouser/bin"
declare -x PWD="/home/chouser"
declare -x TERM="xterm"
declare -x USER="chouser"
標(biāo)記要導(dǎo)出的變量
如果變量沒(méi)有標(biāo)記為導(dǎo)出,任何它啟動(dòng)的新的 shell 將不會(huì)設(shè)置該變量。但是,您可以通過(guò)將變量傳給內(nèi)置的 export 來(lái)將其標(biāo)記為導(dǎo)出:
$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar
在本示例中,一起設(shè)置了變量 FOOBAR,但是只有 BAR 被標(biāo)記為導(dǎo)出。當(dāng)啟動(dòng)了新的 bash,它丟掉 FOO 的值。如果您退出這個(gè)新的 bash,您可以看到最初的 bash 仍然有 FOOBAR 的值:
$ exit
$ echo $FOO $BAR
foo bar
導(dǎo)出和設(shè)置 -x
由于這種行為,可以在 ~/.bash_profile/etc/profile 中設(shè)置變量和標(biāo)記為導(dǎo)出,然后再也不需要重新設(shè)置。但是,有一些不能導(dǎo)出的選項(xiàng),因此為了設(shè)置得一致,必須將它們放在您的 ~/.bashrc 和 環(huán)境配置文件中。這些選項(xiàng)用內(nèi)置的 set 來(lái)調(diào)整:
$ set -x
-x 選項(xiàng)使 bash 打印出它要運(yùn)行的每個(gè)命令:
$ echo $FOO
+ echo foo
foo
這對(duì)于理解沒(méi)有預(yù)料到的引用行為或類似的莫名其妙的現(xiàn)象非常有用。要關(guān)閉 -x 選項(xiàng),設(shè)置 set +x。請(qǐng)參閱 bash 手冊(cè)頁(yè)來(lái)獲取內(nèi)置的 set 的所有選項(xiàng)的信息。
用“set”設(shè)置變量
內(nèi)置的 set 還可以用來(lái)設(shè)置變量,但這樣使用時(shí),它是可選的。bash 命令 set FOO=foo 表示的意思正好和 FOO=foo 相同。取消設(shè)置變量用內(nèi)置的 unset 來(lái)完成:
$ FOO=bar
$ echo $FOO
bar
$ unset FOO
$ echo $FOO
取消設(shè)置與 FOO= 的比較
這與將變量設(shè)置為什么也不設(shè)不相同,雖然有時(shí)很難區(qū)別。一種區(qū)別的方法是使用不帶參數(shù)的內(nèi)置的 set 來(lái)列出所有當(dāng)前變量:
$ FOO=bar
$ set | grep ^FOO
FOO=bar
$ FOO=
$ set | grep ^FOO
FOO=
$ unset FOO
$ set | grep ^FOO
除了 set 列出所有變量而不僅僅是那些標(biāo)記為要導(dǎo)出的變量外,像這樣不帶參數(shù)使用 set 與使用內(nèi)置的 export 類似。
導(dǎo)出以改變命令行為
通常,可以通過(guò)設(shè)置環(huán)境變量來(lái)改變命令的行為。正和新的 bash 會(huì)話一樣,從您的 bash 提示符啟動(dòng)的其它程序?qū)⒅荒芸匆?jiàn)標(biāo)記為導(dǎo)出的變量。例如,命令 man 檢查變量 PAGER,看一看用什么程序來(lái)每次一頁(yè)地遍歷文本。
$ PAGER=less
$ export PAGER
$ man man
PAGER 設(shè)置為 less,您將每次看到一頁(yè),按空格鍵移到下一頁(yè)。如果您將 PAGER 改為 cat,將立刻顯示所有的文本,沒(méi)有停頓。
$ PAGER=cat
$ man man
使用“env”不幸的是,如果您忘記將 PAGER 設(shè)置回 less,man(像其它命令一樣)將繼續(xù)沒(méi)有停頓地顯示所有的文本。如果您僅一次想將 PAGER 設(shè)為 cat,您可以使用 env 命令:
$ PAGER=less
$ env PAGER=cat man man
$ echo $PAGER
less
這一次,PAGER 值為 cat,被導(dǎo)出到 man,但在 bash 會(huì)話中,PAGER 變量本身仍然未改變。六。參考資料和反饋直到下一次…… 在學(xué)習(xí)本教程的同時(shí),請(qǐng)務(wù)必查閱本教程所涉及內(nèi)容的各種 Linux 文檔參考資料 ― 特別是
http://www.linuxdoc.org
。您將發(fā)現(xiàn) linuxdoc 上匯集的指南、HOWTO、FAQ 和手冊(cè)頁(yè)都是無(wú)價(jià)之寶。同樣,請(qǐng)務(wù)必查閱
Linux Gazette

LinuxFocus
。 “Linux 系統(tǒng)管理員”指南可從
Linuxdoc.org's "Guides" section
得到,這是對(duì)本教程系列很好的補(bǔ)充 ― 請(qǐng)閱讀!您還會(huì)發(fā)現(xiàn) Eric S. Raymond 的
Unix and Internet Fundamentals HOWTO
很有幫助。您可以在
GNU 的 texinfo 文檔頁(yè)
上閱讀 GNU Project 的在線文檔,獲取 GNU 信息系統(tǒng)(也叫做“texinfo”)的信息。在 developerWorks 上的 Bash by example 文章系列中,Daniel 為您講述了怎樣使用 bash 編程構(gòu)造來(lái)寫(xiě)您自己的 bash 腳本。該 bash 系列(特別是第 1 和第 2 部分)將是 LPIC Level 1 考試很好的準(zhǔn)備材料,將幫助加強(qiáng)對(duì)本教程中“調(diào)節(jié)用戶環(huán)境”這一節(jié)中所包含的概念的理解: 我們極力推薦 Mark Chapman 所著的
Technical FAQ by Linux Users
,長(zhǎng)達(dá) 50 頁(yè)的深入研究的文章,列出了 Linux 中經(jīng)常碰到的問(wèn)題,并且給出了詳細(xì)回答。FAQ 本身是 PDF(Adobe Acrobat)格式的。如果您是一位初學(xué)者或中級(jí) Linux 用戶,那么您確實(shí)應(yīng)擁有該 FAQ 以便進(jìn)行查閱。我們還推薦也是 Mark 寫(xiě)的
為 Windows 用戶準(zhǔn)備的簡(jiǎn)明 Linux 詞匯表
。如果您還不太熟悉 vi 編輯器,我們強(qiáng)烈推薦您查閱 Daniel 的
vi 入門 -- 巧表單方法
。該教程有條理而快速地介紹了這種功能強(qiáng)大的文本編輯器。如果您不知道怎樣使用 vi,請(qǐng)留意這份必讀資料。您的反饋意見(jiàn)我們期望收到您對(duì)本教程的反饋。此外,歡迎您通過(guò)
drobbins@gentoo.org
與 Daniel Robbins 直接聯(lián)系。

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/3984/showart_11397.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP