07-Linux权限
07-Linux权限
在 Linux 中,将使用系统资源的人员分为 4 类:超级用户(root)、文件或目录的属主(user)、属主的同一组群人(group)和其他人员(other)。由于超级用户(root)具有操作 Linux 系统的一切权限,所以不用指定超级用户(root)对文件和目录的访问权限。对于其他 3 类用户都要指定对文件和目录的访问权限,对每一类用户都有 3 种基本的权限需要说明。
字符 | 权限 | 对文件的含义 | 对目录的含义 | 八进制【权限数字】 |
---|---|---|---|---|
r | 读权限 | 读取文件的内容 | 查看目录的内容 | 4 |
w | 写权限 | 修改文件内容 | 修改目录的内容:增删改 | 2 |
x | 执行权限 | 执行文件 | 进入目录 | 1 |
注意:
- 目录上只有执行权限,表示可以进入或穿越该目录进入更深层次的子目录。
- 目录上只有执行权限,要访问该目录下的有读权限的文件,必须知道文件名。
- 目录上只有执行权限,不能列出目录列表也不能删除该目录。
- 目录上有执行权限和读权限,表示可以进入目录并列出目录列表。
- 目录上有执行权限和写权限,表示可以在目录中创建、删除和重命名文件。
权限划分如下:

使用ls -l
命令即可以上图的形式展现内容。

我们可以看见,目录和文件都是存在权限的。
权限列表第一个字符为文件类型,文件类型标识符如下:
标识符 | 类型 | 标识符 | 类型 |
---|---|---|---|
d | 目录 | - | 普通文件 |
l | 软链接 | b | 块设备 |
c | 字符设备 | p | 命令管道文件 |
s | 套接字文件 | --- | --- |
在Linux操作系统中,一般会定义文件和目录权限的颜色,而在Android shell中,默认是没有定义的,但是可以通过第三方命令行模拟工具查看,第三方工具有语法高亮,例如:termuis、termux等工具。可执行文件默认是绿色的。
权限命令
chmod
更改文件和目录的操作权限使用 chmod命令进行,有两种设置方法:文字设定法和数值设定法。
字符修改法
通过+
、-
、=
权限修改符号和u、g、o用户,以及r、w、x,符号来实现权限的修改,例如:

我是用+x的方式给所有用户Hello.py执行权限,但最后失败了,因为文件所属的用户不是root,并且不属于任何用户组,这是厂商对Android进行定制的时候设置的特殊账户,防止使用root权限去修改一些重要的文件权限。
还有一个原因是因为Android把这个用户目录的权限进行了隔离,比如现在的软件安装好之后,用户无法去修改一些文件权限,这是目录的权限太低了,我们尝试去换一个目录:

权限更改成功,所有的用户都拿到了执行权限,如果要删除权限,直接使用-
号即可,例如:

那么如何给固定的用户权限呢?

数值修改法
我们可以通过数字去修改用户的权限,每个数值就对应着不同的用户,例如:

数字是什么意思?前面说了,读权限就是4,写权限就是2,执行权限就是1,不同的组合就是不同的权限,例如rwx=7、rw=6、rx=5、wx=3。
chown
改变文件的属主和属组可以使用 chown命令。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者 UID,组可以是组名或者 GID。
例如:
将 test.txt 文件用户组与用户都改为 root
redroid_arm64:/ $ ls -l test.txt
-rwx------. 1 miui miui 929 9月 29 09:35 test.txt
redroid_arm64:/ $ chown root:root test.txt
redroid_arm64:/ $ ls -l test.txt
-rwx------. 1 root root 929 9月 29 09:35 test.txt
将 test.txt 文件用户组与用户都改为 root,并显示动作信息
redroid_arm64:/ $ ls -l test.txt
-rwx------. 1 miui miui 929 9月 29 09:35 test.txt
redroid_arm64:/ $ chown -c root:root test.txt
changed ownership of "test.txt" from miui:miui to root:root
将 test.txt 文件用户组改为 miui
redroid_arm64:/ $ ls -l test.txt
-rwx------. 1 root root 929 9月 29 09:35 test.txt
redroid_arm64:/ $ chown :miui test.txt
redroid_arm64:/ $ ls -l test.txt
-rwx------. 1 root miui 929 9月 29 09:35 test.txt