操作系统学习——Linux基础学习篇(第6章)

第 0 章 Linux 的文件权限和目录配置

用户与用户组

用户:由于 Linux 被设计为一个多用户、多任务的系统,用户概念在 Linux 中极为重要。

文件所有者:为了应对多人工作环境,分离不同用户的工作环境,设置了文件的归属权(文件所有者的角色)。

用户组:团队开发协作的需要,在用户概念之上设置了用户组的权限管理级别。每组成员相对而言更易互相修改对方的数据,但是其他组的组员则不能看到本组的文件内容。

Linux 文件权限概念

Linux 文件属性

执行命令

1
ls -al

会得到下面的结果

6.1
6.1
  1. 第一列代表文件权限(permission)

    第一个字符

    • [d]表示目录
    • [-]表示文件
    • [l]表示链接文件(linkfile)
    • [b]表示可控存储的接口设备
    • [c]表示串行端口设备

    后面字符三个一组

    • [r]表示可读
    • [w]表示可写
    • [x]表示可执行
    • 第一组为文件所有者权限、第二组为同用户组权限、第三组为其他非本用户组的权限。
  2. 第二列表示有多少文件名连接到此节点(i-node)
  3. 第三列表示这个文件的所有者账号
  4. 第四列表示这个文件所属的用户组
  5. 第五列表示文件大小(默认为 B)
  6. 第六列表示文件创建日期或者最近修改日期
  7. 第七列表示文件名

改变文件属性和权限

三个命令

  1. chgrp 改变文件所属的用户组

    1
    chgrp [-R] 账号名称:组名 文件或目录

    -R 参数表示是否要递归改变子目录下的所有文件

  2. chown 改变文件所有者

    1
    chown [-R] 账号名称:组名 文件或目录

    -R 参数同上

  3. chmod 改变文件的权限

    • 数字修改

      1
      chmod xxx 文件目录

      将三端权限二进制化(比如 777 就表示权限全开)

    • 符号修改

          | 命令 | 组对象 | 操作符 | 权限 | 文件名 |
          | :-----: | :-----: | :-----: | :-----: | :-------: |
          | chmod | u g o a | + - = | r w x | 文件或目录 |
      
          eg
      
          
      1
      chmod u+r,o=rwx  xxx

目录与文件的权限意义

  1. 对文件的意义

    • r(read)表示可以读此文件的具体内容
    • w(write)表示可以编辑、新增或是修改文件的内容(但不含删除)
    • x(execute)表示可以被系统执行的权限
  2. 对目录的意义

    • r 表示可以读取目录结构权限,可以查询到文件名数据,也可以利用ls命令来获取列表内容的显示
    • w 表示可以新建文件/目录,删除已经存在的文件和目录(无视此文件/目录的),重命名,转移文件/目录的位置。(也即,删除一个文件的权限是跟是否具备此文件所在目录的写权限有关,而跟文件本身权限无关)
    • x 表示是否可以进入该目录成为工作目录(working directory)的权限。

Linux 文件种类与扩展名

文件种类

普通文件、纯文本文件(cat 的文件)、二进制文件、数据格式文件

目录(d)

连接文件(l)类似 Windows 下面的快捷方式

设备与设备文件(device):通常在/dev 这个目录,通常分为两种:

  1. 块(block)设备文件

    一些存储数据供系统随机访问的接口设备,例如硬盘等。

  2. 字符(character)设备文件

    一些串行端口接口设备,特征是一次性读取,不能够截断输出。

套接字(socket):网络进程通信,通常在/var/run 中

管道(FIFO,pipe):解决多个程序同时访问一个文件造成的错误问题

文件扩展名

只是以适当的扩展名来表示是什么种类,而实际能否运行依赖数据+execute 执行权限(这一点和 Windows 判断可执行程序有很大的不同)。

*.sh:脚本或批处理文件,主要用 shell 写。

*Z*.tar*.tar.gz*.zip等:压缩文件,由不同压缩软件使用决定。

*.html等:网页相关文件

长度限制:默认使用 Ext2/Ext3 文件系统,单一文件名/目录名限制长度为 255 字符、包含完整路径名称及目录的完整文件名为 4096 个字符。

Linux 目录配置

Linux 目录配置标准:FHS

  • / (root,根目录),与开机系统有关
  • /usr (UNIX software resource):与软件安装/执行有关
  • /var (variable):与系统运作过程有关

其他详情可以自行百度,或者查看目录树(单独再找机会整理一下)

绝对路径与相对路径

区别/var/log(绝对路径)和../var/log(相对路径)

网络文件常常提到类似“。/run.sh”的数据,这个命令的意义是什?

答:由于命令执行需要变量(bash 章节会提及)的支持,若执行文件放置在本目录并且本目录并非正规的执行文件目录(/bin、/usr/bin 等为正规),此时要执行命令就要严格指定该执行文件。“./”代表“本目录”的意思,所以“./run.sh”代表执行本目录名下的 run.sh 文件

END