五、基本权限管理
1.权限的介绍
权限位的含义
长格式显示的第一列就是文件的权限,例如:
[root@localhost ~]# ls -l install.log
-rw-r–r--. 1 root root 24772 1 月 14 18:17 install.log
第一列的权限位如果不计算最后的“.”,则共有 10 位,这 10位权限位的含义。
- 第 1 位代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第 1位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。在这里只说一些常见的文件类型。
- “-”:普通文件。
- “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。
- “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
- “d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。
- “l”:软链接文件。
- “p”:管道符文件。这是一种非常少见的特殊设备文件。
- “s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。
- 第 2~4 位代表文件所有者的权限。
- r:代表 read,是读取权限。
- w:代表 write,是写权限。
- x:代表 execute,是执行权限。
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。
- 第 5~7 位代表文件所属组的权限,同样拥有“rwx”权限。
- 第 8~10 位代表其他人的权限,同样拥有“rwx”权限。
2.基本权限命令
首先来看修改权限的命令 chmod,其基本信息如下。
- 命令名称:chmod。
- 英文原意:change file mode bits。
- 所在路径:/bin/chmod。
- 执行权限:所有用户。
- 功能描述:修改文件的权限模式。
2.1.命令格式
[root@localhost ~]# chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
2.2.权限模式
chmod 命令的权限模式的格式是“[ugoa][[±=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”
的格式。
- 用户身份。
- u:代表所有者(user)。
- g:代表所属组(group)。
- o:代表其他人(other)。
- a:代表全部身份(all)。
- 赋予方式。
- +:加入权限。
- -:减去权限。
- =:设置权限。 - 权限。
- r:读取权限(read)。
- w:写权限(write)。
- x:执行权限(execute)。
2.3.数字权限
数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。
- 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
- 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
- 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。
3.基本权限的作用
3.1.权限含义的解释
首先,读、写、执行权限对文件和目录的作用是不同的。
- 权限对文件的作用。
- 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。
- 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
- 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。 - 权限对目录的作用。
- 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。
- 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。
- 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录。
3.2.目录的可用权限
目录的可用权限其实只有以下几个。
- 0:任何权限都不赋予。
- 5:基本的目录浏览和进入权限.
- 7:完全权限。
4.所有者和所属组命令
4.1.chown 命令
chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。
- 命令名称:chown。
- 英文原意:change file owner and group。
- 所在路径:/bin/chown。
- 执行权限:所有用户。
- 功能描述:修改文件和目录的所有者和所属组。
命令格式:
[root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
普通用户可以修改所有者是自己的文件的权限。
4.2.chgrp 命令
chgrp 是修改文件和目录的所属组的命令,其基本信息如下。
- 命令名称:chgrp。
- 英文原意:change group ownership。
- 所在路径:/bin/chgrp。
- 执行权限:所有用户。
- 功能描述:修改文件和目录的所属组。
5.umask 默认权限
5.1 查看系统的 umask 权限
[root@localhost ~]# umask
0022
#用八进制数值显示 umask 权限
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
#用字母表示文件和目录的初始权限
5.2 umask 权限的计算方法
我们需要先了解一下新建文件和目录的默认最大权限。
- 对文件来讲,新建文件的默认最大权限是
666,没有行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。
按照官方的标准算法,umask 默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,并不推荐。
我们在这里还是按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022来分别计算一下新建文件和目录的默认权限吧。
- 文件的默认权限最大只能是 666,而 umask 的值是 022 “-rw-rw-rw-”减去 “-----w–w-”等于“-rw-r–r—”
- 目录的默认权限最大可以是 777,而 umask 的值是 022“drwxrwxrwx”减去“d----w–w-”等于“drwx-r-xr-x”
注意:umask 默认权限的计算绝不是数字直接相减。
例如 umask 是 033 呢?
文件的默认权限最大只能是 666,而 umask 的值是 033
“-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r–r—”
六、帮助命令
1.man 命令
man 是最常见的帮助命令,也是 Linux 最主要的帮助命令,其基本信息如下。
- 命令名称:man。
- 英文原意:format and display the on-line manual pages。
- 所在路径:/usr/bin/man。
- 执行权限:所有用户。
- 功能描述:显示联机帮助手册。
1.1.命令格式
[root@localhost ~]# man [选项] 命令
选项:
-f: 查看命令拥有哪个级别的帮助
-k: 查看和命令相关的所有帮助
1.2.man 命令的快捷键
快捷键 | 作用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
g | 移动到第一页 |
G | 移动到最后一页 |
q | 退出 |
/字符串 | 从当前页向下搜索字符串 |
?字符串 | 从当前页向上搜索字符串 |
n | n 当搜索字符串时,可以使用 n 键找到下一个字符串 |
N | 当搜索字符串时,使用 N 键反向查询字符串。也就是说,如果使用“/字符串”方式搜索,则 N 键表示向上搜索字符串;如果使用“?字符串”方式搜索,则 N 键表示向下搜索字符串 |
1.3.man 命令的帮助级别
级别 | 作用 |
---|---|
1 | 普通用户可以执行的系统命令和可执行文件的帮助 |
2 | 内核可以调用的函数和工具的帮助 |
3 | C 语言函数的帮助 |
4 | 设备和特殊文件的帮助 |
5 | 配置文件的帮助 |
6 | 游戏的帮助(个人版的 Linux 中是有游戏的) |
7 | 杂项的帮助 |
8 | 超级用户可以执行的系统命令的帮助 |
9 | 内核的帮助 |
man -f 命令 或 whatis 命令
#查看命令拥有哪个级别的帮助
man -k 命令 或 apropos 命令
#查看和命令相关的所有帮助
2.info 命令
info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。
快捷键 | 作用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
Tab | 在有“*”符号的节点间进行切换 |
回车 | 进入有“*”符号的子页面,查看详细帮助信息 |
u | 进入上一层信息(回车是进入下一层信息) |
n | 进入下一小节信息 |
p | 进入上一小节信息 |
? | 查看帮助信息 |
q | 退出 info 信息 |
3.help 命令
help 只能获取 Shell 内置命令的帮助
help 命令的基本信息如下。
- 命令名称:help。
- 英文原意:help。
- 所在路径:Shell 内置命令。
- 执行权限:所有用户。
功能描述:显示 Shell 内置命令的帮助。可以使用 type 命令来区分内置命令与外部命令
shell 是 Linux 的命令解释器。
4.–help 选项
绝大多数命令都可以使用“–help”选项来查看帮助,这也是一种获取帮助的方法。例如:
[root@localhost ~]# ls --help
这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。