鸟哥的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脚本对系统进行管理时,务必使用绝对路径的写法保证正确性