zoukankan      html  css  js  c++  java
  • Linux的文件权限与目录配置

    使用者与群组

    Linux文件的三种权限

    1. 文件拥有者
    2. 群组
    3. other

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

    Linux文件权限概念

    当你在你的屏幕前面出现了『Permission deny』的时候,不要担心,『肯定是权限设定错误』

    Linux 文件属性

    察看文件指令:ls ,重点在显示文件的文件名与相关属性

    示例

    ls 是『list』的意思,重点在显示文件的文件名与相关属性。而选项『-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;

    • 第六栏为这个文件的建档日期或者是最近的修改日期:使用--full-time 来显示完整时间。如果文件建档时间比较久,只会显示年份

    • 第七栏为这个文件的档名:这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,例如上表中的.config 那一行,该文件就是隐藏档。

    如何改变文件属性与权限

    常用于群组、拥有者、各种身份的权限之修改的指令,如下所示:

    1. chgrp :改变文件所属群组
    2. chown :改变文件拥有者
    3. chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性
    • 改变所属群组, chgrp:改变一个文件的群组真是很简单的,直接以 chgrp 来改变即可。不过,请记得,要被改变的组名必须要在/etc/group 文件内存在才行,否则就会显示错误

    • 改变文件拥有者, chown:要注意的是, 用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有纪录的用户名称才能改变。chown 的用途还满多的,他还可以顺便直接修改群组的名称呢!此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上 -R 的选项即可

    chown 也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数点『 . 』也行! 不过很多朋友设定账号时,喜欢在账号当中加入小数点(例如 vbird.tsai 这样的账号格式),这就会造成系统的误判了! 所以我们比较建议使用冒号『:』来隔开拥有者与群组啦!此外,chown 也能单纯的修改所属群组呢! 例如『chown .sshd initial-setup-ks.cfg』就是修改群组~看到了吗?

    什么时候要使用 chown 或 chgrp 呢?


    • ** 改变权限, chmod**:文件权限的改变使用的是 chmod 这个指令,但是,权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。我们就来谈一谈:

    数字类型改变文件权限: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
      所以等一下我们设定权限的变更时,该文件的权限数字就是 770 啦!变更权限的指令 chmod 的语法是这样的
    

    符号类型改变文件权限

    目录与文件之权限意义

    权限对文件的重要性

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

    权限对目录的重要性

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

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

    • x (access directory):目录的 x 代表的是用户能否进入该目录成为工作目录

    Linux 文件种类与扩展名

    文件种类

    • 正规文件(regular file ):就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ]
    • 目录(directory):就是目录啰~第一个属性为 [ d ]
    • 连结档(link):就是类似 Windows 系统底下的快捷方式啦! 第一个属性为 [ l ]
    • 设备与装置文件(device):与系统周边及储存等相关的一些文件, 通常都集中在/dev 这个目录之下!通常又分为两种
      * 区块(block)设备档 :第一个属性为[ b ]
      * 字符(character)设备文件:第一个属性为 [ c ]
    • 资料接口文件(sockets):第一个属性为 [ s ],最常在/run 或/tmp 这些个目录中看到这种文件类型了。
    • 数据输送文件(FIFO, pipe):FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是 first-in-first-out 的缩写。第一个属性为[p]

    Linux文件扩展名

    基本上,Linux 的文件是没有所谓的『扩展名』的,我们刚刚就谈过,一个 Linux 文件能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。只要你的权限当中具有 x 的话,例如[ -rwxr-xr-x ] 即代表这个文件具有可以被执行的能力喔!

    • *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh 啰;
    • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的扩展名啰!
    • *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件啰! .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览器来 server 端浏览,以得到运算后的网页结果呢!

    Linux 文件名长度限制

    在 Linux 底下,使用传统的 Ext2/Ext3/Ext4 文件系统以及近来被 CentOS 7 当作预设文件系统的 xfs而言,针对文件的档名长度限制为:单一文件或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达 255
    个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128 个中文字之谱

    Linux 文件名的限制

  • 相关阅读:
    Java-注解(@Annotation)
    面试(三)---volatile
    面试(二)---synchronized
    Linux使用技巧(一):vim中选中多行、复制和粘贴
    Git——学习Git
    【Linux】Linux下cp ~中关于“~”的疑问
    【Linux】Linux中cd test和cd /test以及类似命令的区别
    【Linux】Linux系统中/opt 和 /usr目录
    【Linux】Linux的文件权限
    读《大数据时代下半场-数据治理、驱动与变现》--1
  • 原文地址:https://www.cnblogs.com/lxlhelloworld/p/14300245.html
Copyright © 2011-2022 走看看