允许非管理员用户通过 nautilus 挂载驱动器

Anw*_*war 7 administration nautilus mount privileges

我想为非管理员用户提供挂载权限以通过 nautilus 挂载驱动器。我不希望他们给予其他管理员权限。我也不想使用 setuid 方法。

我怎样才能做到这一点?我正在使用 Ubuntu 12.04。

Anw*_*war 9

我通过更改默认策略解决了这个问题。有以下三种方法可以实现:

通过向组授予特权

  1. 首先mounter使用以下命令创建一个组:

     sudo addgroup mounter
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后将非管理员用户添加到该组。例如,我将非管理员用户添加normal到该组。

     sudo adduser normal mounter
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后以管理员权限打开策略文件。

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在文件的顶部有一个像这样的部分:

    [Mounting, checking, etc. of internal drives]
    Identity=unix-group:admin;unix-group:sudo;
    Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*
    ResultActive=yes
    
    Run Code Online (Sandbox Code Playgroud)

    在该部分的第一行添加unix-group:mounter;after Identity=unix-group:admin;unix-group:sudo;。更改后的部分将如下所示

    [Mounting, checking, etc. of internal drives]
    Identity=unix-group:admin;unix-group:sudo;unix-group:mounter;
    Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*
    ResultActive=yes   
    
    Run Code Online (Sandbox Code Playgroud)

就是这样。现在,非管理员用户无需管理员密码即可安装驱动器。他们只需要添加到mounter组中。注意将用户添加novice到组中mounter,执行以下命令:sudo adduser novice mounter

通过授予特定用户权限

如果您不想创建另一个组,您可以在该文件中添加他们的用户名(登录名)。

  1. 以管理员权限打开策略文件。您可以通过按Alt-在终端或破折号提示中键入此命令F2

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后在部分unix-user:<login-name>中的Identity行处添加[Mounting, checking, etc. of internal drives]请记住使用用户的登录名,而不是文字 . . 例如,如果您想授予用户tester此权限,该行将如下所示

    [Mounting, checking, etc. of internal drives]
    Identity=unix-group:admin;unix-group:sudo;unix-user:tester;
    Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*
    ResultActive=yes
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存文件并退出 gedit。

通过授予所有用户权限

以上两种方法对 Ubuntu 中的默认猜测用户不起作用。因为,来宾用户是在登录时动态创建的,并在注销后被删除。

要解决此问题,您可以授予所有用户此权限。

  1. 以管理员权限打开策略文件。您可以通过按Alt-在终端或破折号提示中键入此命令F2

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后在部分unix-user:*中的Identity行处添加[Mounting, checking, etc. of internal drives]。修改后,该部分将如下所示:

    [Mounting, checking, etc. of internal drives]
    Identity=unix-group:admin;unix-group:sudo;unix-user:*;
    Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*
    ResultActive=yes
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存文件并退出 gedit。


更新

  1. 在 14.04 中测试。它按照答案中描述的方式工作