Linux文件与目录管理

目录管理

  1. Linux系统中目录组成结构

    • Linux系统的目录结构类似于倒置的树型结构,它以一个名为根(“/”)的目录开始向下延伸。
      index
    • 它不同于其它操作系统,如在windows系统中,它有多少个分区就有多少个根,且根之间是并列的。而在Linux中无论有多少个分区都只有一个根。
    • Linux系统中对应的字符为”d”
    • 在Linux的每个目录中都存在下面两个特殊目录。
      • “.”   代表当前目录
      • “..”  代表上级目录
  2. 目录访问权限

    • 目录是一种特殊的文件
    • 目录上的读、写、执行与普通文件有所不同
      • 读:用户可以读取目录内的文件
      • 写:单独使用没有作用。它与读、执行权限连用可以在目录内添加与删除任何文件
      • 执行:用户可以进入目录,调用目录内的资料
  3. Linux常见的系统目录

    • /bin:       存储常用用户指令
    • /boot:     存储核心、模块映像等启动用文件
    • /dev:       存储设备文件
    • /etc:        存储系统、服务配置目录与文件
    • /home:  存放个人主目录
    • /lib:        存放库文件,储如核心模块、驱动
    • /lost+found: 存储fsck用的孤儿文件
    • /mnt:      系统加载外部文件系统常用挂载点
    • /opt:        第三方工具使用的安装目录
    • /proc:      虚拟文件系统,包含系统核心信息
    • /root:       root用户宿主目录
    • /sbin:      存储管理指令
    • /tmp:       临时文件暂存点
    • /usr:         存放与用户直接相关的文件与目录
    • /var:         存储在系统运行中可能会更改的数据
  4. 强制位与冒险位

    • 在Linux系统中文件除了有读、写、执行权限外,文件系统还支持强制位(setuid、setgid)与冒险位(sticky)的特别权限。
    • 针对文件创建者可以添加强制位(setuid),文件属组也可以添加强制位(setgid),针对其它用户可以添加冒险位(sticky)。
    • 强制位与冒险位添加也执行权限(x)的位置上。如果该位置上已有执行权限,由强制位与冒险位位小写字母(s或t)的方式表示,否则,以大写字母(S或T)表示。
      • 例:文件权限为”rwxr–r-x”,如果设置了强制位与冒险位,则新的权限为”rwsr-Sr-t”。
    • 对所有者设置强制位setuid,一般是针对一个系统指令。
      • 在默认情况下,用户执行一个指令,会以该用户身份来运行。
      • 当对一个指令的可执行文件设置了(setuid),那么任何一个用户在执行这个文件的时候,都会以指令对应的可以执行文件的所有者身份来执行这个文件
      • 命令:chmod u±s <文件名>
    • 对组设置强位setgid,一般是针对一个目录。
      • 在默认情况下,用户在目录中创建的文件或子目录的属组是属于该用户的主属组。
      • 如果对一个目录设置了强制位,则任何用户在此目录中创建的文件或子目录都会继承此目录的属组(前提:有权限在此目录中创建文件或目录)。
      • 命令:chmod g±s <目录名>
    • 对其它用户设置冒险位,一般是针对一个目录。
      • 在默认情况下,如果一个目录对用户有r、w、x权限,则此用户可以在此目录中建立与删除任何文件
      • 一旦在此目录上设置了冒险位,则表示在此目录中,只有文件的所有者、目录所有者与系统管理员才可以在目录中删除此文件
      • 命令:chmod ± t <目录名>
    • 强制位与冒险位也可以通过一个数字的加和,放在读、写、执行的三位数字之前来指定。
      • 4 (setuid)
      • 2 (setgid)
      • 1 (sticky)
      • 例:要为某文件设置为”rwsr-xr-x”,则可以使用指令:chmod 4755 <文件名>
    • 小实验:root建立了”/share/”目录,设置权限,使其它用户能够在其中建立自己的文件,用户lucy、jack可以更改所有人的文件,用户都不能删除他人的文件。
      设置权限
      power1
      测试
      power2
  5. umask掩码

    • 每个用户建立文件时,此文件都会有默认权限
    • 默认权限的值由环境中的umask值与文件与目录的基数来确定
    • 用户可以自主改动umask值,并在改动后马上生效
    • 一般用户的默认umask值为002,系统用户的默认umask值为022。
    • 文件的基数:666,目录的基数:777
    • 计算:基数与umask进行于操作,相同权限位,umask无值,权限留下;umask有值,权限去除,类似于OSPF中反向掩码匹配网段
      umask
  6. Inode(Index Node 索引节点)
    • Inodes table包含了ext2、ext3和ext4文件系统的所有属性;一个文件由两部分组成:节点和数据区。
    • 节点表主要存放文件类型、权限、UID、GID、Link count、大小和时间戳,数据存放在磁盘的什么位置。
    • 数据区里面存放真正的数据。
    • 一个Inodes的大小大概为128B,一个文件至少占有1个Inodes,通过tune2fs -l /dev/sdax 可以查看这个分区的Inode size,Inode count,block count。
    • 计算机识别一个用户通过UID,识别一个进程通过进程号,识别一个文件通过Inode number,文件名是给人来识别的。
      • 通过ls -li命令可以查看节点号
      • 节点号在创建时就已分配好了的
      • 复制:同一个分区,节点号改变;不同分区,节点号改变。
      • 移动:同一个分区,节点号不变;不同分区,节点号改变。
      • 删除:只是删除了文件的节点表,数据没有被真正删除,只有当这个分区在写入数据时,才会覆盖原来的数据。

发表评论

error: Content is protected !!