Управлять правами доступа в файловом хранилище на уровне файловой системы
В файловом хранилище с протоколом 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);
- первая тройка символов вида
- первый столбец с именами — имена пользователей, которые являются владельцами папки или файла;
- второй столбец с именами — имена групп, которые являются владельцами папки или файла;
- последний столбец — имена файлов или директорий.
Настроить права доступа для пользователя
Пользователь root
может создавать пользователей и выдавать им права на папки. Если создать пользователя, папку и назначить пользователя владельцем папки, то только у этого пользователя будут полные права на чтение, запись и выполнение файлов в папке.
- Примонтируйте файловое хранилище.
- Создайте пользователя.
- Назначьте пользователя владельцем папки.
- Проверьте права пользователя.
1. Примонтировать файловое хранилище к выделенному или облачному серверу
Процесс монтирования зависит от операционной системы на сервере и протокола файлового хранилища: NFSv4 или CIFS SMBv3.
NFSv4
CIFS SMBv3
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом NFS:
sudo apt install nfs-common
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/nfs
-
Примонтируйте файловое хранилище:
sudo mount -vt nfs "<filestorage_ip_address>:/shares/share-<mountpoint_uuid>" /mnt/nfs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранил ище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
Файловое хранилище работает только с NFS-клиентом версии NFSv4. По умолчанию в ОС Windows поддерживаются NFS-клиенты версий NFSv2 и NFSv3. Подробнее о версиях NFS в статье Обзор NFS документации Microsoft.
Для работы с файловым хранилищем из Windows мы рекомендуем использовать файловое хранилище с протоколом CIFS. Если необходимо подключить хранилище с протоколом NFS, установите и используйте клиент, поддерживающий протокол NFSv4.
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом CIFS:
sudo apt install cifs-utils
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/cifs
-
Примонтируйте файловое хранилище:
sudo mount.cifs -o guest //<filestorage_ip_address>/share-<mountpoint_uuid> /mnt/cifs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
-
Откройте CLI.
-
Примонтируйте файловое хранилище:
net use X: \\<filestorage_ip_address>\share-<mountpoint_uuid>
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка Windows.
2. Создать пользователя
-
Создайте пользователя:
sudo useradd <user_name> -u <user_id>
Укажите:
<user_name>
— имя пользователя;- опционально:
<user_id>
— ID пользователя, например1000
.
Пользователь будет автоматически добавлен в первичную группу (Primary Group) с таким же именем, как у пользователя.
-
Проверьте, что пользователь создан:
grep <user_name> /etc/passwd
Укажите
<user_name>
— имя пользователя.Пример ответа:
firstuser:x:1000:1000::/home/firstuser:/bin/sh
Здесь:
firstuser
— и мя пользователя;- первое значение
1000
— ID пользователя; - второе значение
1000
— ID первичной группы пользователя; /home/firstuser
— домашняя папка пользователя.
3. Назначить пользователя владельцем папки
-
Создайте папку для пользователя:
sudo mkdir -p /mnt/nfs/<directory_name>
Укажите
<directory_name>
— имя папки. -
Назначьте пользователя владельцем папки:
chown <user_name>:<group_name> <directory_name>
Укажите:
<user_name>
— имя пользователя;<group_name>
— имя первичной группы пользователя, совпадает с именем пользователя;<directory_name>
— имя папки.
4. Проверить права пользователя
-
Перейдите в созданную папку:
cd /mnt/nfs/<directory_name>
Укажите
<directory_name>
— имя папки. -
Проверьте, что пользователь является владельцем папки:
ls -al
Пример ответа:
drwxr-xr-x 2 firstuser firstuser 22 Jun 14 15:15 .
drwxrwxrwx 3 root root 37 Jun 14 15:14 ..Здесь у пользователя
firstuser
и первичной группыfirstuser
есть права на чтение, запись и выполнение файлов в папке. Подробнее о формате прав доступа. -
Переключитесь на созданного пользователя:
su <user_name>
Укажите
<user_name>
— имя пользователя. -
Создайте файл от имени пользователя:
touch file.txt
-
Проверьте, что пользователь имеет права доступа к файлу:
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
является владельцем этого файла. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа.
Настроить права доступа для группы
Пользователь root
может создавать вторичные группы пользователей (Secondary Groups) и выдавать группам права на папки. Все пользователи в группе будут обладать одинаковыми правами доступа. Любой пользователь из группы сможет создавать файлы, а также изменять файлы, которые создал другой пользователь группы.
Если вы создали файловое хранилище до 9 августа 2024 года, для включения опции разграничения прав на вторичные группы создайте тикет. После включения опции нужно будет отмонтировать и примонтировать его заново.
- Примонтируйте файловое хранилище.
- Создайте вторичную группу пользователей.
- Назначьте вторичную группу пользователей владельцем папки.
- Проверьте права вторичной группы пользователей.
1. Примонтировать файловое хранилище к выделенному или облачному серверу
Процесс монтирования зависит от операционной системы на сервере и протокола файлового хранилища: NFSv4 или CIFS SMBv3.
NFSv4
CIFS SMBv3
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом NFS:
sudo apt install nfs-common
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/nfs
-
Примонтируйте файловое хранилище:
sudo mount -vt nfs "<filestorage_ip_address>:/shares/share-<mountpoint_uuid>" /mnt/nfs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
Файловое хранилище работает только с NFS-клиентом версии NFSv4. По умолчанию в ОС Windows поддерживаются NFS-клиенты версий NFSv2 и NFSv3. Подробнее о версиях NFS в статье Обзор NFS документации Microsoft.
Для работы с файловым хранилищем из Windows мы рекомендуем использовать файловое хранилище с протоколом CIFS. Если необходимо подключить хранилище с протоколом NFS, установите и используйте клиент, поддерживающий протокол NFSv4.
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом CIFS:
sudo apt install cifs-utils
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/cifs
-
Примонтируйте файловое хранилище:
sudo mount.cifs -o guest //<filestorage_ip_address>/share-<mountpoint_uuid> /mnt/cifs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
-
Откройте CLI.
-
Примонтируйте файловое хранилище:
net use X: \\<filestorage_ip_address>\share-<mountpoint_uuid>
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка Windows.
2. Создать вторичную группу пользователей
-
Создайте вторичную группу (Secondary Group):
sudo groupadd <group_name> -u <group_id>
Укажите:
<group_name>
— имя вторичной группы пользователей;- опционально:
<group_id>
— ID вторичной группы пользователей, например2000
.
-
Добавьте пользователей во вторичную группу:
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
— имена пользователей. Теперь помимо своей первичной группы оба пользователя добавлены в созданную вторичную группу. -
Проверьте, что пользователи добавлены в группу:
grep <group_name> /etc/group
Укажите
<group_name>
— имя вторичной группы пользователей.Пример ответа:
users:x:2002:firstuser,seconduser
Здесь:
users
— имя вторичной группы пользователей;2002
— ID вторичной группы пользователей;firstuser
,seconduser
— имена пользователей.
3. Назначить вторичную группу пользователей владельцем папки
-
Создайте папку для вторичной группы пользователей:
sudo mkdir -p /mnt/nfs/<directory_name>
Укажите
<directory_name>
— имя папки. -
Назначьте группу пользователей владельцем папки:
chown nobody:<group_name> <directory_name>
Укажите:
<group_name>
— имя вторичной группы пользователей;<directory_name>
— имя папки.
-
Установите права чтения, записи и выполнения файлов в папке от имени группы пользователей, которая является владельцем папки (примените setgid):
chmod g+srwx <directory_name>
Укажите
<directory_name>
— имя папки. -
Запретите доступ на запись и выполнение файлов другим пользователям, н е входящим во вторичную группу:
chmod 474 <directory_name>
Укажите
<directory_name>
— имя папки.
4. Проверить права вторичной группы пользователей
-
Проверьте, что вторичная группа пользователей является владельцем папки:
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
. У всех остальных пользователей есть права только на чтение файлов в этой папке. Подробнее о формате прав доступа. -
Переключитесь на пользователя, добавленного во вторичную группу:
su <user_name_1>
Укажите
<user_name_1>
— имя первого пользователя. -
Перейдите в созданную папку:
cd /mnt/nfs/<directory_name>
Укажите
<directory_name>
— имя папки. -
Создайте файл от имени пользователя:
touch file1.txt
-
Проверьте, что пользователь имеет права доступа к файлу:
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
является владельцем этого файла. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа. -
Проверьте, что второй пользователь из вторичной группы может создавать файлы в папке и изменять файлы, которые создал первый пользователь группы. Для этого переключитесь на второго пользователя, добавленного в группу:
su <user_name_2>
Укажите
<user_name_2>
— имя второго пользователя. -
Внесите изменения в файл, который создал первый пользователь:
echo 'anytext' > file1.txt
-
Создайте файл от имени второго пользователя:
touch file2.txt
-
Проверьте, что пользователь имеет права доступа к файлу:
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
— второго. У всех остальных пользователей есть права только на чтение этого файла. Подробнее о формате прав доступа.