Android init.rc中mkdir参数的含义

问题描述

我试图理解以下命令:

  1. mkdir / data 0770根系统
  2. mkdir / data 0770系统系统
  3. mkdir / data 0770系统室

https://android.googlesource.com/platform/system/core/+/b4d65399fde02280b718e3b5b5cb1464a885c4b0/rootdir/init.rc
第58行

mkdir正在创建目录,
/ data是路径,
0770授予对该目录的读写权限,
我不知道的根系统。

解决方法

格式为

mkdir <path> [mode] [user] [group]

该路径定义了必须创建的目录。该模式定义目录的权限。用户和组定义谁是目录的所有者。权限与用户和拥有目录的组有关。例如,mkdir /data 0770 root system表示/data目录由用户root和组system拥有。 root用户具有读/写/执行权限(由于第一个7),并且属于system组成员的每个用户都拥有相同的权限(由于第二个{ {1}})。每个其他用户都没有权限(由于最后一个7)。在这种情况下,前导0没有特殊含义,只是表示八进制数字的开头。

0中可以使用的命令已定义为here

您还可以使用init.rc通过命令行检查拥有目录的用户和组:

ls -l

由于您提到了安全标签:这些权限与SE Linux标签无关。文件权限被认为是自由访问控制(DAC),而SE Linux标签是强制访问控制(MAC)。

您可以使用# ls -l ... drwxrwx--- 45 root system 920 1971-02-01 00:26 data 检查SE Linux标签:

ls -lZ

因此,在这种情况下,SE Linux标签将为# ls -lZ ... drwxrwx--x 45 root system u:object_r:system_data_file:s0 920 1971-02-01 00:26 data 。通常,不会通过u:object_r:system_data_file:s0动态设置文件的SE Linux标签。而是通过SE Linux策略(reference)中的init.rc文件静态定义标签。默认情况下,新创建的文件会继承其父目录的SE Linux标签。要将策略中的标签应用于新创建的文件,可以使用file_contexts命令,例如, here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...