Перейти к основному содержимому
Управлять правами доступа в файловом хранилище на уровне файловой системы
Последнее изменение:

Управлять правами доступа в файловом хранилище на уровне файловой системы

к сведению

В этой инструкции описаны настройки прав доступа к файловому хранилищу для облачного сервера с ОС на базе Linux.

В файловом хранилище с протоколом NFSv4 можно управлять правами доступа к файлам и папкам на уровне файловой системы.

Принцип работы

Файлы и папки в файловом хранилище с протоколом NFSv4 поддерживают стандартное разграничение прав доступа как в Unix-системах. Доступ на чтение, запись и выполнение файлов реализован через Identity Mapping (IDM) — права доступа проверяются на основе ID пользователя и ID группы пользователей.

Группа пользователей — это пользователи с одинаковыми правами доступа. Группы делятся на два типа:

  • первичная группа (Primary Group) — группа, которую операционная система присваивает пользователю;
  • вторичная группа (Secondary Group) — одна или несколько групп, к которым также принадлежит пользователь.

Каждого пользователя можно добавить максимум в 16 групп: в одну первичную и 15 вторичных групп.

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

Формат прав доступа

Пример прав доступа:

drwxrwxrwx 3 root root   21 Jun 13 14:00 .
drwxr-xr-x 4 root root 4096 Jun 13 13:44 ..
drwxr-xr-x 2 root root 6 Jun 13 14:00 directory
-rw-rw-r-- 1 first first 0 Jun 13 09:45 file.txt

Здесь:

  • первый символ:
    • d — флаг директории;
    • - — флаг файла;
  • тройки символов вида rwx:
    • первая тройка символов вида rwx — права пользователя;
    • вторая тройка символов вида rwx — права группы;
    • третья тройка символов вида rwx— права всех остальных, кто не является пользователем или не входит в группу;
    • r — права на чтение (read);
    • w — права на запись (write);
    • x — права на выполнение (execute);
  • первый столбец с именами — имена пользователей, которые являются владельцами папки или файла;
  • второй столбец с именами — имена групп, которые являются владельцами папки или файла;
  • последний столбец — имена файлов или директорий.

Настроить права доступа для пользователя

к сведению

В этой инструкции описана настройка прав доступа пользователей к файловому хранилищу с протоколом NFSv4.

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

  1. Примонтируйте файловое хранилище.

  2. Создайте пользователя.

  3. Назначьте пользователя владельцем папки.

  4. Проверьте права пользователя.

1. Примонтировать файловое хранилище к серверу

  1. Подключитесь к облачному серверу или выделенному серверу.

  2. Установите пакет для работы с протоколом NFS:

    sudo apt install nfs-common
  3. Создайте папку для монтирования хранилища:

    sudo mkdir -p /mnt/nfs
  4. Примонтируйте файловое хранилище:

    sudo mount -vt nfs "<filestorage_ip_address>:/shares/share-<mountpoint_uuid>" /mnt/nfs

    Укажите:

    • <filestorage_ip_address> — IP-адрес файлового хранилища. Можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыФайловое хранилище → страница хранилища → вкладка Настройки → поле IP;
    • <mountpoint_uuid> — ID точки монтирования. Можно посмотреть в панели управления: в верхнем меню нажмите Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.

2. Создать пользователя

  1. Создайте пользователя:

    sudo useradd <user_name> -u <user_id>

    Укажите:

    • <user_name> — имя пользователя;
    • опционально: <user_id> — ID пользователя, например 1000.

    Пользователь будет автоматически добавлен в первичную группу (Primary Group) с таким же именем, как у пользователя.

  2. Проверьте, что пользователь создан:

    grep <user_name> /etc/passwd

    Укажите <user_name> — имя пользователя.

    Пример ответа:

    firstuser:x:1000:1000::/home/firstuser:/bin/sh

    Здесь:

    • firstuser — имя пользователя;
    • первое значение 1000 — ID пользователя;
    • второе значение 1000 — ID первичной группы пользователя;
    • /home/firstuser — домашняя папка пользователя.

