1

Я относительный новичок в Linux, но мне было интересно, как включить следующее:

  • Есть три пользователя A, B и C
  • Я хочу, чтобы пользователи A и B имели права на чтение, запись и удаление в домашний каталог C?
  • Файлы, созданные C, будут наследовать разрешения

Это будет на сервере Ubuntu.

Любые учебники по разрешениям в Linux тоже будут хороши!

2 ответа2

2

Поскольку вы говорите, что это на сервере Ubuntu, я предполагаю, что вы используете интерфейс командной строки (не графический рабочий стол). Чтобы изменить разрешения для одного каталога, но только для ограниченного числа пользователей, вам необходимо изменить группу, к которой принадлежит этот каталог. Каждый файл (и каталог) принадлежит одному пользователю и одной группе. Допустим, группа называется "суперпользователи" (это может быть что угодно).

  1. Прежде всего, создайте новую группу с помощью команды addgroup superusers . Для этого вам нужно быть пользователем root или запустить команду sudo.
  2. Затем вы изменили бы группу, к которой принадлежит домашний каталог пользователя C (/home/c). Это делается командой chown -R :superusers . Флаг -R гарантирует, что каждый файл в каталоге будет принадлежать группе суперпользователей.
  3. Теперь вам нужно добавить пользователя A и пользователя B в качестве членов этой группы. Это делается путем запуска одной команды для каждого пользователя. Запустите sudo usermod -G superusers -a B Естественно, B - это имя пользователя, которого вы хотите добавить в группу. Флаг -a добавляет суперпользователей групп в список групп, членом которых является пользователь B. Это сделано для того, чтобы мы ничего не испортили. Сделайте это еще раз для пользователя А.

Если вы правильно выполнили эти шаги и у вас все время были привилегии root, вы должны получить желаемый эффект. Пользователь A и B должен иметь возможность писать и читать в домашний каталог пользователя C.

В некоторых случаях файлы могут быть доступны для чтения или записи только владельцу. Это слишком много, чтобы объяснять здесь, но вы можете прочитать о "правах доступа к файлам" и команде chmod если вы хотите продолжить изучение. Хорошее руководство доступно здесь. Это означает, что некоторые отдельные файлы не могут быть прочитаны или записаны группой - только владельцем. Чтобы изменить это, вы должны использовать команду chmod g+rw <file> или chmod g+rw -R /home/C чтобы изменить разрешения для каждого файла в домашнем каталоге пользователя C. Это добавляет права на чтение и запись для группа, которой принадлежит файл, в данном случае группа "суперпользователи", согласно шагу 2 в руководстве.

В качестве дополнения скажу, что это не рекомендуемый способ ведения дел. Обычно вы создаете третий каталог и предоставляете всем трем пользователям доступ на чтение и запись к этому каталогу.

Я не знаю, как обеспечить, чтобы каждый файл, созданный в этом каталоге, имел одинаковые права доступа для пользователей и групп. Вы можете добавить разрешения по умолчанию с помощью команды umask , но это не изменит владельца по умолчанию. Я на самом деле сомневаюсь, что это выполнимо, и на самом деле против стандартов * nix, но было бы здорово, если бы кто-то мог исправить меня в этом.

2

ACL - это новый и интересный способ:

Отредактировано для добавления групповых ACL. Я не могу поверить, что я действительно забыл это.

  1. Включите ACL для файловой системы.

    • mount -o remount,acl точка монтирования

      где точка монтирования может быть / или /home зависимости от того, находятся ли домашние каталоги в отдельном разделе.

    • Добавьте опцию acl к соответствующей записи в /etc/fstab

  2. Создайте группу superusers и заполните ее пользователями. (Конечно, выберите более подходящее имя.)

    groupadd superusers
    gpasswd -M userA,userB superusers
    

    В качестве альтернативы, просто используйте группу пользователей userC . (В большинстве дистрибутивов Linux пользователь userC будет автоматически находиться в своей собственной группе, также называемой userC .)

  3. Обновите списки ACL для файлов:

    setfacl -R -m group:superusers:rwX,default:group:superusers:rwX ~userC
    

    где superusers - группа, созданная ранее, а ~userC - домашний каталог пользователя C.

    Права user:* и group:* будут применяться к существующим объектам, а права по default:* к вновь созданным. -R для рекурсивного .


Недостатком ACL-списков POSIX является то, что у каждого файла есть их копия - нет наследования, как в Windows, поэтому, если вы хотите разрешить или запретить кому-либо доступ, вам придется редактировать ACL каждого затронутого файла, тогда как метод cmbrnt позволяет вам просто сделать groupmod . Редактировать: добавление групп в список ACL исправляет это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .