为了这个问题的目的,我们尝试拒绝用户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
语法。
然后,重新安装应用程序以便应用权限。