zoukankan      html  css  js  c++  java
  • 鸟哥的linux私房菜学习-(六)Linux 文件权限介绍

    1. 使用者和群组

    在Linux里面,任何一个文件都具有『User, Group及Others』三种身份的个别权限, 我们可以以底下的图示来解释:

    每个文件的拥有者、群组与 others 的示意图


    我们以王三毛为例,王三毛这个『文件』的拥有者为王三毛,他属于王大毛这个群组, 而张小猪相对于王三毛,则只是一个『其他人(others)』而已。

    不过,这里有个特殊的人物要来介绍的,那就是『万能的天神』!这个天神具有无限的神力, 所以他可以到达任何他想要去的地方,呵呵!

    那个人在Linux系统中的身份代号是『 root 』啦!所以要小心喔!那个root可是『万能的天神』喔!

     

    2.Linux 文件权限概念

    2.1Linux文件属性

    在你以root的身份登入Linux之后,下达『 ls -al 』看看,会看到底下的几个咚咚:

    [root@www ~]# ls -al
    total 156
    drwxr-x---   4    root   root     4096   Sep  8 14:06 .
    drwxr-xr-x  23    root   root     4096   Sep  8 14:21 ..
    -rw-------   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg
    -rw-------   1    root   root      199   Sep  8 17:14 .bash_history
    -rw-r--r--   1    root   root       24   Jan  6  2007 .bash_logout
    -rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile
    -rw-r--r--   1    root   root      176   Jan  6  2007 .bashrc
    -rw-r--r--   1    root   root      100   Jan  6  2007 .cshrc
    drwx------   3    root   root     4096   Sep  5 10:37 .gconf      <=范例说明处
    drwx------   2    root   root     4096   Sep  5 14:09 .gconfd
    [    1   ][  2 ][   3  ][  4 ][    5   ][     6     ][       7          ]
    [  权限  ][连结][拥有者][群组][文件容量][  修改日期 ][      檔名        ]

    先解释一下上面七个字段个别的意思:

    .        1.1、文件属性的示意图

    • (1)第一栏代表这个文件的类型与权限(permission):

    这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符:

    文件的类型与权限之内容
    • 第一个字符代表这个文件是『目录、文件或链接文件等等』:

      • 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
      • 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
      • 若是[ l ]则表示为连结档(link file);
      • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
      • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    • 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

      • 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
      • 第二组为『同群组的权限』;
      • 第三组为『其他非本群组的权限』。
    例题:
    若有一个文件的类型与权限数据为『-rwxr-xr--』,请说明其意义为何?
    答:
    先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:
    [-][rwx][r-x][r--]
     1  234  567  890
     1 为:代表这个文件名为目录或文件,本例中为文件(-);
    234为:拥有者的权限,本例中为可读、可写、可执行(rwx);
    567为:同群组用户权力,本例中为可读可执行(rx);
    890为:其他用户权力,本例中为可读(r)
    
    同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。

    另外,目录与文件的权限意义并不相同,这是因为目录与文件所记录的数据内容不相同所致。 由于目录与文件的权限意义非常的重要,所以鸟哥将他独立到2.3节目录与文件之权限意义中再来谈。

    • (2)第二栏表示有多少档名连结到此节点(i-node):

    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。 关于i-node的相关数据我们会在第八章谈到文件系统时再加强介绍的。

    • (3)第三栏表示这个文件(或目录)的『拥有者账号』
    • (4)第四栏表示这个文件的所属群组

    在Linux系统下,你的账号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限如图2.1.2所示(-rwxrwx---), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。

    • (5)第五栏为这个文件的容量大小,默认单位为bytes;
    • (6)第六栏为这个文件的建档日期或者是最近的修改日期:

    这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。 如下所示:

    [root@www ~]# ls -l /etc/termcap /root/install.log
    -rw-r--r-- 1 root root 807103 Jan  7  2007 /etc/termcap
    -rw-r--r-- 1 root root  42304 Sep  4 18:26 /root/install.log
    # 如上所示,/etc/termcap 为 2007 年所修改过的文件,离现在太远之故;
    # 至于 install.log 是今年 (2009) 所建立的,所以就显示完整的时间了。

    如果想要显示完整的时间格式,可以利用ls的选项,亦即:『ls -l --full-time』就能够显示出完整的时间格式了!包括年、月、日、时间喔。 另外,如果你当初是以繁体中文安装你的Linux系统,那么日期字段将会以中文来显示。 可惜的是,中文并没有办法在纯文本的终端机模式中正确的显示,所以此栏会变成乱码。 那你就得要使用『LANG=en_US』来修改语系喔!

    如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件『/etc/sysconfig/i18n』,利用第五章谈到的nano来修改该文件的内容,使LANG这个变量成为上述的内容即可。

    • (7)第七栏为这个文件的档名

    这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,例如上表中的.gconf那一行,该文件就是隐藏档。 你可以使用『ls』及『ls -a』这两个指令去感受一下什么是隐藏档啰!

     

    这七个字段的意义是很重要的!务必清楚的知道各个字段代表的意义!尤其是第一个字段的九个权限, 那是整个Linux文件权限的重点之一。底下我们来做几个简单的练习,你就会比较清楚啰!

    例题:
    假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?
    -rw-r--r--  1 root     root          238 Jun 18 17:22 test.txt 
    -rwxr-xr--  1 test1    testgroup    5238 Jun 19 10:25 ping_tsai
    答:
    文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个账号可以存取此文件,其他人则仅能读此文件;
    
    另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。其中:
    test1 可以针对此文件具有可读可写可执行的权力;
    而同群组的test2, test3两个人与test1同样是testgroup的群组账号,则仅可读可执行但不能写(亦即不能修改);
    至于非testgoup这一个群组的人则仅可以读,不能写也不能执行!
    例题:
    如果我的目录为底下的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?
        drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/
    答:
    文件拥有者test1[rwx]可以在本目录中进行任何工作;
    而testgroup这个群组[r-x]的账号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
    至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!

     

  • 相关阅读:
    ACMICPC 2009 China Northeast Area Contest :(
    2576 数论
    sql source control and sql prompt
    C语言中的单精度双精度数的有效位数
    [软件调试学习笔记]防止栈缓冲区溢出的基于Cookie的安全检查机制
    A tiny introduction to asynchronous IO
    Mysql扩展之replication概述
    C语言中的单精度双精度数的有效位数
    MySQL Cluster(MySQL 集群) 初试
    MySQL Cluster(MySQL 集群) 初试
  • 原文地址:https://www.cnblogs.com/wenlin66/p/8269495.html
Copyright © 2011-2022 走看看