权限(Permissions )

From Magic Linux wiki

Jump to: navigation, search

目录

[编辑]
权限

[编辑] 返回目录

[编辑] 原文链接 : http://www.linuxcommand.org/lts0070.php

Unix操作系统(像Linux系统一样)不同于其它的计算机环境,它不仅是一个多任务系统,同样是一个多用户系统.

那么它的确切含义是指什么呢?它是指在同一时刻可以允许一人以上的用户操作电脑.即使你的电脑只有一个键盘和一个显示器,它同样可以被多个用户使用.例如,如果你的电脑处于网络中,或者是Internet,远程用户可以通过telnet或ssh(安全模式shell)登录并操作电脑.事实上,远程用户能够执行视窗x应用程序,并在远程电脑上使用图形界面.X WINDOWS系统支持这种方式.

Unix的多用户功能并非最近的创新,而是被应用于操作系统设计中,一种根深蒂固的特性.如果你还记得Unix诞生的环境,那种共同协作的感觉真是太棒了.在个人电脑应用之前,计算机体积庞大,价格昂贵,统一安置.典型的大学计算机系统由坐落在有些校园建筑中的巨大主机和散布在校园中与主机相联的终端客户机构成,这种计算机便支持多个用户同时使用.

为了让这一特性更加实用,必须想出一个方法来将每个用户隔离保护起来.毕竟,你不允许因一个用户的行为导致整个电脑崩溃,或者让一个用户去损坏原本属于其它用户的文件.

本课将涉及以下命令:

  • chmod 修改文件访问权限
  • su 临时切换至超级用户帐号
  • chown 更改文件所有权
  • chqrp 更改文件的组权限

[编辑] 文件权限

Linux同Unix一样采用相同的权限方案。你系统上的目录和文件均对文件所有者、相关使用者所在组成员及其它用户分配了不同的访问权限。权限可被设置为读文件、写文件及执行文件(如将文件作为程序来运行)。

查看文件的权限设置,可以使用以下格式的ls命令:

  • [me@linuxbox me]$ ls -l some_file
  • -rw-rw-r-- 1 me me 1097374 Sep 26 18:48 some_file

从命令的执行结果,我们可以得出以下结论:

    • 文件some_file的所有者是用户“me"
    • 用户"me"有读写该文件的权力
    • 文件被用户组“me"所拥有
    • 用户组"me" 的成员有读写文件的权力
    • 其它用户有读取文件的权利

让我们来尝试一下另一个例子。我们来查看一下位于/bin目录中的bash程序:

  • [me@linuxbox me]$ ls -l /bin/bash
  • -rwxr-xr-x 1 root root 316848 Feb 27 2000 /bin/bash

以上我们看到:

    • 文件"/bin/bash"的所有者是用户“root“
    • 超级用户有权力来读写并执行该文件
    • 文件被”root"用户组拥有
    • "root"用户组成员同样可以读取和执行文件
    • 其它用户可以读取和执行该文件

在下面的图表中,我们可以看到列表的第一部分如何被解释。它由四部构成:介绍文件类型的字符,后续三组字符表示了文件所有者,组及其它用户的读写执行权限。

- rwxrw-r--
_ ___ __ ___
| |    | |____________其它用户的读写执行权限
| |    |______________文件拥有组的读写执行权限
| |_________________ 文件所有者的读写执行权限
|__________________文件类型"-"代表一个常规文件,“d"代表一个目录

[编辑] chmod

chmod命令用于更改文件或目录的权限。通过这一命令,你可以将一个或多个你想更改的文件设置为你所期望的权限。有两种指定文件权限的方法,下面我将其中一种教给你:

我们很容易将权限设置想像成一系统二进制字节来处理(电脑也是通过这一方式来运作)。以下是运行原理:

  • rwx rwx rwx = 111 111 111
  • rw- rw- rw- = 110 110 110
  • rwx --- --- = 111 000 000

以此类推……

  • rwx = 111 对应十进制 7
  • rw- = 110 对应十进制 6
  • r-x = 101 对应十进制 5
  • r-- = 100 对应十进制 4

(注:二进制换算成十进制如110:2^0+1x2^1+1x2^2=7)

现在,如果你将三组权限(所有者,组及其它用户)分别视为一个单一的数字,你将能用一种非常便捷的方法表示每一种可能存在的权限设置。例如,如果你想将some_file文件分配给所有者读写权限,但同时将文件作为隐私同其它用户隔离开来,我们可以用以下命令:

  • [me@linuxbox me]$ chmod 600 some_file

以下是关于全部通用设置的数字列表。以7开头的用于表示程序(因为其能被执行),其余的用于其它类型的文件。

----------------------------------------------------------------------
  数值                 含义
----------------------------------------------------------------------
  777        (rwxrwxrwx) 权限上无限制。任何人能做任何事。通常不是所希望的设置
----------------------------------------------------------------------
  755        (rwxr-xr-x) 文件所有者可以读写并执行文件。其它人可以读取和执行文件.
             这一设置通常被应用于所有用户均可使用的程序上.
----------------------------------------------------------------------
  700       (rwx------) 文件所有者可以读写并执行文件。其它人没有任何权限. 
             对于仅供文件所有者使用同时对其它人则为私人专用的程序,该设置很效.
----------------------------------------------------------------------
  666       (rw-rw-rw-) 所有用户均可读写的文件.
----------------------------------------------------------------------
  644       (rw-r--r--) 文件所有者可以读写文件,同时其它人仅能读取文件.
            通常用于文件所有者有权更改而其它人可读取的数据文件.
----------------------------------------------------------------------
  600       (rw-------) 文件所有者可以读写文件.其它人没有该权限.通常用于
              设置文件所有者想私人专用的数据文件.
----------------------------------------------------------------------

[编辑] 目录权限

chmod命令也能够用于控制目录的访问权限. 在大多数情况下,目录的权限设置方案与文件的权限设置相同. 然而,在执行权限的使用上有差异.它支持对文件列表和其它数据的访问控制. 以下是对目录权限几个有用设置:

--------------------------------------------------------------------
 数值       含义
 777      (rwxrwxrwx) 对权限无限制.任何人均可在目录中显示文件/创建文件
            和删除文件. 通常不是一个好设置.
--------------------------------------------------------------------
755        (rwxr-xr-x) 文件所有者拥有所有权限.其它人可以列举目录内容,
           但不能创建或删除文件. 常用于你愿与他人共享的目录设置.
--------------------------------------------------------------------
700        (rwx------) 文件所有者拥有所有权限.其它人没有任何权限.
            对于所有者想私人专用的目录,此设置很有用.
--------------------------------------------------------------------

[编辑] 瞬间变身为超级用户

当你被警告不宜作为超级用户登录系统(不只我一个人这样提醒)时,能够瞬间变身为超级用户执行系统管理任务是非常的实用的. 幸运的是, 系统中有一程序能够付予你以超级用户特权进行临时操作的权利. 这一程序就是su (为superuser的缩写), 它能被用于当你想以超级用户身份操作少量任务的情况下.变身为超级用户,只需简单的输入su 命令. 你将被要求输入超级用户密码:

  • [me@linuxbox me]$ su
  • Password:
  • [root@linuxbox me]#

执行su 命令后, 你将以超级用户身份在shell中进行对话. 退出超级用户对话, 键入exit命令, 你将回归到以你原有身份进行的对话中.

更改文件所有者

你可以用chown命令来更改文件的所有者.下面是一个例子:假如我将some_file文件的所有者从"me"更改为"you". 可做如下处理:

  • [me@linuxbox me]$ su
  • Password:
  • [root@linuxbox me]# chown you some_file
  • [root@linuxbox me]# exit
  • [me@linuxbox me]$

注意一下,要改变文件的所有者,你必须以超级用户的身份操作. 因此, 我们在例子中调用了su 命令,然后执行chown命令, 最后键入exit命令退回到先前的对话中.

chown 命令对目录的操作采用同文件操作中相同的办法.

[编辑] 更改文件的所有组

文件或目录的所有组可以调用chgrp命令来更改.该命令用法如下:

  • [me@linuxbox me]$ chgrp new_group some_file

在以上例子中,我们将some_file的文件所有组更改为"new_group". 在执行chgrp命令时,你必须是该目录或文件的所有者.

[编辑]
要知后事如何,且看:工作控制(Job Control)


© 2000-2006, William Shotts, Jr. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.

Linux® is a registered trademark of Linus Torvalds.

Personal tools