如何阻止特定应用程序在特定帐户中打开

Lui*_*ado 14 security

如何阻止某些应用程序在某些帐户上打开(例如:阻止帐户 John 打开 Firefox 或 Gimp)。假设这是针对 GUI 而不是终端,并且仅适用于特定用户,因此例如用户 X 可以打开 Gimp 但不能打开 Firefox,用户 Z 可以打开软件中心但不能打开 VirtualBox。

对于 Ubuntu 的新用户,有什么好的和简单的方法可以做到这一点。

Jac*_*ijm 15

A. 配置选项

如果该阻止旨在阻止经验不足的用户使用某些应用程序,则编辑(本地副本)应用程序的桌面文件(如 中所述[1])可能是最快和最简单的方法。
可以做一些额外的事情来创建额外的障碍和/或防止用户太容易发现我们所做的事情来阻止应用程序([2][3])。

该设置不适用于有经验用户的无人值守情况。在普通用户的“家庭”情况下,在许多情况下就足够了。

1.通过编辑(本地版本).desktop 文件来阻止 gedit 的示例

  • 将应用程序的桌面文件复制/usr/share/applications~/.local/share/applications

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    
    Run Code Online (Sandbox Code Playgroud)
  • 编辑文件:通过将它拖到打开的 gedit 窗口上,用 gedit 打开它(同时你仍然可以:))。

    从那时起(注销/登录后),如果用户尝试从 Dash 打开 gedit 或尝试打开链接到应用程序的文件,他或她将看到此消息:

    在此处输入图片说明

    • 从 Dash 隐藏应用程序(可选措施)

      在我们进行上述更改后,在gedit.desktop文件仍然打开的情况下,我们可以添加一行:

      NoDisplay=true
      
      Run Code Online (Sandbox Code Playgroud)

      通过添加这一行,gedit甚至不会出现在 Dash 中。

    撤消

    要撤消,只需.desktop从中删除本地文件~/.local/share/applications

2.让它更难找到

虽然编辑.desktop文件后,应用程序将不再出现在 Dash 中,但 Dash搜索仍会显示我们新创建的gedit.desktop文件,这可能会无意中提示如何转义应用程序块。

在此处输入图片说明

为了避免这种情况,我们应该~/.local/share/applications从 Dash 搜索中排除该目录并清除搜索历史。
打开系统设置>“安全和隐私”>“文件和应用程序”(选项卡)。将目录添加~/.local/share/applications到列表中以从搜索中排除。

在此处输入图片说明

3.(不)使用终端/命令行

重定向gedit命令(1)

编辑.desktop文件会阻止从 Dash 使用应用程序,但如果用户知道AltF2组合和运行应用程序的命令,他或她仍然可以启动应用程序,就像使用终端一样。一个不错且易于设置的额外措施是创建(如果尚不存在)目录~/bin并在目录中创建一个小脚本:

cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
Run Code Online (Sandbox Code Playgroud)

使其可执行并以应用程序命名;gedit在这种情况下。

由于~/binis in PATH,运行该命令将调用脚本而不是“真实”gedit应用程序。结果,You are not allowed to use this application将出现相同的 -消息

重定向gedit命令(2)

重定向应用程序命令的另一种方法(效果更有限,请参阅注释)是向.bashrc文件添加别名:

gedit ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

添加行(gedit 示例):

alias gedit='zenity --info --text "You are not allowed to use this application"'
Run Code Online (Sandbox Code Playgroud)

注意:这仅用作额外措施,因为它只会阻止直接从终端调用应用程序。.txt然而,双击(例如)文件仍将打开应用程序。

使终端的使用变得困难或根本不可能

为了防止使用终端,您还可以对gnome-terminal.desktop- 文件执行与 中相同的技巧[1],和/或更改默认快捷键组合以运行终端(系统设置>“键盘”>“快捷方式”>“启动器” )


4. 一个自动创建(或撤销).desktop文件编辑版本的小工具(如 1.)

如果您使用参数blockunblock(您必须使用任何一个运行它)运行下面的脚本,您将看到一个包含(全局)桌面文件的列表,代表您安装的应用程序:

在此处输入图片说明

选择一个,您的应用程序被阻止或解除阻止,取决于您运行它的参数。

笔记

您可能需要注销/登录才能使其工作。

剧本

Exec=gedit %U
Run Code Online (Sandbox Code Playgroud)

将脚本复制到一个空文件中,将其另存为block_apps.py并通过以下任一方式运行它:

python3 /path/to/block_apps.py block
Run Code Online (Sandbox Code Playgroud)

或者

python3 /path/to/block_apps.py unblock
Run Code Online (Sandbox Code Playgroud)

B. 脚本选项

也可以通过在后台运行脚本来阻止某些应用程序。如果运行“禁止的”应用程序之一,脚本将必须采取某些操作。

1. 使用禁用应用程序时操作屏幕的脚本。

下面的脚本提供了一种灵活的方式来阻止用户定义的应用程序。它使用一个简单的命令运行,以禁止的应用程序作为参数,例如(假设您使脚本可执行):

    /path/to/block_apps.py firefox gedit gnome-terminal
Run Code Online (Sandbox Code Playgroud)

像这样阻塞应用程序的优点是它很灵活;即使在一个帐户中,也可以使用不同的设置,只需使用其他应用程序作为参数即可。

它能做什么

通过取消注释其中一行:

# action = "xrandr --output "+screen+" --brightness 0"
Run Code Online (Sandbox Code Playgroud)

或者

# action = "xrandr --output "+screen+" --rotate inverted"
Run Code Online (Sandbox Code Playgroud)

脚本要么:

使屏幕变黑 ( action = "xrandr --output "+screen+" --brightness 0"):

在此处输入图片说明

或者把它颠倒(action = "xrandr --output "+screen+" --rotate inverted"): (
谁说团结不允许把发射器在右边

在此处输入图片说明

剧本

Exec=zenity --info --text 'You are not allowed to use this application'
Run Code Online (Sandbox Code Playgroud)

如何使用

  • 将脚本复制到一个空文件中,另存为block_apps.py,使其可执行
  • 通过命令运行它:

    /path/to/block_apps.py <application_1> <application_2> <application_3> etc...
    
    Run Code Online (Sandbox Code Playgroud)
  • 重要的
    杀死block_apps.py脚本,并恢复“正常”的设置,使用以下(使它成为一个快捷键组合获得)的脚本:

Actions=Window;Document;
Run Code Online (Sandbox Code Playgroud)

与脚本一样,将其复制到一个空文件中,将其另存为kill_blockapps.py,使其可执行并通过以下方式运行:

/path/to/kill_blockapps.py
Run Code Online (Sandbox Code Playgroud)

您可能希望在快捷键下使用这个:选择:系统设置 > “键盘” > “快捷方式” > “自定义快捷方式”。单击“+”并添加如上的命令。