“这是我参与更文挑战的第14天,活动详情查看: 更文挑战”
前文神兵利刃:shell 初入门 介绍了一些 shell 的基础知识,本文我们将学习权限相关的操作。
root user
和 sudo
根用户(root user
)在类 Unix 系统中是非常特殊的一类用户。它几乎不受任何限制,他可以创建、读取、更新和删除系统中的任何文件。
用根用户直接登录系统是非常危险的,因为可能会因为某些错误的操作而破坏系统。
通常并不会以根用户的身份直接登录系统,我们只在需要的时候使用 sudo
命令,它的作用是让您可以以 su(super user
或 root
的简写)的身份执行一些操作。
当您遇到拒绝访问(permission denied
)的错误时,通常是因为此时您必须是根用户才能操作。然而,请再次确认您是真的要执行此操作。一般执行 sudo
命令时,都需要你输入当前用户的密码。
查看文件的操作权限 ls -l
通过 ls -l
可以查看文件权限,输出效果如下:
shellLearn:~$ ls -l
drwxr-xr-x 4 oracle dba 4096 May 20 11:47 oralog1
drwxr-x--- 18 root root 4096 May 20 13:51 root
复制代码
可以看到会有类似的 drwxr-xr-x
和 drwxr-x---
10个字母组成的字符串出现在第一列,这是什么含义呢。
文件权限解读
首先我们需要知道用户组的概念。某个文件归属者用户 user
,user
又属于某个用户组 user group
,那么自然也会有不在用户组内的其他用户 other user
的概念。
每个文件对应用户或者用户组又有三种操作 读(r
)写(w
)执行(x
)。以下各个字段相对应的权限含义。
具体到 drwxr-xr-x
:
- d 表示文件类型是目录
- rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
- r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限,只有读和执行。
- r-x :第8-10位表示其他用户所具有的权限,只有读和执行。
ls -al 输出内容的各段含义
drwxr-xr-x 4 oracle dba 4096 May 20 11:47 oralog1
复制代码
表示 oralog1
是个目录,其下面有4个文件(夹),其拥有者是 oracle
,文件大小为 4096
字节 ,创建时间是 5月20日11:47
。oracle
拥有读写执行的权限,和 oracle
所在同一个 dba
组里的用户拥有只读和执行权限,剩下其他用户拥有只读和执行权限。
具体明细解释如下:
- 第1字段: 文件属性字段
文件属性字段总共有10个字母组成,第一个字母表示文件类型。其他字段含义上述已经介绍。
请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息。
文件类型有以下几种
`d` 是目录文件
`l` 是链接文件
`-` 是普通文件
`p` 是管道
复制代码
- 第2字段:文件硬链接数或目录子目录数
- 第3字段: 文件拥有者
- 第4字段: 文件拥有者所在的组
- 第5字段: 文件文件大小(以字节为单位)
- 第6字段: 文件创建月份
- 第7字段: 文件创建日期
- 第8字段: 文件创建时间
- 第9字段: 文件名 (如果是一个符号链接,那么会有一个 “->”箭头符号,后面根一个它指向的文件)
修改文件的操作权限 chmod
如果需要修改文件的权限,我们需要用到 chmod 命令。 它的使用方式简单如下:
chmod options fileName
复制代码
该命令将根据 options
的配置 对 fileName
做操作,配置有两种方式。
通过字符标志 symbols 输入控制
chmod u=rwx,g=rx,o=r myfile
复制代码
以上操作的含义是将 myfile
的权限修改为文件拥有者可以读写执行,其所在的用户组可以读和执行,其他用户只能读。解释如下:
- 字母
u
、g
和o
代表user
、group
、other
。 - 等号(
=
)赋值相应的权限。 - 字母
r
、w
、x
分别代表read
、write
和execute
。 - 逗号用来分隔不同用户的权限,中间没有任何空格。
通过八进制数(0-7)控制
以上操作等同于:
chmod 754 myfile
复制代码
这是为什么呢。原因如下:
数字 7
、5
、4
分别按顺序一一代表着 user
、group
、others
的权限。每个数字都是4
、2
、 1
、0
这四个数字的求和。
- 4 代表 读
read
- 2 代表 写
write
- 1 代表 执行
execute
- 0 代表 无权限
no permission
所以 7
是 4+2+1
(read, write, execute)的求和,5
是 4+0+1
(read, no write, execute), 4
是 4+0+0
(read, no write, no execute)。
小结致谢
本文主要学习了:
- 用户组和根用户的概念
- 文件的权限的查看命令
- 文件权限的修改命令
学习之后就明白了常见的 777
代表是什么含义了。
本文有参考以下链接,一并致谢: