去年圣诞节,我儿子收到了一台新笔记本电脑,主要用于他的新学校……现在他有了自己的笔记本电脑,他很高兴安装 Steam。
但是妻子要我删除 Steam,因为笔记本电脑主要是供学校使用的……如果我不必这样做,我宁愿不这样做。
有什么方法可以限制或以其他方式限制对 Steam 的访问?也许是 Steam 本身的密码,或者设定的运行时间?
理想情况下,它必须是非常易于使用的东西,因为我的工作经常让我长时间远离家(和电脑、电信和......),而我的妻子对电脑不像我那么舒服,更容易使用远,好得多。
肯定有什么东西可以完成这项任务吗?
根据我自己的经验,限制对电脑游戏的访问是教育我们孩子的最具挑战性的任务之一。当然,我们父母希望他们主要将计算机用于学校,但这与孩子的意图严重冲突。他们会恨我们给他们只用于学校的硬件。
当然,我们也希望他们学习如何以明智的方式使用他们的计算机,包括如何将其用于工作和休闲。这包括游戏和观看视频。
不幸的是, Ubuntu 几乎无法使用维护良好且有效的家长控制来限制孩子的计算。另一个主要问题是,一旦他们是聪明的孩子,我们采取的所有措施都是徒劳的。他们总会想办法克服我们的限制,以防他们真的很聪明,我们甚至都无法注意到。
在孩子的计算机上运行的任何阻止软件或 PAM 限制都只是暂时的,迟早会很容易被克服。因此,我们决定让受密码保护的路由器来完成这项工作,这样可以更轻松地控制物理访问。
因此,我们目前在某种程度上限制游戏的做法是结合以下所有内容:
sudo
我们确实知道,他们迟早能够将自己加入团队中。计划是他们会要求我们这样做,而不是隐藏起来。为了方便我们双方、孩子和我们履行计算机使用合同,我们设置了以下限制:
如果游戏需要 Internet 访问(例如Steam、Minecraft或其他 gamig 服务器),则阻止 Internet 访问将有效地禁用游戏。但是,它对离线运行的游戏没有影响。
为流程或应用程序设置时间限制
使用小型后台脚本,您可以设置进程或应用程序的时间限制。
只要您的用户不知道管理员密码,就不太容易被超越。
下面的解决方案
就是这么小的后台脚本。它将每天的使用限制为定义的分钟数,以在脚本的头部设置。一旦设置(这不是太难),它运行起来非常容易,之后不需要额外的操作。
剧本
如何使用
limit
limit_use
(无扩展名)文件夹内并使其可执行在脚本的头部编辑要限制的进程名称,以及允许的最大分钟数。在示例中:
将文件夹复制到目录
/opt
:现在编辑
/etc/rc.local
以使脚本root
在启动时运行它:就在行前
另一行:
而已
当有人试图杀死后台脚本时:
(不允许操作)
解释; 这个怎么运作
/opt/limit/uselog
)。如果达到每日限制,则脚本不再允许进程运行,如果存在则将其终止。rc.local
只有具有 sudo 权限的用户才能停止脚本,即使用户知道进程名称也是如此。停止脚本
如果您想停止脚本,请使用以下命令:
但同样,您需要 sudo 密码才能这样做。
编辑
尽管上面的脚本应该提供一种相当安全的方式来限制应用程序的使用,正如@Bytecommander 所提到的,它可以被超越,尽管不是很容易。除非您的儿子知道设置,并且对 Linux/Ubuntu 非常有经验,否则结合以下措施将使其不太可能发生。
附加措施
下面的附加措施距离“简单解决方案”有点远,但设置起来仍然不太困难。如果我们的嫌疑犯发现脚本是从 调用的
/etc/rc.local
,会设法成为 root,并删除 中的行/etc/rc.local
,或者能够以这种方式停止脚本,我们可以面对他的下一个问题:屏幕在之后黑屏登录。此外,该解决方案会在重新启动后 5 分钟后检查后台脚本是否正在运行,如果没有,则黑屏。额外的措施是启动检查该行
/opt/limit/limit_use &
是否存在于 中/etc/rc.local
,并在 5 分钟后检查脚本是否仍在运行。由于脚本是从(从启动应用程序中隐藏的)启动器运行的,/etc/xdg/autostart
因此很难找出正在发生的事情,除非您知道它是如何完成的。这两种措施的结合使您的儿子不太可能发现,如果他发现了,可能没有什么能阻止他。如何设置
涉及两个简单的步骤:
将下面的代码复制到一个空文件中,将其保存
blackout.desktop
在桌面上:将文件复制到
/etc/xdg/autostart
:将下面的脚本复制到一个空文件中,将其另存为
blackout.py
桌面,使其可执行并将其复制到/usr/local/bin
:剧本
解释
启动器
/etc/xdg/autostart
将为所有用户启动一个应用程序(在这种情况下是额外的安全检查)。这可以在本地覆盖,但您必须知道检查运行。通过将线NoDisplay=true
放入我们的启动器,它不会出现在本地Startup Applications
,因此在不知道它存在的情况下,它不太可能被发现。此外,你儿子只有 15 秒的时间来找出答案(然后屏幕变黑),所以他会有一个严重的问题,除非他是一个天才,有丰富的 Ubuntu 经验和创造性思维。
这可以通过使用 shell 脚本来实现。
第一个脚本是在
Steam
运行后立即终止:将其另存为
/path/to/anyname.sh
并将其添加到启动应用程序列表中。这个脚本将做的是它会检查任何打开的进程
steam
,每秒钟命名一次,如果找到,它将杀死它。但是,您需要一个
steam
可以在特定时间运行的解决方案,以便您的儿子可以在该时间间隔内玩游戏。为此,您必须编写另一个脚本:将其另存为
/path/to/anyname2.sh
并将其添加到您的启动应用程序列表中。该脚本将在 10:00 时终止第一个脚本。因此,当您的儿子
Steam
在 10:00 运行时。他现在可以玩了。第三个脚本是在另一个时间点重新启动第一个脚本,以便它
Steam
在一段时间后终止,您的儿子将无法再玩游戏Steam
。将其另存为
/path/to/anyname3.sh
并将其添加到您的启动应用程序列表中。确保隐藏这些路径,以免您的儿子发现。
为什么不使用新的用户帐户(通过系统设置)。这是 Linux 上唯一一种用于“权限”的方法。
sudo
组)。然后此帐户将没有 root 访问权限,将无法安装或删除软件,更改系统范围的设置。几点注释..
/home/son/.steam
当然还有二进制文件/usr/games/steam