问题标签 [seandroid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2100 浏览

android - 是否可以在非 root 的 android 手机上添加属性?

对于我的非 root 设备(我不允许 root,所以我需要找到另一种方法),如果我这样做

其次是

我得到一个空行。

如何设置属性?

0 投票
0 回答
57 浏览

android - 从 SELinux 拒绝中,我们如何映射导致拒绝的源代码的确切行

我正在开发 Android,我们将 SELinux 保持在许可模式(开发阶段)。我们看到许多来自不同域的 SELinux 拒绝。想知道,是否有办法将拒绝映射到导致拒绝的确切代码行。这将有助于那些不熟悉 SELinux 但必须对拒绝进行代码更改的开发人员。

0 投票
0 回答
1092 浏览

android - android 上的 SELinux 阻止我的应用程序使用 unix 域套接字

我有一个启动本机应用程序并使用 unix 域套接字与其通信的应用程序。该应用程序在非根设备上运行良好。

问题是当我以 root 身份启动本机应用程序时。本机应用程序运行良好,正在等待来自应用程序的消息。然后,该应用程序尝试使用 unix 域套接字向本机应用程序发送消息。该应用程序正在使用 JNI 调用“sendto”;但是 SELinux 正在阻止来自我的应用程序的 sendto 调用。

这是当我尝试调用“sendto”被阻止时写入的日志。

使它再次工作的唯一事情是如果我禁用selinux(例如:setenforce 0)

有没有其他方法可以解决这个问题?就像一个 semanage 命令,这样我就不必完全禁用 SELinux,只允许我的应用程序需要什么,即只使用 unix 域套接字?

0 投票
1 回答
775 浏览

android - Android 截图(ROOT)

我正在开发一个应用程序来获取具有 root 访问权限的屏幕截图。我正在使用此调用截屏:

但是,它会在根上下文中创建此屏幕截图,即使我 chmod 777 和 chown user_id:user_id,我也无法使用我的应用程序访问它。SELinux 仍然说此访问被拒绝,因为 scontext 是u:r:untrusted_app:s0而 tcontext 是u:object_r:app_data_file:s0。我试过打电话su--context u:r:untrusted_app:s0但没有帮助。

关于如何执行正确的屏幕截图调用将其保存到应用程序内部存储然后允许应用程序访问的任何想法?

0 投票
0 回答
367 浏览

android - 为什么 SELinux 政策说 /init 在 Android Things 上没有标签?

我正在尝试将 Android Things 移植到二进制代码兼容的硬件平台。到目前为止,我所做的是将system.img稀疏文件转换为我复制到 SD 卡的 ext4 分区。

现在我被困在/init开始第二阶段的地方。更准确地说,SELinux 策略拒绝读取selinux_versionfile_contexts.bin拒绝执行/init第二次。

现在有趣的部分是tcontext说文件是unlabeled,但是为什么以及如何解决这个问题?

0 投票
1 回答
72 浏览

selinux - 将 SELinux 请求的权限映射到表示系统调用的字符串

我正在尝试将requested访问控制向量映射到以下函数中系统调用的相应文本表示:

从文档中我可以看到:

是否有将此类requested字段映射到相关系统调用(即读、写、打开等)的文本表示的函数?

谢谢

0 投票
3 回答
7916 浏览

android - 初始化警告:服务 myservice 需要定义一个 SELinux 域。请修复

我想在使用 Android 5.1 的目标板上启动时执行一个可执行文件,所以我在 init.rc 中添加了这个:

我做了拆包和重新打包的工作。
但是,当进行更改时,屏幕会继续打印:

SELinux 对我来说似乎是一个巨大的项目。我只是想避免这种情况。我尝试了两种方法:

对于方法 1,printenv给出结果:

所以你看,已经做出了改变。但警告消息在重新启动后继续打印。
对于方法2,它说:

所以现在我被困在了不知道该往哪里去的困境中。我的问题:

    1. 任何人都知道如何在android中禁用或设置许可模式?
    1. 如果我想为新服务定义域,我应该修改哪些文件?

此外,ls -Z /system/bin/myservice给出了这个:

0 投票
1 回答
4044 浏览

android - 我的自定义 selinux 策略似乎被 android 系统忽略了

我在基于 AOSP 的 Android 7.1.2(更准确地说是基于索尼开放设备树)上正确运行自定义 selinux 策略时遇到了一些麻烦。

我的问题是审核日志不断告诉我缺少我实际添加的文件访问规则。我还将 audit2allow 创建的规则复制到我的策略文件中,但即使这些规则也无法正常工作。

那么,让我们深入了解一下细节:

我创建了一个名为vendor_app的自定义域。此域根据其签名分配给应用程序。我在mac_permissions.xml添加了一个条目来分配 seinfo 字段vendor。在seaapp_contexts我这样分配vendor_app域:

我的应用程序在 vendor_app 上下文中正确启动:

所以,现在对于根本不起作用的部分。在vendor_app上下文中运行的应用程序将获得对/persist/vendor中文件的读/写访问权限。为了创建必要的规则,我在设备目录的sepolicy文件夹中添加了一个名为vendor.te的文件,内容如下:

我在file_contexts配置中添加了一项:

在 /persist 分区上,我创建了一些目录结构,以使具有适当权限的文件夹可以在其中添加一些文件。

我知道服务的find规则正在运行,因为我可以在强制模式下启动我的应用程序,并且不会对此有任何抱怨。我还可以按照有关persist_file:dir的规则访问{ search }的 /persist 目录。

一旦我尝试将/persist/vendor/updater/test之类的新文件写入/persist目录,我就会从 auditd 收到错误消息:

该错误当然由 audit2allow 转换为以下规则:

由于writecreate_dir_perms的成员,它实际上应该在那里。我还尝试将由audit2allow创建的行添加到我的vendor.te 中,但没有任何成功。

请注意,写入更新程序还涉及搜索persist_file和搜索vendor_file,这两者似乎都可以正常工作

有没有人有任何建议,如何正确调试,甚至可能有解决这个问题的方法?我已经研究了两天了,这让我发疯了。

编辑:

啊。/persist 当然是可写的:

编辑2:

正如 Paul Ratazzi 所问的,我已经扫描了 sepolicy 文件和实际加载到内核中的版本,以了解我的规则是否存在。

因此,它们实际上已正确部署到设备上。

0 投票
0 回答
676 浏览

android - SEAndroid:编译错误

我遇到了一些 SEAndroid 问题,请参阅以下详细信息:

调试命令:adb shell logcat | findstr“拒绝:”

  1. 07-06 22:51:41.569 3418 3418 I sh : type=1400 audit(0.0:137): avc: denied { read } for name="demolog-executor.sh" dev="mmcblk0p50" ino=867248 scontext=u :r:dumpstate:s0 tcontext=u:object_r:system_app_data_file:s0 tclass=文件许可=1

  2. 07-06 22:51:41.569 3418 3418 I sh : type=1400 audit(0.0:138): avc: denied { open } for path="/data/data/com.demo.LogTool/files/demolog-executor。 sh" dev="mmcblk0p50" ino=867248 scontext=u:r:dumpstate:s0 tcontext=u:object_r:system_app_data_file:s0 tclass=file permissive=1

  3. 07-06 22:51:43.619 3489 3489 I sh : type=1400 audit(0.0:209): avc: denied { read } for name="clear-logs.sh" dev="mmcblk0p50" ino=867237 scontext=u :r:dumpstate:s0 tcontext=u:object_r:system_app_data_file:s0 tclass=文件许可=1

  4. 07-06 22:51:43.619 3489 3489 I sh : type=1400 audit(0.0:210): avc: denied { open } for path="/data/data/com.demo.LogTool/files/clear-logs. sh" dev="mmcblk0p50" ino=867237 scontext=u:r:dumpstate:s0 tcontext=u:object_r:system_app_data_file:s0 tclass=file permissive=1

然后在dumpstate.te中添加一个selinux规则: allow dumpstate system_app_data_file:file {read open};

但是编译给了我这样的错误信息:

然后回显 \"==========\" 1>&2; echo \"ERROR: permissive domain not allowed in user builds\" 1>&2; echo \"无效域列表:\" 1>&2; cat out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy.permissivedomains 1>&2; 1号出口;fi ) && (mv out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy.tmp out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy )" neverallow 检查在 out/target/product/msm8996 失败/obj/ETC/nonplat_sepolicy.cil_intermediates/nonplat_sepolicy.cil:3814 (neverallow base_typeattr_51_26_0 system_app_data_file_26_0 (file (create unlink open))) 允许在 out/target/product/msm8996/obj/ETC/nonplat_sepolicy。

生成二进制文件失败

无法构建策略数据库

有人可以帮我吗,拜托。

0 投票
1 回答
6093 浏览

android-source - SEAndroid:如何修复不允许的域

当我为我的时间戳进程创建一个新的域类型时,我有一些 SEAndroid 问题,但是与 neverallow 仍然存在一些冲突问题。有人可以给我一个提示或线索吗?请参阅以下说明。

avc 拒绝日志:

[120.810387]类型=1400审计(932699.049:188):avc:拒绝{execute_no_trans}对于pid=3875 comm="system_server" path="/system/bin/sh" dev="mmcblk0p47" ino=791 scontext=u: r:system_server:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [120.827670] type=1400 audit(932699.049:188):avc: denied {execute_no_trans} for pid=3875 comm="system_server" path= "/system/bin/sh" dev="mmcblk0p47" ino=791 scontext=u:r:system_server:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [120.827684] type=1400 audit(932699.069: 189): avc: 拒绝 { getattr } for pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r :system_file:s0 tclass=文件许可=1 [120。828287] 类型=1400 审计(932699.069:189):avc:拒绝 { getattr } for pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r :system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [120.828300] type=1400 audit(932699.069:190):avc: denied {execute} for pid=3877 comm="sh" name="时间戳"dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [120.828593] type=1400 audit(932699.069:190):avc: denied { 执行 } for pid=3877 comm="sh" name="timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [ 120.828607] 类型=1400 审核(932699.069:191):avc:拒绝 { 读取打开 } for pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [120.828981] type=1400 audit(932699.069:191):avc: denied { read open } for pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [120.828996] type=1400 audit(932699.069:192):avc: denied {execute_no_trans} for pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1 [120.845574]类型=1400 审核(932699.069:192):avc:对于 pid=3877 comm="sh" path="/system/bin/timestamp" dev="mmcblk0p47" ino=832 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass 被拒绝 { execute_no_trans } =file permissive=1 [120.845587] type=1400 audit(932699.089:193):avc: denied {execute_no_trans} for pid=3879 comm="sh" path="/system/bin/dumpsys" dev="mmcblk0p47" ino= 570 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=文件许可=1mmcblk0p47" ino=570 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1mmcblk0p47" ino=570 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1

我的时间戳.te:

type timestamp, domain; type timestamp_exec, exec_type, file_type; init_daemon_domain(timestamp)

我的文件上下文:

我的 system_server.te:

编译器失败日志:

然后回显 \"==========\" 1>&2; echo \"ERROR: permissive domain not allowed in user builds\" 1>&2; echo \"无效域列表:\" 1>&2; cat out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy.permissivedomains 1>&2; 1号出口;fi ) && (mv out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy.tmp out/target/product/msm8996/obj/ETC/sepolicy_intermediates/sepolicy )" neverallow 检查在 out/target/product/msm8996 失败/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil:12033 来自系统/sepolicy/private/system_server.te: