как примонтировать раздел с параметром -o remount,ro без прав суперпользователя

Вопрос или проблема

Если я root, я могу выполнить команду mount -o remount,ro /data. Однако я не могу сделать это в своей пользовательской сессии без использования sudo. Я пытался изменить мой fstab:

LABEL=DATA   /data        ext4  auto,rw,users  0  1

Я добавил правило polkit:

polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.udisks2.filesystem-mount" ||
         action.id == "org.freedesktop.udisks2.filesystem-unmount" ||
         action.id == "org.freedesktop.udisks2.filesystem-mount-system-internal") &&
        subject.isInGroup("me")) {
        return polkit.Result.YES;
    }
});

Но мне не удалось заставить это работать. Всегда с той же ошибкой: mount /data : must be superuser to use mount

udisksctl mount -b /dev/sdx --options remount,ro

.

Ответ или решение

Для выполнения задачи монтирования раздела с использованием опции -o remount,ro без прав суперпользователя, необходимо учитывать несколько аспектов, касающихся прав доступа и управления системой. Рассмотрим возможные решения на основе предоставленного описания проблемы и применимых технологий.

Анализ и Решения

  1. Проблема привилегий: При попытке выполнить команду mount -o remount,ro /data без использования sudo, мы сталкиваемся с ограничением, что команда требует прав суперпользователя. Это связано с тем, что изменение статуса файловой системы (например, перевод в режим "только для чтения") требует прямого доступа к системным ресурсам.

  2. Изменение fstab: Файл fstab позволяет задавать параметры автоматического монтирования файловых систем. В вашем примере предоставлена строка:

    LABEL=DATA   /data       ext4  auto,rw,users  0  1

    Строка с параметром users разрешает всем пользователям монтировать и размонтировать файловую систему, но не изменять параметры монтирования. Чтобы разрешить изменение параметров монтирования, параметра users может быть недостаточно.

  3. Политики Polkit: Вы добавили правило в Polkit для разрешения определенных действий пользователям, принадлежащим к группе "me". Тем не менее, проблема может заключаться в неправильной идентификации действия или в отсутствии необходимых прав на утилиту mount.

  4. Использование udisksctl: Попытка использовать udisksctl для монтирования с опциями приводит к аналогичному ограничению:

    udisksctl mount -b /dev/sdx --options remount,ro

    Утилита udisksctl также требует определенных привилегий, и возможно, что используемая команда не охватывается текущей политикой Polkit.

Рекомендованные Шаги

  • Обновление Polkit Правил: Убедитесь, что правило Polkit действительно совпадает с требуемым действием. Вы можете использовать журналы системы или отладочные сообщения для диагностики:

    journalctl -xe | grep polkit

    Просмотрите журналы, чтобы определить, какие именно действия отклоняются.

  • Проверка Групповых Прав: Подтвердите, что текущий пользователь действительно включен в соответствующую группу, упомянутую в правило Polkit, используя:

    groups <имя_пользователя>
  • Используйте capsh: Если прямое изменение прав невозможно, рассмотрите использование capsh для предоставления процесса дополнительных привилегий без полного суперпользовательского доступа.

  • Скрипты и Алиасы для Sudo: В возможностях загрузить сценарий оболочки, который запросит пароль superuser один раз для выполнения всех будущих операций, как временное решение, если другие варианты не доступны.

Заключение

Хотя задача монтирования раздела с опцией -o remount,ro без суперпользовательских прав может оказаться сложной, стратегическое использование системных инструментов и политики безопасности, таких как Polkit, может облегчить выполнение этой операции. Предложенные шаги позволят адаптировать систему так, чтобы они соответствовали вашим требованиям безопасности и управляемости.

Оцените материал
Добавить комментарий

Капча загружается...