什么时候调用 SELinux.restorecon()?
When to call SELinux.restorecon()?
Android 开源代码包含这样的代码。任何人都可以解释为什么以及在什么情况下有必要做 SELinux.restorecon(File)?
// If Encrypted file systems is enabled or disabled, this call will return the
// correct directory.
mBaseStateDir = new File(Environment.getSecureDataDirectory(), "backup");
mBaseStateDir.mkdirs();
if (!SELinux.restorecon(mBaseStateDir)) {
Slog.e(TAG, "SELinux restorecon failed on " + mBaseStateDir);
}
我们可以经常这样做吗?
SELinux restorecon
用于恢复某些 files/dir.
上的默认安全上下文
事情(不明显)是我们还用它来应用 上下文更改,and/or 以确保文件上下文符合您的预期。
通常,我们 define/override 使用 semanage-fcontext
默认安全上下文,然后 运行 restorecon
根据这些新默认设置重新标记文件。
这里的代码试图重新标记 mBaseStateDir
但没有成功。可能是:
- 没有政策支持与该目录关联的默认上下文(给定它的路径)
mBaseStateDir
标签错误(上下文类型不适用)
- user/process 运行注意该代码没有足够的权限来重新标记目录(即使它刚刚创建它)。
Android 开源代码包含这样的代码。任何人都可以解释为什么以及在什么情况下有必要做 SELinux.restorecon(File)?
// If Encrypted file systems is enabled or disabled, this call will return the
// correct directory.
mBaseStateDir = new File(Environment.getSecureDataDirectory(), "backup");
mBaseStateDir.mkdirs();
if (!SELinux.restorecon(mBaseStateDir)) {
Slog.e(TAG, "SELinux restorecon failed on " + mBaseStateDir);
}
我们可以经常这样做吗?
SELinux restorecon
用于恢复某些 files/dir.
事情(不明显)是我们还用它来应用 上下文更改,and/or 以确保文件上下文符合您的预期。
通常,我们 define/override 使用 semanage-fcontext
默认安全上下文,然后 运行 restorecon
根据这些新默认设置重新标记文件。
这里的代码试图重新标记 mBaseStateDir
但没有成功。可能是:
- 没有政策支持与该目录关联的默认上下文(给定它的路径)
mBaseStateDir
标签错误(上下文类型不适用)- user/process 运行注意该代码没有足够的权限来重新标记目录(即使它刚刚创建它)。