• 转载:linux的文件属性和权限学习——分析ls命令结果


    http://blog.csdn.net/sfrysh/article/details/6538391

     最近阅读《鸟哥的linux私房菜》,确实是一本好书,使自己在文件属性和权限方面有了较深的理解,总结如下。

    (注:本篇博文的图片来自于《鸟哥的linux私房菜》一书)

    一、提纲

    本篇博文主要包含以下几个部分:

    1.   用户和用户组的概念;

    2.   文件属性;

    3.   目录与一般文件的区别;

    4.   ls命令的使用详解;

    二、用户和用户组

         linux的系统是“多用户、多任务环境”的,也就是说“linux系统允许多个用户同时使用系统,并且可以同时执行不同的任务”。所以为了确保各个用户的文件安全, linux系统具有非常严格的文件权限管理机制。

    主要体现在两个方面:

    1.   对文件操作的权限:

    三种: 读、写、执行。

    2.   文件的访问方式:

    三种: owner/group/other。

    读、写、执行的操作权限比较容易理解,主要是文件的访问方式。它们的含义如下:

    拥有者 owner
    也就是文件的所有者,通常是建立文件的用户。在linux系统中,每个文件都有一个所有者。每一个用户都会被分配唯一的uid。

    用户组
    一个用户组包含若干用户。值得注意的是:一个用户也可以属于多个用户组,也可以不属于任何用户组。每一个用户组都会被分配唯一的gid。

    其他人
     对于一个文件来说,如果某用户既不是owner,也和owner不在同一个用户组,那么该用户对于文件来说就是其他人。

    另外:在linux系统中,

             ①各个用户账号的信息都保存在/etc/passwd文件中;

             ②密码保存在/etc/shadow文件中;

             ③用户组信息保存在/etc/group文件中。

    三、  文件属性

    在命令行里执行命令"ls -al ",我们会看到一个详细的列表,列表的每一行的形式为:

     

    其中各个部分的含义如下图:

     

    把从左到右依次编号,各个字段的含义如下:

    1.   文件的属性,一共有10个属性,具体含义见下图:

      

      第一个属性,表示这个文件的类型,常见的有:文件、目录或连接文件等。 
    " d ":   表示是一个 目录(directory);

    " - ":   表示一个 文件;

    " l ":    表示一个连接文件(link file);  

    后九个属性中,每三个位一组,"r"表示可读(read)、"w"表示可写(write)、"x"表示可执行(excute)。
    第一组为“拥有者owner的权限”;

    第二组为“同用户组的权限”;

    第三组为“其他人的权限”;

    综合这两点:上面图中的的10个属性含义为:是一个文件,这个文件的“拥有者”可读、可写、可执行, “同用户组的人”也是可读、可写、可执行,但是“其他人”没有任何权限。

    2.   第二列表示链接占用的节点,这个主要是和link node有关,初学linux的可以先不用研究。

    3.   第三列表示文件的“拥有者”,即owner。

    4.   第四列表示拥有者的“用户组”。

    5.   第五列表示这个文件的大小。

    6.   第六列表示文件的最后“修改时间”(即modification time, 简称mtime),对于新创建的文件就是指其创建的时间。     

    补充:linux系统“文件时间”主要包括三个内容:

    修改时间(modification time, 简称mtime):当前文件“内容数据”更改时,这个属性被更新。使用ls命令显示的时间就是“修改时间mtime ”。

    状态时间(status time, 简称ctime):当文件状态(status)改变时,这个属性被更新。例如:更新文件的权限和属性时。

    访问时间(access time, 简称atime):当读取文件内容时,这个属性被更新。

     

    注意:如果只是更改文件的内容,“状态时间ctime ”会改变,但是“修改时间mtime”是不会改变,因为文件的内容数据并没有变化。

    7.   第七列就是文件的文件名。注意:在linux系统中,如果一个文件名以"."开头,那么这个文件就是隐藏文件,这点与windows不同。

    四、  目录与一般文件的区别

    在linux中,目录也属于文件。针对目录文件,r/w/x 的含义与一般文件略有不同。

    r  (read contents in directory):拥有这个权限,就能够读取目录结构,也就是可以使用ls命令将目录内容列出来。
    w   (modify contents of directory):拥有这个权限,可以更改目录结构。常见的操作为:
    --- 建立新的文件和目录;

    --- 删除文件和目录;

    --- 重命名文件和目录;

    --- 移动文件和目录;

    x  (access directory):决定这能否进入目录。如果使用的账户对某个目录没有x权限,那么使用cd命令的时候,就无法进入目录。
    在《鸟哥的linux私房菜》书中,提供了很好的例子,截图如下:

     

     

     五、    ls命令的使用详解

     ls就是list的缩写,用于显示文件和目录。这个命令时用的非常多的一条命令,类似于windows中的dir(现在不少linux版本中也提供了dir命令),其中dir是directory的缩写。

    常用的参数有

    view plaincopy to clipboardprint?
     命令格式:   
          ls [-aAdfFhilnrRSt] 目录名称   
    -a  :全部的档案,连同隐藏文件( 开头为 . 的档案) 一起列出来;   
    -A  :全部的档案,连同隐藏文件,但不包括 . 与 .. 这两个目录;   
    -d  :仅列出目录本身,而不是列出目录内的文件数据;   
    -f  :直接列出结果,而不进行排序 (ls 预设会以文件名排序!);   
    -F  :根据档案、目录等信息,给予附加数据结构,例如:   
          *:代表可执行文件; /:代表目录;    
    -l  :长数据串行出,包含档案的属性与权限等等数据;   
    -n  :列出 UID 与 GID 而非使用者与群组的名称;   
    -R  :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;   
    -S  :按照文件容量大小排序,而不是用文件名称排序;   
    -t  :按照时间排序,而不是用文件名。  
     命令格式:
          ls [-aAdfFhilnrRSt] 目录名称
    -a  :全部的档案,连同隐藏文件( 开头为 . 的档案) 一起列出来;
    -A  :全部的档案,连同隐藏文件,但不包括 . 与 .. 这两个目录;
    -d  :仅列出目录本身,而不是列出目录内的文件数据;
    -f  :直接列出结果,而不进行排序 (ls 预设会以文件名排序!);
    -F  :根据档案、目录等信息,给予附加数据结构,例如:
          *:代表可执行文件; /:代表目录; 
    -l  :长数据串行出,包含档案的属性与权限等等数据;
    -n  :列出 UID 与 GID 而非使用者与群组的名称;
    -R  :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
    -S  :按照文件容量大小排序,而不是用文件名称排序;
    -t  :按照时间排序,而不是用文件名。


     鸟哥对于ls命令使用的例子为:

     

     

     

     

    另外:在很多linux版本中,由于"ls -l"非常常用,所以常常可以简写为"ll"(两个字幕L的小写形式)。

  • 相关阅读:
    《当程序员的那些狗日日子》(六)继续熬夜学习的日子
    《当程序员的那些狗日日子》(四)喘过气来了
    《当程序员的那些狗日日子》(二)走上不归路
    《当程序员的那些狗日日子》(八)床上等你
    《当程序员的那些狗日日子》(一)毕业后的徘徊
    wince定时拍照功能(转)
    Excel公式找出某一列中是否有某值
    2010年到10月的流水帐
    不错的windows phone的博客
    将同一个表中的一个域更新到另外一个域的SQL文
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/2336160.html
Copyright © 2020-2023  润新知