指令的运行原理
指令的本质,就是编译好的程序和脚本
我们所有的指令最终都要在操作系统 (OS) 内部运行,但是 OS 使用难度高,所以现在通过命令行解释器作为中间媒介连接用户需求和 OS。
命令行解释器存在的意义:
- 进行命令行解释
- 保护 OS,对于用户的非法请求,直接拦截
命令行提示符示例:
renshen: 用户名VM-4-3-centos: 主机名~: 当前目录$: 命令行提示符 (root 的命令行提示符是#)
Linux 权限
文件访问者的分类
- u (user): 文件和文件目录的所有者
- g (group): 文件和文件目录的所有者所在组的用户
- o (others): 其他用户
文件类型和访问权限

上面是对文件前面那个前缀的说明
如果出现一个普通用户既是 u 又是 g,并且 u 和 g 的权限不一样,系统默认判定他的权限按 u 那个来,不按 g 那个来。
文件类型
- d: 文件夹
- -: 普通文件
- l: 软链接(类似 Windows 的快捷方式)
- b: 块设备文件(例如硬盘、光驱等)
- p: 管道文件
- c: 字符设备文件(例如屏幕等串口设备)
- s: 套接口文件
注意:Linux 系统中文件名后缀没有直接意义,对文件类型没影响。但是部分软件(如 gcc)可能会看文件名后缀来运作。
基本权限
对于文件来说:
- r: 可读
- w: 可写
- x: 可执行
- -: 表示对应权限位置没有权限
对于目录来说:
- r: 允许查看指定目录下的文件内容(不是打开目录下的文件!)
- w: 允许在当前目录下进行创建、更改、删除文件
- x: 允许用户进入对应的目录
- t: 是一种特殊的 x 权限,一般用于共享目录,只允许文件拥有者和 root 有权限删这个目录里的这个文件
- -: 不允许那些操作
注意:一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。
rwx 的摆法是有规定的(文件权限值的字符表示方法),当然还有 8 进制数值表示方法(目录的那个 t 不能用这种表示)。
文件访问权限的相关设置方法
chmod 指令
- 功能: 设置文件的访问权限
- 格式:
chmod [选项] 权限 文件名 - 常用选项:
-R递归修改目录及其子目录下所有文件的权限 - 说明: 只有文件的拥有者和 root 才可以改变文件的权限
关于权限这里的写法有两种:
- 用户符号 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限-: 向权限范围取消权限代号所表示的权限=: 向权限范围赋予权限代号所表示的权限- 用户符号:
u(拥有者),g(拥有者同组用),o(其它用户),a(所有用户)
- 三个 8 进制数字
chown 指令
- 功能: 修改文件的拥有者
- 格式:
chown [选项] 用户名 文件名 - 常用选项:
-R递归修改目录及其子目录下所有文件的权限
chgrp 指令
- 功能: 修改文件或目录的所属组
- 格式:
chgrp [选项] 用户组名 文件名 - 常用选项:
-R递归修改文件或目录的所属组
注意:chown 和 chgrp 只有文件所有者或 root 才能用。
umask 指令
- 功能: 查看或修改文件掩码
- 格式:
umask 权限值 - 说明: 超级用户默认掩码值为 0022,普通用户默认为 0002。
- 计算: 系统默认给普通文件的起始权限是 666,系统默认给目录文件的起始权限是 777。
- 公式: 最终权限 = 起始权限 & (~umask)
- 显示: 文件显示的权限那里显示的是最终权限
file 指令
- 功能: 辨识文件类型(还能用来看是动态链接还是静态链接)
- 语法:
file [选项] 文件或目录
共享目录
普通用户自己的家目录的权限是 700,所以想要别人和自己进行文件数据的共享的话,就需要建立共享目录。
共享目录一般建立在根目录底下,所以只有 root 才能建立。
注意:共享目录建立起来,一般不想别人删除自己的文件,所以要用到粘滞位(也就是那个 t)。不能通过去掉 w 权限来不让他们删除,这样就失去共享的意义了。
练习题
-
如果系统的 umask 设置为 244,创建一个新文件后,它的权限为? A. --w-r--r-- B. -r-xr--r-- C. -r--w--w- D. -r-x-wx-wx
-
在 Linux 中,file.sh 文件的权限为 -rw-r--r-x,其对应权限用数值形式表示为? A. 645


