第五章、Linux的文件权限与目录配置

  • 使用者与群组

    • 文件拥有者的概念

      • owner
      • group
      • others
    • Linux用户身份与群组记录的文件

      • /etc/passwd:账号的相关信息
      • /etc/shadow:密码的相关信息
      • /etc/group:群组的相关信息

  • Linux文件权限概念

    • Linux文件属性

      • 上图分解如下:


      • 【1 】代表文件的类型和权限
        • 第一个字符代表这个文件是目录、文件or链接文件
          1. d:目录
          2. -:文件
          3. l:连接档(link file)
          4. b:可供储存的接口设备
          5. c:表示串行端口设备,鼠标、键盘等
          
        • 接下来的字符三个一组,r代表可读(read),w代表可写(write),x代表可执行(execute)
          1. 第一组:文件拥有者可具备的权限
          2. 第二组:加入此群组的账号的权限
          3. 第三组:其他账号的权限
      • 【2】代表有多少档名连结到此节点(i-node)
        • 每个文件都会将他的权限记录到文件系统的i-node中,我们的目录树是使用文件名来记录的,因此每个文件名都会连结到一个i-node,这个数字代表有多少不同的文件名连结到一个i-node号码
      • 【3】代表这个文件or目录的拥有者账号
      • 【4】代表这个文件的所属群组
      • 【5】代表这个文件的容量大小,默认单位bytes
      • 【6】代表这个文件的创建日期or最近的修改日期[使用ls -l --full-time可以显示处完整的时间格式]
      • 【7】这个文件的文件名
    • 改变文件属性与权限

      • chgrp:改变所属群组[要被改变的组名在/etc/group已经存在]
        1. 语法 chgrp group_name [-R] dirname/filename
        
      • chown:改变文件拥有者[用户在/etc/passwd中已经存在]
        1. 语法 chown [-R] 账号名称 文件or目录
        2. 语法 chown [-R] 账号名称:组名 文件or目录,把":"替换成"."也行,但是有的文件名以"."开始,所以还是用":"吧
        
      • cp:复制
        1. 语法 cp 源文件 目标文件[注:cp会复制执行者的属性和权限]
        
      • chmod:改变权限
        • 数字类型改变文件权限
          r:4,w:2,x:1
          1. 语法:chmod [-R] xyz 文件or目录
          2. eg:chmod 777 file_name
          
        • 符号类型改变文件权限
          1. 语法:chmod [ukga][=+-][rwx] 文件or目录
          2. eg:chmod u=rwx,go=rx file_name
          
    • 目录与文件的权限意义

      • 权限对文件的重要性
        • r:可读取文件实际内容
        • w:可编辑、新增or修改文件内容(不包括删除)
        • x:有系统执行权限
      • 权限对目录的重要性
        • r:有读取目录结构列表的权限,也就是可以查询目录下的文件名数据,也就可用ls列出目录内容
        • w:有异动该目录结构列表的权限
          • 建立新的文件or目录
          • 删除已经存在的文件or目录(忽视文件权限)
          • 重命名文件or目录
          • 移动该目录内文件or目录
        • x:可否进入该目录成为工作目录
        • 注:要开放目录给别人浏览,至少也要r及x权限,但w权限要慎重
      • 用户操作功能与权限
        • 假设有两个档名,/dir1/file1,/dir2,现使用一般账号,那么这个账号对于/dir1,/dir1/file1,/dir2的最小权限


          第五章、Linux的文件权限与目录配置_第1张图片
    • Linux文件种类与扩展名

      • 文件种类(regular file):
        • 正规文件
          • 纯文本文档(ASCII)
          • 二进制文件(binary)
          • 数据格式文件(data):某些程序运行时需要读取的特定格式的文件,eg:登入时会将数据记录在/var/log/wtmp文件中,这是个data file,可以被last指令读出,但如果你使用cat会读出乱码
        • 目录(directory):第一个属性为[d]
        • 连接档(link):类似Windows快捷方式,第一个属性为[l]
        • 设备和装置文件(device)
          • 区块(block)设备档:一些存储数据,以提供系统随机存取的接口设备,eg:硬盘,第一个属性为[b]
          • 字符[character]设备文件:一些串行端口的接口设备,eg:键盘、鼠标,第一个属性属性为[c]
        • 资料接口文件(socket):常用于在网络上的数据承接,常在/run或/tmp目录中看见,第一个属性为[s]
        • 数据输送文件(FIFO,pipe):FIFO(first-in-first-out)是一种特殊的文件类型,主要目的是解决多个程序同时存取一个文件所造成的错误问题,第一个属性为[p]
      • Linux文件扩展名:只是为了区分,毕竟Linux执行只看权限
        • *.sh:脚本
        • .tar,Z,.tar.gz,.zip,*.tgz:经过打包的压缩文件
        • .html,.php:网页相关文件
      • Linux文件长度限制
        • 单一文件or目录最大允许文件名为255bytes,所以大概英文255个字符or中文128个字符[不知道谁的文件名会这么长]
      • Linux文件名的限制
        -:没啥,别瞎加特殊字符

  • Linux目录配置

    • Linux目录配置

      *Linux目录配置的依据-FHS
      • FHS(filesystem hierarchy standard),主要目的是希望使用者知道已安装的软件通常放置在哪个目录下
      • FHS将目录定义为四种交互作用的形态,如下图:


        第五章、Linux的文件权限与目录配置_第2张图片
        • 可分享的:可分享给其他系统挂在使用的目录
        • 不可分享的:自己机器上运作的装置文件or与程序相关的socket文件等
        • 不变的:不经常变动的,eg:函数库,文件说明文件,系统管理员的主机服务配置文件等等
        • 可变的:经常改变的数据
      • FHS针对目录架构仅定义出三层目录:
        • /(root,根目录):与开机系统有关
        • /usr(unix software resource):与软件安装/执行有关
        • /var(variable):与系统运行过程有关
      • 根目录/的意义与内容
        • FHS标准建议:根目录所在分区槽越小越好,且程序安装的软件最好不要与根目录放在一个分区槽内,保持根目录越小越好,这样既保证效能也较不易发生问题


          第五章、Linux的文件权限与目录配置_第3张图片
          第五章、Linux的文件权限与目录配置_第4张图片
          第五章、Linux的文件权限与目录配置_第5张图片
        • 上面是FHS针对根目录定义的标准,仅有这些,但下面的目录也非常重要


          第五章、Linux的文件权限与目录配置_第6张图片
      • /usr的意义和内容
        • usr(unix software resource),FHS建议所有的软件开发者将他们的数据合理的分别放置在该目录的此目录,不能自行建立该软件自己的独立目录,所有的系统默认的软件(发行版发布者提供的软件)都会放置在/usr下(类似于windows[c:\windows(部分)+C:\Program files]两个目录的综合体),所以刚安装完这个目录会占用最多的硬盘空间,一般建议目录有底下这些:


          第五章、Linux的文件权限与目录配置_第7张图片
      • /var 的意义与内容
        • 不同于/usr 是安装时会占用较大硬盘容量的目录,/var是在系统运作后渐渐占用硬盘容量的目录。
        • /var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等。常见的次目录有:


          第五章、Linux的文件权限与目录配置_第8张图片
      • 针对FHS各家distributions的异同及CentOS的变化
        • FHS仅仅定义出最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件或目录数据,而其他次级目录可随开发者自行配置,但差异性有限
        • CentOS 7较过去版本的不同之处
          • /bin --> /usr/bin
          • /sbin --> /usr/sbin
          • /lib --> /usr/lib
          • /lib64 --> /usr/lib64
          • /var/lock --> /run/lock
          • /var/run --> /run
    • 目录树

      • 目录树特性
        • 目录树起始点为根目录(/,root)
        • 目录不仅可以使用本地分区的文件系统,也可以使用网络上的文件系统,eg:NFS
        • 各文件路径独一无二
      • 大致目录架构(重要的是绿色的)


    • CentOS的观察

      • 除FHS外,还有一个LSB(Linux standard Base)可依循
      • 通过uname检查Linux核心与操作系统位版本
        - uname -r:查看核心版本
        - uname -m:查看操作系统的位版本
        - lsb_release -a:比较细致,需安装
        

  • 重点回顾

    • Linux 的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限;
    • 每个账号都可以有多个群组的支持;
    • 利用 ls -l 显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型, 接下来三个为一组共三组,为使用者、群组、其他人的权限,权限有 r,w,x 三种;
    • 如果档名之前多一个『. 』,则代表这个文件为『隐藏档』;
    • 若需要 root 的权限时,可以使用 su - 这个指令来切换身份。处理完毕则使用 exit 离开 su 的指令环境。
    • 更改文件的群组支持可用 chgrp,修改文件的拥有者可用 chown,修改文件的权限可用 chmod
    • chmod 修改权限的方法有两种,分别是符号法与数字法,数字法中 r,w,x 分数为 4,2,1;
    • 对文件来讲,权限的效能为:
      1. r:可读取此一文件的实际内容,如读取文本文件的文字内容等;
      2. w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
      3. x:该文件具有可以被系统执行的权限。
    • 对目录来说,权限的效能为:
      1. r (read contents in directory)
      2. w (modify contents of directory)
      3. x (access directory)
    • 要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给;
    • 能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (目录至少需要有 x 的权限)。
    • Linux 档名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个汉字字符;
    • 根据 FHS 的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下
    • FHS 订定出来的四种目录特色为: shareable, unshareable, static, variable 等四类;
    • FHS 所定义的三层主目录为: /, /var, /usr 三层而已;
    • 绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。

你可能感兴趣的:(第五章、Linux的文件权限与目录配置)