鸟哥的linux私房菜——第6章 Linux的文件权限与目录配置

1. Linux用户身份与用户组记录的文件(账号、密码、用户组信息)

  • /etc/passwd:账户相关信息
  • /etc/shadow:个人密码
  • /etc/group:组名信息

2. 显示Linux文件属性:ls -al

(1)第一列代表文件的类型与权限(10个字符)

  • 第一个字符代表文件类型:d代表目录、—代表文件、l表示连接文件、b表示设备文件里可供存储的接口设备、c表示设备文件里的串行端口设备(如键盘、鼠标等一次性读取设备)
  • 后九个字符,每3个为一组,均为 r(可读)、w(可写)、x(可执行)三个字符参数的组合,这三个参数的位置固定,没有相应权限则标为“—”
  • 三组权限的对应对象分别为“文件所有者”、“同用户组”和“其他非本用户组”

注:由于文件和目录所记录的数据内容不同,二者的权限意义不同

(2)第二列表示有多少文件名连接到此节点(i-node):每个文件都会将它的权限与属性记录到文件系统的一个i-node中,每个文件名会连接到一个i-node;该属性记录有多少不同的文件名连接到同一个i-node号码

(3)第三列表示所有者账号

(4)第四列表示所属用户组

(5)第五列为文件大小

(6)第六列为创建日期或修改日期:ls -l --full-time  //显示完整的时间格式

(7)第七列为文件名:以'.'开头的为隐藏文件

3. 改变文件属性与权限

(1)chgrp:改变所属用户组(组名必须在/etc/group中存在

用法:chgrp [-R] 目录名/文件名  // -R 表示进行递归的持续更改,即同时改变子目录下的所有文件和目录

(2)chown:改变文件所有者(用户名必须在/etc/passwd中有记录

用法:chown [-R] 账号名称[:组名] 文件/目录  //可以同时修改组名

示例:当使用cp命令复制时,会复制执行者的属性与权限,此时需要修改所有者和用户组,使得目标用户可以修改

(3)chmod:改变文件权限

  • 使用数字修改权限:r—4、w—2、x—1

   示例:chmod 777 .bashrc  // 7 = 4 + 2 + 1 = rwx

  • 符号类型改变权限:u—user、g—group、o—others、a—all

   示例:chmod u=rwx,go=rx .bashrc  //中间权限设置是连在一起的,无空格

4. 目录与文件的权限意义

文件是存放实际数据的所在,目录的主要内容是记录文件列表名

(1)文件的权限

  • r:可以读取文件
  • w:可以编辑、新增或者修改文件内容(不包括删除
  • x:该文件具有可以被系统执行的权限

(2)目录的权限

  • r:可以读取目录结构列表,即可以利用ls命令查看目录下的文件名数据
  • w:可以更改目录结构列表,包括新建文件与目录、删除文件与目录(无论文件权限如何)、重命名文件与目录、移动文件与目录等与“文件名变动”有关的操作
  • x:代表用户可以进入该目录称为工作目录

注:要开放目录给任何人浏览,至少需要给予r和x权限,否则他人无法进入目录读取文件;

  仅有r的情况下,用户仅能读取文件名列表,但是不能获取详细信息

5. Linux文件种类与扩展名(任何设备都是文件

(1)文件种类(''):纯文本文件、二进制文件、数据格式文件

(2)目录('d'):第一个属性为d

(3)连接文件('l'):类似Windows的快捷方式

(4)设备与设备文件(device):与系统外设及存储相关的文件,一般位于/dev目录

  • 块设备文件:第一个属性为b,提供系统随机访问的接口设备,如硬盘、软盘等,可以随机地在硬盘的不同块进行读写
  • 字符设备文件:第一个属性为c,串行端口的接口设备,如键盘、鼠标等;特征为“一次性读取”,不能够截断输出,如不能让鼠标直接“跳到”另一界面,而是“滑动”到目标位置

(5)套接字(sockets):第一个属性为s,数据接口文件,通常用于网络数据连接,位于/var/run目录

(6)管道(FIFO,pipe):第一个属性为p,解决多个程序同时访问一个文件所造成的错误问题,first-in-first-out(FIFO)

(7)文件扩展名:文件扩展名仅有指示说明的意义,具体是否可执行由x属性决定

  • *.sh:脚本或批处理文件(scripts)
  • *Z、*.tar、*.tar.gz、*.zip、*.tgz:经过打包的压缩文件
  • *.html、*.php:网页相关文件

6. Linux目录配置

 (1)目录配置标准:Filesystem Hierarchy Standard,FHS

目录的四种交互形态

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

(2)FHS针对目录架构对下的三层目录进行了定义:

/(root,根目录):与开机、还原、系统修复等操作有关(最重要);FHS建议标准:根目录所在分区应越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较好,根目录所在的文件系统也较不容易发生问题。

根目录的子目录说明

注:开机过程中仅有根目录会被挂载,其他分区是在开机完成之后才会持续进行挂载的行为。因此,根目录下与开机过程有关的目录就不能够放在与根目录不同的分区(不能与根目录分开

  • /etc:配置文件
  • /bin:重要执行文件
  • /dev:所需要的设备文件
  • /lib:执行文件所需的函数库和内核所需的模块(/lib/modules
  • /sbin:重要的系统执行文件

/usr(UNIX操作系统软件资源,UNIX Software Resource的缩写):可分享,不可变动;系统默认的软件安装目录,类似于Windows的"C:Windows"和"C:Program files"

/var:针对系统运行过程中常态性变动的文件,包括缓存、登录文件以及某些软件运行产生的文件等

(3)目录树

  • 目录树的起始点为根目录 /
  • 每个目录不仅可以使用本地端的文件系统,也可以使用网络上的文件系统。例如,可以利用Network File System(NFS)服务器挂载某特定目录
  • 每个文件在此目录树中的文件名(完整路径)都是独一无二

目录树架构示意图

(4)路径

  • 绝对路径:以根目录 / 开头的文件或目录名称,如/home/zh/.bashrc
  • 相对路径:相对于目前路径的文件名写法,如 ./home/zh 或者 ../home/zh

两个特殊的相对目录:

  •  .. 代表了当前的目录,也可以使用 ./ 来表示;常用 ./command 执行当前目录文件
  • .... 代表了上一层目录,也可以使用 ../ 来表示 ;常用 cd .. 返回上一层目录

 注:绝对路径的正确度比较好,但是书写比较麻烦(如切换路径时);写shell script脚本对系统进行管理时,务必使用绝对路径的写法保证正确性

原文地址:https://www.cnblogs.com/hg-love-dfc/p/10293219.html