3. Назначить пользователя владельцем папки

  1. Создайте папку для пользователя:

    sudo mkdir -p /mnt/nfs/<directory_name>

    Укажите <directory_name> — имя папки.

  2. Назначьте пользователя владельцем папки:

    chown <user_name>:<group_name> <directory_name>

    Укажите:

    • <user_name> — имя пользователя;
    • <group_name> — имя первичной группы пользователя, совпадает с именем пользователя;
    • <directory_name> — имя папки.

4. Проверить права пользователя

  1. Перейдите в созданную папку:

    cd /mnt/nfs/<directory_name>

    Укажите <directory_name> — имя папки.

  2. Проверьте, что пользователь является владельцем папки:

    ls -al

    Пример ответа:

    drwxr-xr-x 2 firstuser firstuser 22 Jun 14 15:15 .
    drwxrwxrwx 3 root root 37 Jun 14 15:14 ..

    Здесь у пользователя firstuser и первичной группы firstuser есть права на чтение, запись и выполнение файлов в папке. Подробнее о формате прав доступа.

  3. Переключитесь на созданного пользователя:

    su <user_name>

    Укажите <user_name> — имя пользователя.

  4. Создайте файл от имени пользователя:

    touch file.txt
  5. Проверьте, что пользователь имеет права доступа к файлу:

    ls -al

    Пример ответа:

    drwxr-xr-x 2 firstuser firstuser 22 Jun 14 15:15 .
    drwxrwxrwx 3 root root 37 Jun 14 15:14 ..
    -rw-rw-r-- 1 firstuser firstuser 0 Jun 14 15:15 file.txt

    Здесь у пользователя firstuser и первичной группы firstuser есть права на чтение и запись файла file.txt. Пользователь firstuser является владельцем этого файла. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа.

Настроить права доступа для группы

к сведению

Если вы создали файловое хранилище до 9 августа 2024 года, для включения опции разграничения прав на вторичные группы создайте тикет. После включения опции нужно будет отмонтировать и примонтировать его заново. В этой инструкции описана настройка прав доступа для группы к файловому хранилищу с протоколом NFSv4.

Пользователь root может создавать вторичные группы пользователей (Secondary Groups) и выдавать группам права на папки. Все пользователи в группе будут обладать одинаковыми правами доступа. Любой пользователь из группы сможет создавать файлы, а также изменять файлы, которые создал другой пользователь группы.

  1. Примонтируйте файловое хранилище.

  2. Создайте вторичную группу пользователей.

  3. Назначьте вторичную группу пользователей владельцем папки.

  4. Проверьте права вторичной группы пользователей.

1. Примонтировать файловое хранилище к серверу

  1. Подключитесь к облачному серверу или выделенному серверу.

  2. Установите пакет для работы с протоколом NFS:

    sudo apt install nfs-common
  3. Создайте папку для монтирования хранилища:

    sudo mkdir -p /mnt/nfs
  4. Примонтируйте файловое хранилище:

    sudo mount -vt nfs "<filestorage_ip_address>:/shares/share-<mountpoint_uuid>" /mnt/nfs

    Укажите:

    • <filestorage_ip_address> — IP-адрес файлового хранилища. Можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыФайловое хранилище → страница хранилища → вкладка Настройки → поле IP;
    • <mountpoint_uuid> — ID точки монтирования. Можно посмотреть в панели управления: в верхнем меню нажмите Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.

