Next Previous Contents

8. 進階

到這個階段﹐遊戲就比較複雜了。學完這些東西﹐您就可以說﹐我懂一些 Linux 的東西 ;-)

8.1 允許權(Permissions) 及 所有權(Ownership)

檔案和目錄都有允許權(Permission) (即 VMS 上的 `protections') 和所有權(ownership), 這個觀念不難理解﹐因為 VMS 上也有。如果您不能執行一隻程式﹐或是您不能修改某一檔案﹐ 或是不能進入某目錄﹐這是因為您沒有被賦予使用這些資源的權力的關係(沒有允許權)﹐ 或者是這個檔案的根本就不屬於您的(沒有所有權)﹐ 讓我們看看下面的例子吧:

$ ls -l /bin/ls
-rwxr-xr-x   1 root     bin         27281 Aug 15  1995 /bin/ls*

第一個欄位顯示出這個檔案的使用權限 ls (擁有者(owner) 是 root, 群組(group) 是 bin). 擁有權可以分成三種模式: 擁有者(owner), 群組(group), 和 其他使用者(others)。 (和 VMS 的 owner, group, world 相似);有三種不同的允許權(permissions): 讀(read), 寫(write) (包含移除(delete)), 和執行(execute).

從左到右﹐- 是檔案模式 (- = 一般檔案(ordinary file), d = 目錄(directory), l = 連結(link), 等); rwx 是允許檔案擁有者可以對該檔案作讀﹐寫﹐和執行的動作; r-x 是允許群組使用者可以對該檔案作讀和執行的動作﹐但是不可以作寫的動作。; r-x 是限制其他的使用者對該檔案只有讀和執行的權限﹐卻沒有寫的權限。

如何改變檔案的使用權限:

$ chmod <whoXperm> <file>

其中 who 是 u (user(使用者), 即檔案的擁有者), g (群組 group), o (其他 other), X 表示可以為 +-, perm 可以為 r (讀 read), w (寫 write), 或是 x (可執行 execute). 舉例說明:

$ chmod u+x file

這是針對該檔案﹐開放可執行的權限給該檔案的擁有者。可縮寫成: chmod +x file.

$ chmod go-wx file

這是對該檔案﹐移除群組使用者和其他使用者對該檔案的“寫”的權限和“執行”的權限。

$ chmod ugo+rwx file

這是開放該檔案的讀﹐寫﹐和執行的權限給所有的使用者。

另一個快速表示法為使用一組數字:rwxr-xr-x 可以用 755 來表示 (每一位數字對應一個控制位元: --- 表是 0, --x 表示 1, -w- 表示 2...).

所以﹐rwx = 4+2+1 = 7﹐r-x = 4+0+1 = 5﹐所以﹐rwxr-xr-x 可以用 755 來表示。

對目錄而言﹐rx 表示您可以切換到該目錄: cd , 而 w 表示您可以刪除該目錄的檔案(當然需要視該檔案的使用權限而定), 或是目錄本身. 這些還只是冰山的一角而已﹐想要知道更多---RMP.

如何改變檔案的擁有權:

$ chown username file

我整理成下表:

VMS                             Linux                   Notes
------------------------------------------------------------------------------

SET PROT=(O:RW) file.txt        $ chmod u+rw file.txt
                                $ chmod 600 file.txt
SET PROT=(O:RWED,W) file        $ chmod u+rwx file
                                $ chmod 700 file
SET PROT=(O:RWED,W:RE) file     $ chmod 755 file
SET PROT=(O:RW,G:RW,W) file     $ chmod 660 file
SET FILE/OWNER_UIC=JOE file     $ chown joe file
SET DIR/OWNER_UIC=JOE [.dir]    $ chown joe dir/

8.2 多工(Multitasking): 程序(Processes) 和 工作(Jobs)

欲執行很多程式﹐在 Linux 上沒有所謂的 `batch queues' ; 多工其實以非常不一樣的手法處理。 以下是一般常見的命令列:

$ command -s1 -s2 ... -sn par1 par2 ... parn < input > output &

其中 -s1, ..., -sn 是該程式的參數(switch), par1, ..., parn 是程式的輸入變數(parameters).

現在讓我們來看看在 Linux 上如何多工。程序(processes)是一隻不論在前景或是背景被執行的程式。

附帶一提﹐Sell 允許您停止或是暫時停止一個程序﹐將程序送到背景工作﹐或是將程序從背景帶到前景。 在這裡﹐程序(processes)我們稱之為工作(`jobs').

8.3 在訪檔案(files)

更多有關檔案的訊息。

8.4 列印佇列

就像 VMS ﹐列印工作會先被放到佇列當中(queues)﹐當您下列印指令的時候﹐您或許會指定列表機的名稱。 例如:

$ lpr file.txt          # 這將指用到預設的列表機
$ lpr -Plaser file.ps   # 這將使用名為 'laser' 的列表機

處理列印佇列(print queues), 您可能需要下列指令:


VMS                                     Linux
------------------------------------------------------------------------------

$ PRINT file.ps                         $ lpr file.ps
$ PRINT/QUEUE=laser file.ps             $ lpr -Plaser file.ps
$ SHOW QUEUE                            $ lpq
$ SHOW QUEUE/QUEUE=laser                $ lpq -Plaser
$ STOP/QUEUE                            $ lprm <item>


Next Previous Contents