[Seek Help] 请问如何限制一个账号里的某些软件,比如浏览器、软件商店?
Tofloor
poster avatar
V
deepin
2022-12-11 06:47
Author

如题,家里小孩上网课,老是去看浏览器了。我在笔记本的deepin系统里用useradd 建立了一个guest账号,想把里面的浏览器和应用商店给禁止了。该如何操作? 系统是今天才更新的20.8. 另外,guest账号还会自动挂载所有的其他win的分区,这个也给禁掉最好,也不知道如何操作。请大神指点。

不敢卸载,怕影响到另外一个主账号。看这个新建的guest账号里几乎看到了主账号的所有软件了。。。

Reply Favorite View the author
All Replies
fxbszj
deepin
2022-12-11 06:56
#1

可以试试:

1, 把当前用户(常用账号)追加root分组

usermod -a -G root

2, 找到可执行文件,去掉其他用户的可执行权限, 以火狐为例

chmod o-x firefox

Reply View the author
忘记、过去
deepin
2022-12-11 08:38
#2

挂载好像没办法,udev 的 rules 文件对所有用户生效

如果只是想在 guest 账户下启动器里面看不到浏览器之类的图标,从 /usr/share/applications 里面把对应的 desktop 复制到 ~/.local/share/applications 下,并修改文件添加 NoDisplay=true,注销重新登录后就应该看不到了

Reply View the author
deepinuser17
deepin
2022-12-11 10:21
#3

可以使用Linux的文件许可控制(facl)。

 

文件许可控制可以精确的控制某个用户,组对某个文件,目录的使用权限。 

 

以深度浏览器为例。深度浏览器是通过两个文件打开的, /usr/bin/browser(这个是脚本), /usr/share/browser/browser(这个是运行文件).

 

默认的使用权限是所有人都可以读和运行。 如果想要防止某个用户运行该程序,可以给该用户单独设立一个权限来禁止读和运行的权利。

例如,要阻止用户guest2运行深度浏览器,可以进行以下操作

sudo setfacl -m u:guest2:--- /usr/bin/browser
sudo setfacl -m u:guest2:--- /usr/share/browser/browser

 

设置限制之前, 这些文件的权限:

$ getfacl /usr/bin/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/browser
# owner: root
# group: root
user::rwx
group::r-x
other::r-x


$ getfacl /usr/share/browser/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/share/browser/browser
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

 

设置用户guest2限制以后, 只有用户guest2失去了访问使用权限。其他用户不受影响。

$ getfacl /usr/bin/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/browser
# owner: root
# group: root
user::rwx
user:guest2:---
group::r-x
mask::r-x
other::r-x

$ getfacl /usr/share/browser/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/share/browser/browser
# owner: root
# group: root
user::rwx
user:guest2:---
group::r-x
mask::r-x
other::r-x

作为guest2用户,再运行这些命令时,会被拒绝。

$ /usr/bin/browser --version
-bash: /usr/bin/browser: Permission denied

$ /usr/share/browser/browser --version
-bash: /usr/share/browser/browser: Permission denied

 

在这些命令被限制运行之后, 用户guest2也同样无法从应用菜单里启动。

 

运行以下命令来取消这个限制:

sudo setfacl -x u:guest2 /usr/bin/browser
sudo setfacl -x u:guest2 /usr/share/browser/browser

 

可以写个脚本,然后创建一个cron任务,在小孩上课的时间段自动添加限制, 在其他时间段取消限制。

 

类似的操作也适用于限制对某个目录的访问。 比如win分区的顶级目录。 

 

最后需要和小孩讲清楚,在上课期间浏览器及其他影响上课的应用会被限制。不要让小孩花全部的上课时间去搞清楚为啥不能上网了。 不要低估小孩探索的好奇心。

 

 

Reply View the author
V
deepin
2022-12-11 23:13
#4
deepinuser17

可以使用Linux的文件许可控制(facl)。

 

文件许可控制可以精确的控制某个用户,组对某个文件,目录的使用权限。 

 

以深度浏览器为例。深度浏览器是通过两个文件打开的, /usr/bin/browser(这个是脚本), /usr/share/browser/browser(这个是运行文件).

 

默认的使用权限是所有人都可以读和运行。 如果想要防止某个用户运行该程序,可以给该用户单独设立一个权限来禁止读和运行的权利。

例如,要阻止用户guest2运行深度浏览器,可以进行以下操作

sudo setfacl -m u:guest2:--- /usr/bin/browser
sudo setfacl -m u:guest2:--- /usr/share/browser/browser

 

设置限制之前, 这些文件的权限:

$ getfacl /usr/bin/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/browser
# owner: root
# group: root
user::rwx
group::r-x
other::r-x


$ getfacl /usr/share/browser/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/share/browser/browser
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

 

设置用户guest2限制以后, 只有用户guest2失去了访问使用权限。其他用户不受影响。

$ getfacl /usr/bin/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/browser
# owner: root
# group: root
user::rwx
user:guest2:---
group::r-x
mask::r-x
other::r-x

$ getfacl /usr/share/browser/browser
getfacl: Removing leading '/' from absolute path names
# file: usr/share/browser/browser
# owner: root
# group: root
user::rwx
user:guest2:---
group::r-x
mask::r-x
other::r-x

作为guest2用户,再运行这些命令时,会被拒绝。

$ /usr/bin/browser --version
-bash: /usr/bin/browser: Permission denied

$ /usr/share/browser/browser --version
-bash: /usr/share/browser/browser: Permission denied

 

在这些命令被限制运行之后, 用户guest2也同样无法从应用菜单里启动。

 

运行以下命令来取消这个限制:

sudo setfacl -x u:guest2 /usr/bin/browser
sudo setfacl -x u:guest2 /usr/share/browser/browser

 

可以写个脚本,然后创建一个cron任务,在小孩上课的时间段自动添加限制, 在其他时间段取消限制。

 

类似的操作也适用于限制对某个目录的访问。 比如win分区的顶级目录。 

 

最后需要和小孩讲清楚,在上课期间浏览器及其他影响上课的应用会被限制。不要让小孩花全部的上课时间去搞清楚为啥不能上网了。 不要低估小孩探索的好奇心。

 

 

感谢,这个我也在网上看到相关的说法,但是不清楚具体的命令。你这个直接教程就帮我搞定了。不过我向如果能直接把启动器菜单给禁了就最好,请问你能不能说说deepin的启动器菜单在哪个目录下运行的。

Reply View the author
V
deepin
2022-12-12 00:40
#5

而且奇怪的是腾讯会议和钉钉我都没限制,不知道为啥钉钉死活打不开了。最初没做任何限制时时可以打开的。限制就是限制了浏览器,软件商场和/media/home/主用户

Reply View the author