Вопрос или проблема
Я установил texlive
, как обычно, в /usr/local/texlive/2025
. При установке я вводил umask 0027
перед каждой командой (./configure
, make
…), надеясь, что в результате файлы будут иметь root
в качестве владельца
и меня
как группу
с одинаковыми правами на доступ, чтение и изменение файлов.
Тем не менее, при обновлении texlive
(sudo tlmgr --self --all --no-auto-remove update
), владелец становится root
, группа
становится root
вместо ME
, и я не могу использовать такие команды, как luatex
, или файлы .sty
и т.д., так как они принадлежат root.
Таким образом, каждый раз при обновлении texlive
через tlmgr
мне приходится вручную менять владельца
и группу
для всех файлов в \textlive\2025
.
Что я могу сделать, чтобы в будущем устанавливать owner=root
и user=ME
для всех файлов, вновь созданных и измененных с помощью sudo tlmgr ...
?
Ответ или решение
Вопрос затрагивает необходимость обеспечения корректных прав доступа и владения файлами и директориями после обновления системы TeX Live, установленной в ‘/usr/local/texlive/2025’. Основная проблема заключается в том, что после обновления через ‘tlmgr’ права доступа и группа меняются на ‘root’, что препятствует пользователю ‘ME’ выполнять необходимые команды и работать с файлами. В дальнейшем рассматривается, как настроить ‘chown’ и ‘chmod’ таким образом, чтобы эти изменения сохранялись и применялись автоматически к новым файлам и директориям системы TeX Live.
Теоретическая часть
Права доступа к файлам и директориям в системе Unix/Linux регулируются тремя основными атрибутами:
- Владелец файла (owner) — пользователь, которому принадлежит файл.
- Группа файла (group) — группа пользователей, которые имеют специфические права на файл.
- Права доступа (permission) — определяют, какие действия (‘читать’, ‘писать’, ‘выполнять’) могут совершать владелец, члены группы и остальные пользователи.
Команды ‘chown’ и ‘chmod’ используются для изменения этих атрибутов. ‘chown’ устанавливает владельца и группу, а ‘chmod’ — права доступа. Однако их применение требуется автоматически настроить на вновь созданные файлы для исключения необходимости ручного вмешательства после каждого обновления.
Пример
В вашей ситуации, вы хотите, чтобы после выполнения ‘sudo tlmgr –self –all –no-auto-remove update’, у всех файлов в ‘/usr/local/texlive/2025’ был владелец root, а группа ME. Для этого можно воспользоваться двумя подходами:
-
Использование ‘acl’ (Access Control Lists):
ACL позволяют установить специфические права доступа для файлов и директорий, выходя за рамки стандартного механизма ‘chmod’. Этот способ полезен, когда необходимо задать сложную структуру прав. -
Настройка ‘setgid’ и ‘umask’:
Директории могут быть настроены таким образом, чтобы любые новые файлы наследовали группу от родительской директории. Это возможно благодаря специальному атрибуту ‘setgid’ (Set Group ID), который задается с помощью ‘chmod g+s’.
Применение
-
Настройка ‘setgid’:
Начнем с того, что вы можете задать ‘setgid’ на директорию ‘/usr/local/texlive/2025’:sudo chown -R root:ME /usr/local/texlive/2025 sudo chmod -R g+s /usr/local/texlive/2025
Это обеспечит, что все новые файлы, созданные в этой директории, будут наследовать группу ME.
-
Использование ‘umask’:
Убедитесь, что ваши сессии или скрипты устанавливают корректный ‘umask’. Поскольку вы уже используете ‘umask 0027’, это значит, что вновь созданные файлы будут иметь права, позволяющие владельцу (root) читать и писать, членам группы (ME) читать, а всем остальным не иметь доступа. -
ACL для файлов:
Вы также можете установить ACL, чтобы здесь описать, какие права должны быть у конкретных пользователей. Однако в большинстве дистрибутивов Linux ACL должны быть вручную включены:sudo setfacl -R -m g:ME:rx /usr/local/texlive/2025
Эта команда добавит для группы ME права на чтение и выполнение.
-
Обновление ‘tlmgr’:
Дополнительно вы можете автоматизировать процесс изменения прав после обновления ‘tlmgr’. Создайте shell-скрипт, который будет пересчитывать права после успешного выполнения ‘tlmgr update’:#!/bin/bash sudo tlmgr --self --all --no-auto-remove update sudo chown -R root:ME /usr/local/texlive/2025 sudo chmod -R 750 /usr/local/texlive/2025
Сохраните скрипт, сделайте его исполняемым и используйте вместо обычного ‘tlmgr’ обновления.
Заключение
Проблема настройки постоянных прав доступа в системах на базе Unix/Linux может быть решена множеством подходов в зависимости от конкретных задач и конфигурации системы. Использование ‘setgid’, корректной ‘umask’ и систем ACL позволят обеспечить автоматическое наследование нужных прав доступа и настройку владельцев файлов для вашего окружения TeX Live, что минимизирует необходимость в ручных изменениях после регулярных обновлений.