Мой план по организации доступа к TrueNAS SCALE по протоколу FTP «накрылся медным тазом». А если быть точнее: не получается использовать FTP для копирования файлов на сервер для последующего использования другими приложениями, такими как Plex, к примеру. Вся проблема в правах доступа. В Linux системах права доступа к объектам можно определить в виде трёх триад: первая триада пользователя, вторая группы, третья — для всех остальных. Каждая триада определяет разрешение на чтение, запись, выполнение. Например: rwx r-x r-x означает, что пользователь имеет все права, а группа и все остальные только чтение и выполнение, но не запись. Подробнее почитать можно в статье Права доступа Unix, SUID, SGID, Sticky биты на wiki Ubuntu. Так вот, при создании набора данных (DataSet) в качестве пользователя назначается root, и в качестве группы одноимённая группа root, а права как раз rwx r-x r-x, т.е. пользователь может всё, а группа и все остальные читать и выполнять. Это с одной стороны немного странно — предоставлять всем подряд доступ на чтение, но с другой стороны речь ведь про доступ внутри сервера и нужно же как-то другим пользователям и группам (не root’у) читать файлы. Поэтому как есть — так есть.
С FTP совсем другая история: файлы загруженные на сервер будут принадлежать тому пользователю, который их загрузил (что как бы логично), а права доступа для этих файлов определяются в настройках сервиса FTP в меню System Settings -> Services -> FTP. По умолчанию это rw- для пользователя и всё! Можно добавить rw- для группы. Дать право на исполнение как для пользователя, так и для группы у меня не получилось. Может быть так сделано из соображений безопасности..? А вот про все остальные там вообще ни слова. Другими словами: файлы загруженные по FTP доступны только тому пользователю, который их загрузил. Это кажется логичным, если говорить об организации доступа к домашним каталогам пользователей, но совершенно не годится для загрузки файлов для совместного (многопользовательского) использования. Сюда же относится и создание общей папки для обмена файлами между пользователями, т.к. придётся «изобретать велосипед» через общую основную (Primary) группу.
Раз с FTP не срослось — нужно искать альтернативу, коих осталось 2: WebDAV и SMB, И поскольку в большинстве материалов в «интернетах» предлагают использовать SMB — на нём и остановлюсь. Хорошая новость в том, что использование SMB даёт достаточно гибкие возможности, за счёт разделения пользователей с их правами доступа от непосредственно общего ресурса. По сути создание общего ресурса определяет в первую очередь имя, используя которое можно обратиться к определённому набору данных или каталогу на сервере, а во вторую — права доступа. Имя ресурса должно быть уникально в пределах сервера, а также отличаться от зарезервированных слов global, homes, and printers. С правами всё несколько сложнее: наряду с использованием системы прав доступа Linux (User/Group/Others) также предлагается использовать список управления доступом (Access Control List), поскольку только ACL позволяет гибко раздавать права, аналогично подходу используемому в WINDOWS. Такой подход позволяет за счёт системы прав доступа Linux для каждого объекта определить в качестве владельца пользователя и группу, а также определить права доступа для пользователя, группы и всех остальных. Если этого недостаточно — ACL позволяет доопределить права на объект для других пользователей и групп. При этом вновь созданным объектам, как и в случае с FTP, в качестве владельца назначается пользователь создавший объект. Маска прав доступа для созданных объектов определяется в настройках службы SMB свойствами File Mask и Directory Mask с восьмиричными значениями по умолчанию 0666 и 0777 соответственно. Т.е. владелец, его группа и все остальные имеют права чтения и записи для созданных файлов, и все права для каталогов.
Что ж — перейдём к практической части: официальная документация в секции 11.5.2. Configuring Authenticated Access With Local Users рекомендует создать отдельную группу local_smb_users
для пользователей с общим доступом через SMB. Я создам smb-users. Далее для требуемых наборов данных через ACL выдать созданной группе необходимые права. Редактировать ACL также можно на вкладке управления общим доступом SMB, выбрав нужный элемент и нажав три точки справа, а затем Edit Filesystem ACL. Всё вроде выглядит складно, но есть одна проблема: TrueNAS-SCALE-21.02-ALPHA.1 пока ещё не поддерживает ACL. Ну нет и не надо — пойдём другим путём: для набора данных в качестве группы-владельца укажу созданную ранее smb-users и тогда все пользователи этой группы будут иметь доступ к набору данных. И тогда чтобы вся эта конструкция заработала останется только добавить пользователя в группу.
Кстати о пользователях: чтобы немножко упростить себе жизнь в системе WINDOWS можно создать пользователя с тем же именем, что и пользователь винды. Как узнать имя? — попробовать подключиться к общему ресурсу и в появившемся окне будет видно имя учётной записи. С флагом Microsoft Account в настройках учётной записи сервера пока не разобрался — не понятно есть от него какой-то толк или нет.