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