Как я могу установить chown и chmod на постоянной основе, включая новые файлы?

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

Я установил 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 регулируются тремя основными атрибутами:

  1. Владелец файла (owner) — пользователь, которому принадлежит файл.
  2. Группа файла (group) — группа пользователей, которые имеют специфические права на файл.
  3. Права доступа (permission) — определяют, какие действия (‘читать’, ‘писать’, ‘выполнять’) могут совершать владелец, члены группы и остальные пользователи.

Команды ‘chown’ и ‘chmod’ используются для изменения этих атрибутов. ‘chown’ устанавливает владельца и группу, а ‘chmod’ — права доступа. Однако их применение требуется автоматически настроить на вновь созданные файлы для исключения необходимости ручного вмешательства после каждого обновления.

Пример

В вашей ситуации, вы хотите, чтобы после выполнения ‘sudo tlmgr –self –all –no-auto-remove update’, у всех файлов в ‘/usr/local/texlive/2025’ был владелец root, а группа ME. Для этого можно воспользоваться двумя подходами:

  1. Использование ‘acl’ (Access Control Lists):
    ACL позволяют установить специфические права доступа для файлов и директорий, выходя за рамки стандартного механизма ‘chmod’. Этот способ полезен, когда необходимо задать сложную структуру прав.

  2. Настройка ‘setgid’ и ‘umask’:
    Директории могут быть настроены таким образом, чтобы любые новые файлы наследовали группу от родительской директории. Это возможно благодаря специальному атрибуту ‘setgid’ (Set Group ID), который задается с помощью ‘chmod g+s’.

Применение

  1. Настройка ‘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.

  2. Использование ‘umask’:
    Убедитесь, что ваши сессии или скрипты устанавливают корректный ‘umask’. Поскольку вы уже используете ‘umask 0027’, это значит, что вновь созданные файлы будут иметь права, позволяющие владельцу (root) читать и писать, членам группы (ME) читать, а всем остальным не иметь доступа.

  3. ACL для файлов:
    Вы также можете установить ACL, чтобы здесь описать, какие права должны быть у конкретных пользователей. Однако в большинстве дистрибутивов Linux ACL должны быть вручную включены:

    sudo setfacl -R -m g:ME:rx /usr/local/texlive/2025

    Эта команда добавит для группы ME права на чтение и выполнение.

  4. Обновление ‘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, что минимизирует необходимость в ручных изменениях после регулярных обновлений.

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

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