美文网首页
Linux文件权限

Linux文件权限

作者: ywhu | 来源:发表于2018-04-22 14:58 被阅读0次

    在 Linux 里面,任何一个文件都具有『User, Group 及 Others』三种身份的个别
    权限。

    默认的情况下,所有的系统上的账号与一般身份使用者,还有那个 root 的相关信息, 都是记录在/etc/passwd 这个文件内的。至于个人的密码则是记在/etc/shadow 这个文件下。此外, Linux 所有的组名都纪录在/etc/group 内!这三个文件可以说是 Linux 系统里面账号、密码、群组信息的集中地。

    Linux文件属性

    ls -al
    

    看到如下的文件属性信息

    第一栏代表这个文件的类型与权限(permission)
    • 第一个字符代表这个文件是『目录、 文件或链接文件等等』
      当为[ d ]则是目录,例如上表档名为『.config』的那一行;
      当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
      若是[ l ]则表示为连结档(link file);
      若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
      若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    • 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中, [ r ]代表可读(read)、 [ w ]代表可写(write)、 [ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
      第一组为『文件拥有者可具备的权限』,以『initial-setup-ks.cfg』那个文件为例, 该文件的拥有者可以读写,但不可执行;
      第二组为『加入此群组之账号的权限』;
      第三组为『非本人且没有加入本群组之其他账号的权限』
    第二栏表示有多少档名连结到此节点(i-node)

    每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个 i-node!这个属性记录的,就是有多少不同的档名连结到相同的一个 i-node

    第三栏表示这个文件(或目录)的『拥有者账号』
    第四栏表示这个文件的所属群组
    第五栏为这个文件的容量大小,默认单位为 bytes
    第六栏为这个文件的建档日期或者是最近的修改日期

    如果想要显示完整的时间格式,可以利用 ls 的选项,亦即:

    ls -l --full-time
    

    就能够显示出完整的时间格式了

    第七栏为这个文件的档名

    如果档名之前多一个“.” ,则代表这个文件为隐藏档

    如何改变文件属性与权限

    • chgrp :改变文件所属群组
    • chown :改变文件拥有者
    • chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性

    chgrp

    chgrp [-R] dirname/filename ...
    
    选项与参数:
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
    都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
    

    chown

    chown [-R] 账号名称 文件或目录
    chown [-R] 账号名称:组名 文件或目录
    
    选项与参数:
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
    

    chmod

    数字类型改变文件权限

    Linux 文件的基本权限就有九个,分别是 owner/group/others三种身份各有自己的 read/write/execute权限,这九个权限是三个三个一组的,各权限的分数对照表如下

    r:4
    w:2
    x:1
    

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数
    则是:

    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0
    
    chmod [-R] xyz 文件或目录
    选项与参数:
    xyz : 就是刚刚提到的数字类型的权限属性, 为 rwx 属性数值的相加。
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
    
    符号类型改变文件权限

    u, g, o 来代表三种身份的权限,此外, a 则代表 all,即全部的身份,读写的权限就可以写成 r, w, x

    的身份!那么读写的权限就可以写成 r, w, x 啰!也就是可以使用底下的方式来看:

    chmod  u/g/o/a  +/-/= r/w/x 文件或目录
    
    [root@study ~]# chmod u=rwx,go=rx .bashrc
    # 注意.那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
    [root@study ~]# ls -al .bashrc
    -rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc
    
    [root@study ~]# ls -al .bashrc
    -rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc
    [root@study ~]# chmod a+w .bashrc
    [root@study ~]# ls -al .bashrc
    -rwxrwxrwx. 1 root root 176 Dec 29 2013 .bashrc
    

    文件权限的意义

    权限对文件的重要性

    文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:

    • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
    • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
    • x (eXecute):该文件具有可以被系统执行的权限。

    文件是否能被执行,则是由是否具有『x』这个权限来决定的!跟档名是没有绝对的关系的!

    当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限

    权限对目录的重要性

    • r (read contents in directory):
      表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用ls这个指令将该目录的内容列表显示出来!

    • w (modify contents of directory):
      表示你具有异动该目录结构列表的权限,也就是底下这些权限:
      1、建立新的文件与目录;
      2、删除已经存在的文件与目录(不论该文件的权限为何! )
      3、将已存在的文件或目录进行更名;
      4、搬移该目录内的文件、目录位置。

    • x (access directory):
      目录的 x 代表的是用户能否进入该目录成为工作目录的用途。所谓的工作目录(work directory)就是你目前所在的目录。

    如果你在某目录下不具有 x 的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的 r 或 w 的权限

    相关文章

      网友评论

          本文标题:Linux文件权限

          本文链接:https://www.haomeiwen.com/subject/nfqclftx.html