Вопрос или проблема
У меня немного особый случай.
После загрузки системы мне нужно, чтобы один из дисков имел неформатированный раздел, доступный для записи всем пользователям.
Причина: приложение строит свою собственную файловую систему на этом разделе.
Проблема:
Я составил скрипт systemd, который выполняет chmod a+rw /dev/$partition_name
.
Если я проверяю права доступа с помощью stat
или ls -l
, “доступ для других” выглядит нормально
например, это brw-rw-rw-
.
ОДНАКО, как только система загружается, права доступа изменяются на:
brw-rw---
.
Итак, вопросы:
- почему права доступа продолжают меняться?
- как это правильно сделать?
Ответ или решение
Для того чтобы сделать неформатированный и не смонтированный раздел доступным для записи всеми пользователями при загрузке системы, необходимо учитывать несколько факторов. Рассмотрим каждый из ваших вопросов и предоставим решение:
1. Почему права доступа изменяются?
Проблема с изменением прав доступа на устройстве (например, на /dev/$partition_name
) возникает из-за того, что права доступа на блочные устройства управляются ядром операционной системы. Как только устройство инициализируется, система может переопределить ранее установленные права доступа, возвращая их к значениям, определённым в udev
правилах или других системных настройках.
2. Как правильно сделать раздел доступным для записи всеми пользователями?
Для достижения вашей цели рекомендуется использовать udev
правила для задания прав на устройство при его создании. Вот шаги, которые вам следует выполнить:
-
Создайте файл правил
udev
:Создайте новый файл в директории
/etc/udev/rules.d/
с именем, например,99-my-partition.rules
.sudo nano /etc/udev/rules.d/99-my-partition.rules
-
Добавьте правило для изменения прав доступа:
Вставьте в этот файл следующее правило (замените
sdXn
на ваш конкретный раздел):KERNEL=="sdXn", MODE="0666"
Это правило устанавливает права доступа на устройство для всех пользователей (rw-rw-rw-).
-
Перезагрузите
udev
:После сохранения файла вам нужно перезагрузить службы
udev
, чтобы изменения вступили в силу:sudo udevadm control --reload-rules sudo udevadm trigger
-
Перезагрузите систему:
Чтобы убедиться, что правила применены правильно, перезапустите компьютер.
Дополнительные рекомендации:
- Проверьте правила
udev
: Убедитесь, что ваше правило не конфликтует с другими правиламиudev
, которые могут управлять тем же устройством. - Логирование: Включите логирование для
udev
, чтобы отслеживать, какие правила применяются при инициализации устройства. Это можно сделать, добавивKERNEL=="sdXn", OPTIONS+="debug"
к вашему правилу.
Заключение
Следуя вышеизложенным шагам, вы сможете установить необходимые права доступа на раздел, чтобы он был доступен для записи всеми пользователями сразу после загрузки системы. Использование udev
является надёжным способом для управления правами доступа к устройствам в Linux.