Я хочу дать привилегию монтирования пользователям без прав администратора для монтирования дисков с помощью nautilus. Я не хочу, чтобы они давали другим администраторам привилегии. Я также не хочу использовать метод setuid.
Как мне этого добиться? Я использую Ubuntu 12.04.
Я решил эту проблему, изменив политику по умолчанию. Есть три способа добиться этого:
Сначала создайте группу mounter
с помощью этой команды:
sudo addgroup mounter
Затем добавьте пользователей без прав администратора в эту группу. Например, я добавляю не-администратора пользователя normal
в эту группу.
sudo adduser normal mounter
Затем откройте файл политики с правами администратора.
gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
В верхней части файла есть такой раздел:
[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
.
Если вы не хотите создавать другую группу, вы можете просто добавить их имя пользователя (логин) в этот файл.
Откройте файл политики с правами администратора. Вы можете набрать эту команду в терминале или в командной строке, нажав Alt kbd> - F2 kbd>.
gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
Затем добавьте 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
Сохраните файл и выйдите из gedit.
Два вышеупомянутых метода не будут работать для пользователя догадки по умолчанию в Ubuntu. Потому что гостевой пользователь создается динамически при входе в систему и удаляется после выхода из системы.
Чтобы обойти это, вы можете предоставить всем пользователям эту привилегию.
Откройте файл политики с правами администратора. Вы можете набрать эту команду в терминале или в командной строке, нажав Alt kbd> - F2 kbd>.
gksu gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
Затем добавьте 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
Сохраните файл и выйдите из gedit.