2. Создать вторичную группу пользователей

  1. Создайте вторичную группу (Secondary Group):

    sudo groupadd <group_name> -u <group_id>

    Укажите:

    • <group_name> — имя вторичной группы пользователей;
    • опционально: <group_id> — ID вторичной группы пользователей, например 2000.
  2. Добавьте пользователей во вторичную группу:

    sudo gpasswd -a <user_name_1> <group_name>
    sudo gpasswd -a <user_name_2> <group_name>

    Укажите:

    • <user_name_1> и <user_name_2> — имена пользователей;
    • <group_name> — имя вторичной группы пользователей.

    Пример ответа:

    Adding user firstuser to group users
    Adding user seconduser to group users

    Здесь firstuser и seconduser — имена пользователей. Теперь помимо своей первичной группы оба пользователя добавлены в созданную вторичную группу.

  3. Проверьте, что пользователи добавлены в группу:

    grep <group_name> /etc/group

    Укажите <group_name> — имя вторичной группы пользователей.

    Пример ответа:

    users:x:2002:firstuser,seconduser

    Здесь:

    • users — имя вторичной группы пользователей;
    • 2002 — ID вторичной группы пользователей;
    • firstuser, seconduser — имена пользователей.

3. Назначить вторичную группу пользователей владельцем папки

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

    sudo mkdir -p /mnt/nfs/<directory_name>

    Укажите <directory_name> — имя папки.

  2. Назначьте группу пользователей владельцем папки:

    chown nobody:<group_name> <directory_name>

    Укажите:

    • <group_name> — имя вторичной группы пользователей;
    • <directory_name> — имя папки.
  3. Установите права чтения, записи и выполнения файлов в папке от имени группы пользователей, которая является владельцем папки (примените setgid):

    chmod g+srwx <directory_name>

    Укажите <directory_name> — имя папки.

  4. Запретите доступ на запись и выполнение файлов другим пользователям, не входящим во вторичную группу:

    chmod 474 <directory_name>

    Укажите <directory_name> — имя папки.

4. Проверить права вторичной группы пользователей

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

    ls -al

    Пример ответа:

    drwxr-xr-x 3 root   root  4096 Jun 14 16:10 .
    drwxr-xr-x 3 root root 4096 Jun 14 16:07 ..
    dr--rwsr-- 2 nobody users 4096 Jun 14 16:10 directory

    Здесь у вторичной группы пользователей users есть права на чтение, запись и выполнение файлов в папке directory. У всех остальных пользователей есть права только на чтение файлов в этой папке. Подробнее о формате прав доступа.

  2. Переключитесь на пользователя, добавленного во вторичную группу:

    su <user_name_1>

    Укажите <user_name_1> — имя первого пользователя.

  3. Перейдите в созданную папку:

    cd /mnt/nfs/<directory_name>

    Укажите <directory_name> — имя папки.

  4. Создайте файл от имени пользователя:

    touch file1.txt
  5. Проверьте, что пользователь имеет права доступа к файлу:

    ls -al

    Пример ответа:

    dr--rwsr-- 2 nobody    users 4096 Jun 14 16:13 .
    drwxr-xr-x 3 root root 4096 Jun 14 16:10 ..
    -rw-rw-r-- 1 firstuser users 0 Jun 14 16:13 file1.txt

    Здесь у пользователя firstuser и вторичной группы users есть права на чтение и запись файла file1.txt. Пользователь firstuser является владельцем этого файла. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа.

  6. Проверьте, что второй пользователь из вторичной группы может создавать файлы в папке и изменять файлы, которые создал первый пользователь группы. Для этого переключитесь на второго пользователя, добавленного в группу:

    su <user_name_2>

    Укажите <user_name_2> — имя второго пользователя.

  7. Внесите изменения в файл, который создал первый пользователь:

    echo 'anytext' > file1.txt
  8. Создайте файл от имени второго пользователя:

    touch file2.txt
  9. Проверьте, что пользователь имеет права доступа к файлу:

    ls -al

    Пример ответа:

    dr--rwsr-- 2 nobody     users 4096 Jun 14 16:19 .
    drwxr-xr-x 3 root root 4096 Jun 14 16:10 ..
    -rw-rw-r-- 1 firstuser users 4 Jun 14 16:19 file1.txt
    -rw-rw-r-- 1 seconduser users 0 Jun 14 16:19 file2.txt

    Здесь у пользователя seconduser и вторичной группы users есть права на чтение и запись файлов file1.txt и file2.txt. Пользователь firstuser является владельцем первого файла, а seconduser — второго. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа.