укажите параметр монтирования в /etc/fstab (mode=1777)

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

У меня есть следующая строка в моем /etc/fstab:

/dev/mapper/tmp /tmp    ext4    noexec,nodev,nosuid,mode=1777    0    0

Когда я пытаюсь смонтировать /tmp, я получаю следующую ошибку в dmesg:

 EXT4-fs (dm-1): Неизвестный параметр монтирования "mode=1777" или отсутствующее значение

Как я могу указать, что у /tmp будут разрешения 1777? Я пересоздаю (форматирую) файловую систему на /dev/mapper/tmp каждый раз при загрузке, поэтому разрешения не сохраняются после перезагрузки.

Из того, что я нашел в интернете, mode=1777 должен делать свою работу. Но у меня это не работает.

ОБНОВЛЕНИЕ:

Чтобы сделать ситуацию более наглядной, вот скрипт, который я использую:

cryptsetup --key-file /dev/urandom create tmp /dev/sda2

mkfs.ext4 /dev/mapper/tmp > /dev/null 2>&1

Этот скрипт выполняется во время загрузки, после checkroot. Затем позже, когда bootall хочет смонтировать /tmp, он видит запись в fstab и смонтирует /dev/mapper/tmp как /tmp.

Поскольку я создаю устройство LUKS при каждой загрузке, мне также нужно форматировать раздел каждый раз. В отличие от того, что некоторые люди комментировали здесь, разрешения НЕ сохраняются после форматирования. Очевидно.

Если у вас система с включенным systemd, то вы можете использовать tmpfiles. См. man 5 tmpfiles.d для получения подробной информации.

Создайте файл /etc/tmpfiles.d/tmp.conf с таким содержанием:

d /tmp 1777 root root - -

systemd-tmpfiles-setup.service позаботится о ваших разрешениях.

Если вам не нужно большее /tmp, чем может вместить ваша свободная память + своп, вы можете рассмотреть возможность использования tmpfs-основанного /tmp, который на самом деле является диском в оперативной памяти, и использовать место на диске, ранее выделенное для /tmp, для увеличения пространства свопа вместо этого.

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

Вам нужно будет только добавить строку в /etc/fstab подобную этой:

tmpfs  /tmp tmpfs rw,mode=1777 0 0

Максимальный размер по умолчанию составляет 50% вашей свободной памяти. Вы можете использовать опцию size= для указания другого максимального размера, как в процентах от свободной памяти, так и в байтах (с необязательным суффиксом k, m или g для килобайтов/мегабайтов/гигабайтов на основе 1024).

Если вы уже используете зашифрованный своп, который повторно шифруется при каждой перезагрузке, это даст вам возможность эффективно получить аналогичное повторное шифрование /tmp бесплатно, с приростом производительности, если у вас достаточно ОЗУ для размещения содержимого /tmp.

Измените строку в /etc/fstab на:

/dev/mapper/tmp /tmp ext4 noexec,nodev,nosuid 0 0

Затем войдите в систему и выполните:

chmod 1777 /dev/mapper/tmp

При следующей перезагрузке ваша /etc/fstab будет достаточной, так как chmod является постоянным. Вы пытаетесь использовать параметр, предназначенный для монтирования в Windows (fat, ntfs и т.д.) в нативной файловой системе Linux (ext4). Вместо этого вы изменяете
разрешения папки с помощью chmod.

Смотрите пост на форумах Suse.

Вы не можете использовать mode в ext4. Таким образом, вам, возможно, придется монтировать файловую систему, которую вы создаете, другим способом. Вы можете создать раздел ext3 где-то еще.

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

Чтобы задать права доступа 1777 для каталога /tmp, вы не можете использовать опцию mode=1777 в файле /etc/fstab, так как эта опция не поддерживается для файловых систем на базе ext4. Вместо этого вам нужно выполнить изменение прав доступа непосредственно после создания и монтирования файловой системы. Ниже я представлю несколько решений вашей проблемы, а также объясню каждое из них.

1. Изменение прав доступа после монтирования

Наиболее прямолинейный способ установить необходимые права для каталога /tmp — это просто выполнить команду chmod после его монтирования. Вы можете изменить свою настройку в fstab следующим образом:

/dev/mapper/tmp /tmp ext4 noexec,nodev,nosuid 0 0

Затем, после монтирования файловой системы, выполните следующую команду:

sudo chmod 1777 /tmp

Это обеспечит, что /tmp будет иметь права доступа 1777, что позволяет любому пользователю создавать файлы, но они могут удалять только свои собственные файлы.

2. Использование سیستم tmpfiles

Если у вас система, основанная на systemd, вы можете использовать tmpfiles для автоматического задания прав доступа к каталогу /tmp при каждой загрузке. Для этого создайте файл конфигурации:

sudo nano /etc/tmpfiles.d/tmp.conf

Добавьте в него следующую строчку:

d /tmp 1777 root root - -

С помощью systemd-tmpfiles-setup.service при загрузке будут автоматически применены установленные вами права доступа.

3. Рассмотрение использования tmpfs

Если разрешение на использование большего размера для /tmp не является критичным, вы можете рассмотреть возможность использования tmpfs, что представляет собой виртуальную файловую систему в оперативной памяти. Для этого добавьте в свой файл /etc/fstab следующую строку:

tmpfs /tmp tmpfs rw,mode=1777 0 0

Это автоматически будет создавать /tmp как файловую систему в оперативной памяти с правами 1777. tmpfs использует объём оперативной памяти и при необходимости может использовать пространство подкачки, что обеспечивает высокую производительность.

Заключение

В итоге, наиболее рекомендованным и простым решением для задания прав 1777 на каталоге /tmp является использование команды chmod после монтирования файловой системы или внедрение системы tmpfiles при использовании systemd. Если вы цените производительность и объем доступной памяти, использование tmpfs будет оптимальным выбором.

Пожалуйста, пусть это руководство поможет вам правильно настроить права доступа на вашем сервере и избежать проблем с безопасностью и доступом в будущем.

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

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