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

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

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

我该如何实现这一点?我正在使用 Ubuntu 12.04。

答案1

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

通过赋予群体特权

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

     sudo addgroup mounter
    
  2. 然后将非管理员用户添加到此组。例如,我将非管理员用户添加normal到此组。

     sudo adduser normal mounter
    
  3. 然后以管理员权限打开策略文件。

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
  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
    

    unix-group:mounter;在该部分的第一行后面添加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   
    

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

通过授予特定用户特权

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

  1. 使用管理员权限打开策略文件。您可以在终端中或在 dash 提示符中按Alt-键入此命令F2

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
  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
    
  3. 保存文件并退出 gedit。

向所有用户授予特权

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

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

  1. 使用管理员权限打开策略文件。您可以在终端中或在 dash 提示符中按Alt-键入此命令F2

     gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla 
    
  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
    
  3. 保存文件并退出 gedit。


更新

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

相关内容