用户与用户组

  • Linux中, 任何一个文件都具有”User, Group及Others”3种身份的个别权限
  • 默认情况下, 所有的系统上的账号与一般身份用户, 以及root相关信息都记录在/etc/passwd文件内, 个人密码记录在/etc/shadow文件内, 所有的组名都记录在/etc/group内

Linux文件权限概念

Linux文件属性

  1. root@DESKTOP-LMORNNS:/# ls -al
  2. total 700
  3. drwxr-xr-x 21 root root 4096 Jul 8 20:06 .
  4. drwxr-xr-x 21 root root 4096 Jul 8 20:06 ..
  5. drwxr-xr-x 4 root root 4096 May 6 09:34 .vim
  6. lrwxrwxrwx 1 root root 7 Mar 25 05:40 bin -> usr/bin
  7. drwxr-xr-x 2 root root 4096 Mar 25 05:47 boot
  8. drwxr-xr-x 8 root root 2740 Jul 8 20:06 dev

image.png

  • 第一列代表这个文件的类型和权限
    • 第一个字符代表这个文件是”目录, 文件或是链接文件等”
      • [d]表示目录
      • [-]表示文件
      • [l]表示连接文件
      • [b]表示设备文件里面的可供存储的接口设备
      • [c]表示设备文件里面的串行端口设备, 例如键盘, 鼠标
    • 接下来的字符, 以3个为一组, 均为rwx3个参数的组合, 代表可读可写可执行
      • 第一组为文件所有者的权限
      • 第二组为同用户组的权限
      • 第三组为其他非本用户组的权限
  • 第二列表示有多少文件名连接到此节点(i-node)
    • 每个文件都会将它的权限与属性记录到文件系统的i-node中, 而目录树却是使用文件名来记录, 因此每个文件名就会连接到一个i-node, 这个属性记录的就是有多少不同的文件名连接到相同的一个i-node号码
  • 第三列表示文件或目录的所有者账号
  • 第四列表示这个文件的所属用户组
  • 第五列为文件的容量大小, 默认为B
  • 第六列为文件的创建日期或最近的修改日期, 格式为(月/日) 及时间, 若距离太久, 则仅显示年份
    • image.png
  • 第七列为该文件名, 以”·”开头为隐藏文件

如何改变文件属性与权限

  • chgrp: 改变文件所属用户组
    • 改变的组名须在/etc/group中存在, 否则会显示错误 ```shell chgrp [-R] 用户组 文件 -R 递归一个目录下所有的文件

示例 chgrp -R xinzhang 1.txt

  1. - chown: 改变文件所有者
  2. ```shell
  3. chown [-R] 用户:用户组 文件
  4. -R 递归
  5. 示例: chown xinzhang:xinzhang 1.txt
  • chmod: 改变文件的权限
    • 数字类型改变文件权限, r:4, w:2, x:1 ```shell chmod [-R] xyz 文件或目录 示例
  • 编辑完一个shell后, 权限通常为”-rw-rw-r”, 要将文件修改成可执行文件并且不让他人修改的话, 需要”-rwxr-xr-x”, 需要执行chmod 755 test.sh
  • 有些文件不希望被别人看到, 需要设置权限为”-rwxr——-“, 需执行chmod 740 finename ```

    • 符号类型改变文件权限, 使用u,g,o来代表user, group other3种身份的权限, 使用a代表全部的身份, 注意使用+,- 来设置权限时, 没有被执行的选项, 权限不会变
    • image.png ```shell 示例:
  • 设置一个文件权限为”-rwxr-xr-x”, 执行chmod u=rwx,go=rx filename
  • 设置”-rwxr-xr”, 可使用 chmod u=rwx,g=rx,o=r filename
  • 给文件增加写入, 设置 chmod a+w filename ```

目录与文件的权限意义

  • 权限对文件的重要性
    • r代表可读取文件内容
    • w代表可编辑, 新增或修改文件内容, 但不含删除该文件
    • x代表该文件具有可被系统执行的权限
  • 权限对目录的重要性
    • r代表具有读取目录结构列表的权限
    • w非常强大, 代表具有更改该目录结构列表的权限
      • 新建新文件或目录
      • 删除已存在的文件或目录
      • 将已存在的文件或目录重命名
      • 转移该目录内的文件, 目录位置
    • x代表用户能否进入该目录

Linux文件种类与拓展名

  • 文件种类
    • 普通文件, 第一个字符为[-], 按文件内容, 可大略分为
      • 纯文本文件(ASCII), cat读取
      • 二进制文件(binary)
      • 数据格式文件(data), last读取
    • 目录, 第一个属性为[d]
    • 连接文件, 第一个字符为[l], 类似win的快捷方式
    • 设备与设备文件(device), 与系统外设以及存储等相关的一些文件, 通常集中在/dev目录, 通常分为两种:
      • 快设备文件(block), 就是一些存储数据, 以提供系统随机访问的设备接口, 如硬盘, 软盘等, 第一个属性为[b]
      • 字符设备文件(character), 一些串行端口的接口设备, 如键盘, 鼠标等, 第一个属性为[c]
    • 套接字(sockets), 数据接口文件, 通用用在网络上的数据连接, 我们可以启动一个程序来监听客户端的请求, 而客户端就可以通过这个socket来进行数据的通信了, 第一个属性为[s], 通常在/var/run目录中可以看到这种文件类型
    • 管道(FIFO,pipe), 其目的在于解决多个程序同时访问一个文件所造成的错误问题, 第一个属性为[p]
  • Linux文件常用拓展名
    • .sh表示脚本或批处理文件(scripts)
    • Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件
    • .html, .php网页相关文件
  • Linux文件长度限制
    • 使用默认的Ext2/Ext3文件系统时, 针对文件名的长度限制为:
      • 单一文件或目录最大为255个字符
      • 包含完整路径名称以及目录(/)的完整文件名为4096个字符

Linux目录配置

FHS

Filesystem Hierarchy Standard, 规范了每个目录下应放置什么样的数据
FHS依据文件系统使用的频繁与否与是否允许用户随意改动, 而将目录定义成为四种交互作用的形态

  • 可分享的: 可以分享给其他系统挂载使用的目录, 包括执行文件与用户的邮件等数据
  • 不可分享的: 自己机器上面运行的设备文件或者是与程序有关的socket文件等
  • 不变的: 例如函数库, 文件说明文件, 系统管理员所管理的主机服务配置文件等
  • 可变动的: 经常改变的数据

image.png

事实上, FHS仅定义出三层目录:

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

FHS定义出根目录有下面这些子目录存在才好
image.png

  • 补充:
    • /usr: /usr里面放置的数据属于可分享的与不可变动的, UNIX Software Resource, 也就是UNIX操作系统软件资源所放置的目录, 而不是用户的数据, 系统默认的软件都会放置到/usr下面, 类似win的C:\Windows\和C:\Program files\这两个目录的综合体
    • /var: 针对常态性变动的文件, 包括缓存, 登录文件以及某些软件运行所产生的文件, 包括程序文件, 例如MySQL数据库的文件等

目录树

image.png

绝对路径与相对路径

  • 绝对路径: 由根目录开始写起的文件名或目录名称, 如/home/dmt
  • 相对路径: 相对于目前路径的文件名写法, 如./home/dmt
  • . :代表当前目录, 也可以用./来表示
  • ..: 表示上一级目录, 也可以用../来表示

image.png

查看Linux标准(Linux Standard Base)

  1. uname -r
  2. lsb_release -a

image.png

总结

image.png