Какие права доступа должны быть установлены для общего каталога в Linux

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

Я борюсь с установкой правильных разрешений для файлов
пример

Я хотел бы, чтобы user1 и user2 имели доступ к своим директориям, плюс общий доступ, а модератор должен иметь доступ ко всем этим директориям. Я установил разрешения для приватных директорий (chmod 700 для директории модератора, user1 и user2) user1, user2 и модератор находятся в одной группе: shared

Я думал, что будет хорошей идеей установить полные групповые разрешения для общей директории, изменить основную группу на root и добавить пользователя модератора в нее, но, похоже, это не сработало

Можно ли установить эти разрешения простым способом?

Одно из предложений может быть следующим:

  • Создать непривилегированную группу для использования в качестве основной группы для всех учетных записей пользователей:
    # groupadd users
  • Ассоциировать user1, user2 и модератора с этой группой. Возможно, вам придется напрямую отредактировать файл паролей:
    # usermod -g users user1
    # usermod -g users user2 ...
  • Изменить группу всех директорий в примере, чтобы они были ‘в собственности’ этой группы:
    # chgrp -R users * # Текущая рабочая директория должна быть основной директорией для всех
                       # директорий в вашем примере
  • Установить биты ‘ограниченного удаления’ и ‘setgid’ для ‘shared’ директории и разрешить пользователю и группе доступ на чтение, запись и выполнение:
    # chmod 3775 shared

Все вышеперечисленное даст всем пользователям, входящим в группу ‘users’, возможность создавать файлы в общей директории, не имея возможности удалять файлы, которые они не создали. Альтернативным вариантом будет использование вторичной группы, и пользователи будут менять свою групповую сессию, когда захотят записывать в ‘shared’ директорию. Надеюсь, это поможет, результаты могут отличаться, стандартные отказы применяются 🙂

Включая комментарии к вопросу, ваша текущая ситуация, похоже, выглядит так:

drwx------ 2 moderator moderator ... moderator  # изменений не требуется
drwxrwx--- 2 root      shared    ... shared     # требуется разрешение setgid
drwx------ 2 user1     user1     ... user1      # изменений не требуется
drwx------ 2 user2     user2     ... user2      # изменений не требуется

Таким образом, принимая во внимание, что ваша стандартная umask для пользователей установлена на 007 или 002, чтобы разрешить полный доступ к группе, вам нужно только установить бит setgid для директории shared. Это приведет к тому, что все новые файлы, созданные в этой директории, автоматически будут назначены группе, владеющей директорием.

Вы можете сделать это двумя способами:

chmod g+s shared

или

chmod 2770 shared   # 2770 = разрешения drwxrws---

Однако, если стандартная umask ваших пользователей равна 022 или 077 (не разрешая запись для группы), вам может также понадобиться добавить стандартный ACL в директорию:

setfacl -m d:g:shared:rwX shared

После этого разрешения директории shared будут отображаться как drwxrws---+, знак плюс указывая на наличие списка контроля доступа. Вы можете просмотреть его с помощью getfacl shared; ACL будет автоматически унаследована любыми создаваемыми поддиректориями и обеспечит, что группе shared будет предоставлен полный доступ к любым новым файлам или директориям внутри.

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

Для настройки общих прав доступа к директориям в Linux, вам нужно будет учитывать несколько аспектов, чтобы гарантировать, что пользователи могут работать с директориями, не затрагивая приватные данные других пользователей. Ваша цель состоит в том, чтобы пользователи user1, user2 имели доступ к своим собственным директориям и к общей директории, а модератор мог получать доступ ко всем этим директориям.

  1. Создание группы пользователей:
    Создайте группу, которая будет использоваться для совместного доступа:

    sudo groupadd shared
  2. Назначение пользователей в группу:
    Добавьте пользователей user1, user2 и moderator в группу shared:

    sudo usermod -aG shared user1
    sudo usermod -aG shared user2
    sudo usermod -aG shared moderator
  3. Изменение владельца директории:
    Убедитесь, что директория shared принадлежит группе shared:

    sudo chgrp shared /путь/к/директории/shared
  4. Настройка прав доступа для общей директории:
    Установите права доступа для директории shared с помощью команды:

    sudo chmod 2770 /путь/к/директории/shared

    Здесь "2" устанавливает бит setgid, который обеспечивает наследование группы для новых файлов и поддиректорий, созданных в этой директории.

  5. Настройка прав доступа к приватным директориям:
    Для приватных директорий user1 и user2, права доступа могут оставаться следующими:

    chmod 700 /путь/к/директории/user1
    chmod 700 /путь/к/директории/user2

    А для директории moderator:

    chmod 700 /путь/к/директории/moderator
  6. (Опционально) Использование ACL для более тонкой настройки прав доступа:
    Если вашу систему настройки умаски (umask) необходимо изменить, вы можете рассмотреть возможность использования списков управления доступом (ACL). Например, чтобы дополнительно предоставить группе shared права на запись и выполнение в директории, можно использовать:

    sudo setfacl -m d:g:shared:rwX /путь/к/директории/shared

Эти шаги обеспечат, что:

  • user1 и user2 будут иметь полный доступ только к своим директориям и правом на чтение/запись в общей директории.
  • moderator будет иметь доступ ко всем директориям.
  • Все новые файлы и поддиректории, созданные в директории shared, будут иметь по умолчанию права для группы shared.

Для проверки итоговых прав доступа используйте команду ls -l для просмотра прав доступа к директориям. Убедитесь, что директория shared отображается как drwxrws---, что показывает, что бит setgid установлен, а также что у группы есть права на запись, чтение и выполнение.

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

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