如何以编程方式锁定 Chromebook?

Posted

技术标签:

【中文标题】如何以编程方式锁定 Chromebook?【英文标题】:How can you programmatically lock a Chromebook? 【发布时间】:2021-04-15 09:27:57 【问题描述】:

我有一台 Chrome 操作系统设备,我想在计时器到期时(当孩子用完可用的屏幕时间时)以编程方式锁定屏幕。 Chromebook 支持 android 应用程序,但我找不到太多关于如何针对 Chrome OS 执行此操作的信息。我找到了有关使用 DevicePolicyManager LockNow Android 功能的信息,我真的认为会这样做 - 但事实并非如此。它可以很好地锁定我的 Android 手机,但是当我将它部署到我的 Chromebook(Acer R 13)时,线路会响起,继续没有问题,但什么也没做。我第一次将应用程序设置为设备管理员时得到了正确的安全提示,但是尽管在我的三星 Note 9 上完美运行,但 LockNow 代码似乎完全没有做任何事情。

有没有人知道一些文档或能够为我指出正确的方向?谢谢

【问题讨论】:

@LClornhorse:我正在尝试实现类似的东西,你能找到任何解决方案吗? 如果您决定不自己编写代码,您可能需要使用 Family Link:support.google.com/families/answer/7680868 【参考方案1】:

我怀疑第三方 Android 应用能否在监督模式下运行,因为 Android 在 ChromeOS 中作为访客容器/VM 运行。

发件人:https://chromium.googlesource.com/chromiumos/docs/+/HEAD/containers_and_vms.md#Don_t-Android-apps-ARC_run-in-a-container-and-not-a-VM

词汇表

ARC(Chrome 应用运行时):在 Chrome NaCl(本机客户端)沙箱中运行 Android 应用的旧方法/已弃用方法。存在随机兼容性问题。 ARC++(Android Runtime for Chrome [plus plus]):在 Chrome OS 下的容器中启动 Android 的当前方法。 ARCVM (Android Runtime for Chrome in a VM):在 Chrome OS 下启动 Android 的最新方法。与 ARC++ 不同,ARCVM 在 crosvm 中运行 Android。

Android 应用 (ARC++) 不是在容器而不是 VM 中运行吗?

虽然 Android 应用目前在容器中运行,但符合条件的设备正在迁移到在 VM 中运行。

对于 ARC++ 容器,我们尽量将它们隔离开来(使用命名空间、seccomp、alt syscall、SELinux 等),但归根结底,它们可以直接访问许多系统调用和内核接口,因此可以通过使用 Android 的 NDK 编译的代码访问其中的错误。

如果 Android 应用在容器中,为什么用户也不能运行代码?

我们通常不接受将某个地方的安全门槛低作为在所有地方降低安全门槛的正当理由。相反,我们希望不断提高所有代码的安全标准。

例如,支持 Android 11+ 的设备正在从容器中的 ARC++ 迁移到 ARCVM。

Android 应用 (ARC++) 会消失吗?

没有合并这两个项目的计划。我们共享/重用了很多 Chrome 桥接代码,所以我们并不是从头开始做所有事情。

虚拟机不会减慢一切吗?

与仅在容器中或直接在系统中运行相比,VM 确实会增加开销。然而,在我们的测试中,开销对于用户体验来说是微不足道的,并且非常值得在系统安全方面取得巨大的进步。

更多详情,请参阅Security section in this doc。

如您所见,Android 应用与 ChromeOS 隔离,因此任何操作(如屏幕锁定)都必须通过现有的 ChromeOS API(如 Enterprise Management on Chrome OS 或 Google's Family Link)进行管理

但是在 crosh 中锁定屏幕的脚本呢?

我不确定脚本是在 ChromeOS 开发者模式下运行,还是只是运行默认的 crosh 环境才能工作。无论哪种方式,用户对此类操作都是明确的。据我所知,Android 没有明确的面向外部的 API,因为它位于容器/VM 中。

难道我不能使用 Android NDK 编写一些东西来访问内核以实现我的目标吗?

如果您通过所有安全层,因为 ARC++ 基于容器技术,但如上所述,未来的版本将在 VM 中。

【讨论】:

【参考方案2】:

如果您使用的是 Chrome 操作系统企业版,您可以通过 ScreenLockDelay policy 设置锁定屏幕的设备策略。来自文档:

指定使用交流电源或电池运行时屏幕在没有用户输入的情况下锁定的时间长度。

当时间长度设置为大于零的值时,它表示在 Google Chrome OS 锁定屏幕之前用户必须保持空闲的时间长度。

在进一步阅读您的问题后,您似乎确实想在用户登录后的任意时间后锁定屏幕。根据该信息,我会查看 Chrome OS Extensions API。如果您的用户主要使用网络浏览器,您可以在设定的时间后通过扩展重定向到网页。如果用户也在使用 Android 应用程序,那么您可能需要让 Chrome 团队添加一个企业策略,以允许在 logging a bug 设定的时间后锁定设备。

【讨论】:

:您能否指导我以编程方式从 Android 应用程序锁定 Chromebook,或者解释如何从 Chromebook 中的 Android 应用程序使用 Sudo 命令执行 Shell 脚本,因为我有一个可以锁定 chromebook 的 shell 脚本,但这是有效的使用 ChromeOS crosh 终端。

以上是关于如何以编程方式锁定 Chromebook?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式检查大写锁定是不是打开

如何以编程方式锁定活动操作

如何以编程方式使用密码设置屏幕锁定?

Android检测Chromebook上的锁定解锁事件

如何使用 PowerShell 以编程方式弹出锁定的 HDD eSATA 驱动器?

以编程方式确定锁定工作站的持续时间?