您總是可以通過注銷當前用戶標識,然後以新的用戶標識登錄來切換到另一個用戶標識。但是如果您只需要以另一個用戶身份運行幾個快捷的命令,那要怎麼辦呢? Linux 以 su(替代用戶,substitute user)命令的形式向您提供了解決方案,該命令允許您暫時以另一個用戶身份運行命令。這經常用於需要 root 訪問權的任務。實際上,如果您使用終端程序(如 telnet)遠程連接一個系統,那麼許多 Linux 發行版本會阻止您以 root 用戶身份登錄。這是良好的安全性做法,我們建議您不要嘗試繞開這種限制。相反,您應該以非特權用戶身份登錄,然後使用 su 命令成為 root。 那麼,讓我們假定您已經登錄並正在使用終端窗口,而且您不是 root 用戶,但需要以 root 用戶身份運行一條命令。用於這種情形的兩種最常見的 su 形式是: su su - 第一種形式(不帶 - 符號)只是將您切換成 root,但沒有更改包括路徑在內的環境變量。第二種形式使用了 - 符號,如果您確實喜歡輸入額外的字母,也可以輸入為 -l 或者 -login。這允許讀取替代用戶的登錄啟動文件,從而設置諸如路徑、環境和提示符之類的東西。清單 4 顯示了這兩種形式在 SuSE Linux 系統上的示例。在兩個示例中,我們都使用了 pwd(打印工作目錄,print working Directory)命令來顯示當前工作目錄。請注意提示符是如何變化的。如果您希望理解關於如何定制您自己的提示符,或想了解是什麼使提示符以現在的形式顯示的更多信息,請查閱 developerWorks 上的“技巧:提示行魔術” 技巧文章。 清單 3. 切換到 root 用戶 ian3@echidna:~> su PassWord: echidna:/home/ian3 #pwd /home/ian3 ian3@echidna:~> su - Password: echidna:~ # pwd /root 您會注意到必須提供口令以切換到 root 用戶,這一點都不足為奇。您還可以使用 su 命令切換到其他非 root 用戶。例如: su - db2inst1 如果您已經是 root 用戶,則無需提供口令,但如果您不是 root 用戶,那麼必須提供正確的口令。 如果您正在使用 bash shell(它是大多數 Linux 系統上的默認 shell),要返回前一個標識,只要按 Ctrl-d 或輸入 exit 並按 Enter。 以另一個用戶身份使用 GUI 應用程序 您可能注意到了,我們在 前一節 中討論 su 命令時,只運行了在終端窗口中顯示輸出的命令。要能夠運行 GUI 應用程序,您可能必須采取一些額外的步驟,具體步驟因 Linux 發行版本而異。 Linux 上的 GUI 應用程序使用 X Window 系統(X Window System),它旨在允許多個用戶使用窗口化的應用程序通過網絡訪問計算機。 X 顯示器是通過 hostname:displaynumber.screennumber 這種形式的名稱知曉的。運行在工作站(如 PC)上的 Linux 通常只有一個帶有單個屏幕的顯示器。在這種情況下,displayname 可以(並且通常會)被省略,所以顯示器稱為 :0.0。我們假設您在閱讀本文時是使用圖形方式登錄的,因此您的啟動已經為您設置了 DISPLAY 環境變量。但是,當您使用 su 切換到不同用戶時,不會設置這個變量。清單 4 展示了如何使用 echo 命令來顯示 DISPLAY 環境變量,然後切換到另一個用戶並嘗試啟動 xclock 應用程序,最初 DISPLAY 環境變量是空的,然後將其值設置為 :0.0。這是 SUSE SLES9 系統中的示例。在 Red Hat 系統上有所不同,後面我們將會提到。
清單 4. 嘗試啟動 xclock ian@lyrebird:~> whoami ian ian@lyrebird:~> echo $DISPLAY :0.0 ian@lyrebird:~> su - Password: lyrebird:~ # echo $DISPLAY lyrebird:~ # xclock Error: Can't open display: lyrebird:~ # eXPort DISPLAY=:0.0 lyrebird:~ # echo $DISPLAY :0.0 lyrebird:~ # xclock Xlib: connection to ":0.0" refused by server Xlib: No protocol specified Error: Can't open display: :0.0 lyrebird:~ # export XAUTHORITY=~ian/.Xauthority lyrebird:~ # xclock lyrebird:~ # ls -l ~ian/.Xauthority -rw------- 1 ian users 206 Feb 18 16:20 /home/ian/.Xauthority 讓我們研究一下這裡發生的情況。在本例中,用戶 ian 登錄到系統,並且正如我們所期望的那樣,其 DISPLAY 環境變量被設置為 :0.0。當 ian 切換成用戶 root 時,不會去設置 DISPLAY 環境變量,並且因為 xclock 應用程序不能打開顯示器,所以啟動 xclock 的嘗試失敗了。 因此,替代用戶 root 設置了 DISPLAY 環境變量,並將它導出,以便它可用於可能從該終端窗口啟動的其他 shell。請注意,設置和導出環境變量時不使用 $ 前綴符號,但顯示和用其他方法使用該值時則使用 $ 作為前綴。也要注意,如果 su 命令省略了 -(減號)符號,那麼 DISPLAY 環境就已經如用戶 ian 那樣被設置。可是,即使設置了環境變量,但 xclock 啟動還是失敗了。 第二次失敗的原因在於 X 的客戶機/服務器本質。盡管 root 運行在該系統惟一一個顯示器上的窗口中,但該顯示器實際上由最初登錄的用戶(在本例中是 ian)所擁有。對於 Linux 系統中的本地顯示器,認證通常是依賴於所謂的 MIT-MAGIC-COOKIE-1,每次 X 服務器重新啟動時它都會重新生成。用戶可以從他的(或她的)目錄中的 .Xauthority 將 magic cookie 導出 (使用 xauth extract 命令),並把它提供給另一個用戶,那個用戶可以使用 xauth merge 將其 融合 到自己的 .Xauthority 文件。作為另一種選擇,用戶可以通過 xhost +local: 命令來授權其他用戶對本地系統的訪問。 有另一個可選方法,即將 XAUTHORITY 環境變量設置為包含正確 MIT-MAGIC-COOKIE-1 的文件的位置。當切換到 root 時,這樣做很容易,因為 root 可以讀取其他用戶所擁有的文件。實際上,在清單 4 中我們就是這樣做的,所以,在設置並將 XAUTHORITY 導出到 ~ian/.Xauthority 文件後,root 現在就可以在桌面上打開圖形窗口。我們說過將會提及 Red Hat 系統的不同之處,那就是在 Red Hat 系統上使用 su 切換到 root 與 SUSE 系統稍有不同,它會為您自動完成顯示器的設置。 那麼,如果是切換到另一個非 root 用戶時會怎樣呢?在清單 4 中,您會注意到,用戶 ian 的 .Xauthority 文件只允許所有者進行讀寫訪問。甚至是同組的成員也不能讀取它,這正是您所希望的,除非您樂意讓某人打開一個接管您的屏幕並禁止您做任務事情的應用程序! 所以,如果您從 .Xauthority 文件中導出了一個 MIT-MAGIC-COOKIE-1,那麼必須要找到某個安全的方式來將它交給您信任的非 root 用戶。由於這方面的困難,您可能會發現,對單用戶的 Linux 系統來說,xhost 更好用,盡管 xauth 方法通常比 xhost 命令用得更多。不過,要謹記 X Windows 系統的網絡傳統,以便您不會偶然地授予他人不在計劃之內的權限,從而開放您的系統,讓任意網絡用戶都可以在您的桌面上打開窗口。 用戶 ian 可以使用 xhost 來賦與所有本地用戶在顯示器(:0.0)上打開應用程序的權限。在您的桌面上打開另一個終端窗口並輸入這條命令: xhost +local: 請注意末尾的冒號(:)。這樣將允許同一系統上的其他用戶連接到 X 服務器並打開窗口。由於您使用的是一個單用戶系統,這就意味著您可以 su 到一個任意的非 root 用戶,而且現在可以啟動 xclock 或其他 X 應用程序了。 有關使用 xauth 和 xhost 命令的更多詳細信息,可以根據需要使用命令 info xauth、man xauth、 info xhost 或者 man xhost 來查看聯機手冊頁。如果您對 X 連接的安全性感興趣,可以從 Xsecure 的手冊頁入手。
掛載 DVD 或者 CD-ROM 在 Linux 和 UNIX? 系統上,所有文件都作為一棵大型樹的一部分來訪問,該樹的根是 /。要訪問 CD-ROM 上的文件,必須將 CD-ROM 設備掛載在文件樹的某個掛載點上。如果您的發行版本安裝了 automount 軟件包,那麼可能會自動為您完成這個步驟。如果是這樣,您只需要插入光盤,它就會被自動識別並完成掛載。無論如何,您的安裝過程都有可能為您做一些工作,使 DVD 或 CD-ROM 設備易於掛裝。 這些步驟中的示例適用於 Red Hat Enterprise Linux 3(RHEL3)系統。您會注意到,根據您的光學設備(CD 或 DVD、IDE、SCSI 或 USB,等等)的類型和位置,會有一些區別。 Red Hat 和 SUSE 實現之間也有一些區別,所以您應該把這些信息作為幫助您找到自己系統的正確設置的向導。具體來說,在 RHEL3 上大部分可移動設置掛載在 /mnt 樹中,而在 SLES 9 上它們則掛載在 /media 樹中。 Linux 系統的很多設置都存儲在 /etc 目錄中。在這些設置中有一個文件,其中包含有一張文件系統描述信息表。cat 是拷貝和改寫文件的命令。如果沒有給定輸出文件,則直接輸出到標准輸出,這個標准輸出通常是您的終端窗口。在終端窗口中使用 cat /etc/fstab 命令,以顯示 etc/fstab 並查看安裝過程認為您的 CD 或者 DVD 應該掛載到哪裡。您會看到類似於清單 5 的幾行。清單 5 中輸出的最後兩行表明,這個系統有兩個 CD 或者 DVD 設備(/dev/cdrom1 和 /dev/cdrom),它們將被掛載在 /mnt/cdrom1 或 /mnt/cdrom,除非 mount 命令指定了其他位置。
清單 5. /etc/fstab 的內容 [root@lyrebird root]# cat /etc/fstab LABEL=RHEL3 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 LABEL=GRUBFILE /grubfile ex