如何拒绝特定用户访问应用程序?

如何拒绝特定用户访问应用程序?

为了这个问题的目的,我们尝试拒绝用户n玩游戏的能力韦诺之战(同时仍然允许用户m这样p做)。

尝试执行此操作的一种明显方法是设置相关文件(/usr/games/wesnoth*和目录/usr/share/games/wesnoth)的权限,以便用户n既不能执行也不能读取它们,而其他用户可以。

截至目前,这些文件的权限似乎设置如下:

$ ls -l /usr/games/wesnoth-1.12
-rwxr-xr-x 1 root root 18325576 May 22  2016 /usr/games/wesnoth-1.12

好吧,我想将所有权从用户更改root为其他人并不是一个好主意,所以看来我不得不搞乱组所有权......

我基本上有两个想法:

“黑名单”:给游戏文件所属组noplay,并禁止拥有该组的任何人noplay使用它们:

sudo addgroup noplay
sudo adduser n noplay
sudo chown :noplay /usr/games/wesnoth* /usr/share/games/wesnoth
sudo chmod g-rx /usr/games/wesnoth* /usr/share/games/wesnoth

“白名单”:给出游戏的文件组play,并禁止他人使用:

sudo addgroup play
sudo adduser m play
sudo adduser p play
sudo chown :play /usr/games/wesnoth* /usr/share/games/wesnoth
sudo chmod o-rx /usr/games/wesnoth* /urs/share/games/wesnoth

以上是个好主意吗?将文件的组所有权更改为root其他任何内容不会让将来的事情变得尴尬吗?如果游戏被包管理器更新怎么办?它会因为权限被破坏而失败,还是会将权限重置回原始权限,从而允许所有用户玩游戏?

如果这很重要的话,那就是 Linux Mint。

答案1

Linux Mint,基于 Debian,可能有统计覆盖特征。dpkg-statoverride允许您配置包管理器,以便在包使用给定路径创建文件时调整文件系统权限。例如,您可以将其配置为设置权限/usr/share/games/韦诺。与手动设置权限相比,使用权限的好处dpkg-statoverride是,当您更新或重新安装包时,包管理器将维护该策略。您可以阅读有关包权限的更多信息这里,第 10.9 节。

黑名单还是白名单由您决定;选择您预测最适合您的用例的选项。但简而言之,假设白名单,你可以这样做:

dpkg-statoverride --add m play [mode] /usr/share/games/wesnoth

棘手的部分是您需要使用模式的八进制表示形式。所以你不能使用更友好的o-rx语法。

然后,重新安装应用程序以便应用权限。

相关内容