Можно использовать команду zfs allow для предоставления разрешений на наборы данных ZFS пользователям, отличным от root, следующими способами:
Индивидуальные разрешения можно предоставлять пользователю, группе или всем.
Группы индивидуальных разрешений можно предоставлять как наборы разрешений пользователю, группе или всем.
Разрешения можно предоставлять локально, на текущий набор данных или на все дочерние наборы для текущего набора данных.
В приведенной ниже таблице описаны операции, которые можно делегировать, и все зависимые разрешения, необходимые для выполнения делегированных операций.
Разрешение (подкоманда) |
Описание |
Зависимости |
---|---|---|
allow |
Возможность предоставлять имеющиеся у вас разрешения другому пользователю. |
Вы должны также обладать разрешением, которое предоставляете. |
clone |
Возможность клонировать все моментальные снимки этого набора данных. |
Нужно также иметь разрешение на выполнение операций create и mount в исходной файловой системе. |
create |
Возможность создавать дочерние наборы данных. |
Нужно также иметь разрешение на выполнение операции монтирования mount. |
destroy |
Возможность удалить набор данных. |
Нужно также иметь разрешение на выполнение операции монтирования mount. |
mount |
Возможность монтировать и размонтировать набор данных, а также создавать и удалять ссылки на устройство тома. | |
promote |
Возможность заменить клон набором данных. |
Нужно также иметь разрешение на выполнение операций mount и promote в исходной файловой системе. |
receive |
Возможность создания дочерней файловой системы с помощью команды zfs receive. |
Необходимо также иметь возможность выполнения операций mount и create. |
rename |
Возможность переименовать набор данных. |
Нужно также иметь разрешение на выполнение операций create и mount в новом родительском наборе данных. |
rollback |
Возможность отката моментального снимка. |
Нужно также иметь разрешение на выполнение операции монтирования mount. |
send |
Возможность посылать потоковое представление моментального снимка. | |
share |
Возможность предоставлять и отключать общий доступ к набору данных. | |
snapshot |
Возможность создавать моментальный снимок набора данных. |
Пользователь может делегировать следующий набор разрешений (которые могут быть ограничены разрешением только для доступа, чтения или изменения):
groupquota
groupused
userprop
userquota
userused
Кроме того, можно делегировать следующие свойства ZFS пользователям, отличным от root:
aclinherit
aclmode
atime
canmount
casesensitivity
checksum
compression
copies
devices
exec
mountpoint
nbmand
normalization
primarycache
quota
readonly
recordsize
refreservation
reservation
secondarycache
setuid
shareiscsi
sharenfs
sharesmb
snapdir
utf8only
version
volblocksize
volsize
vscan
xattr
zoned
Некоторые из этих свойств можно указать только в момент создания набора данных. Описание этих свойств ZFS приведено в разделе Введение в свойства ZFS.
Команда zfs allow имеет следующий синтаксис:
# zfs allow -[ldugecs] everyone|user|group[,,...] perm|@setname,...] filesystem| volume |
Следующая команда zfs allow (выделено жирным шрифтом) показывает, кому делегированы разрешения:
zfs allow [-uge]|user|group|everyone [,...] filesystem | volume |
Несколько сущностей можно задавать в виде списка, разделенного запятыми. Если не указаны параметры -uge, аргумент интерпретируется по умолчанию как ключевое слово everyone, за которым следует имя пользователя, затем имя группы. Чтобы указать пользователя или группу с именем everyone, используйте параметр -u или -g. Чтобы указать имя группы, совпадающее с именем пользователя, воспользуйтесь параметром -g. Параметр -c предоставляет разрешения времени создания.
Следующая команда zfs allow (выделено жирным шрифтом) показывает, как задаются разрешения и наборы разрешений:
zfs allow [-s] ... perm|@setname [,...] filesystem | volume |
Несколько разрешений можно задавать в виде списка, разделенного запятыми. Имена разрешений совпадают с подкомандами и свойствами ZFS. Для получения дополнительной информации см. предыдущий раздел.
Разрешения можно объединять в наборы разрешений, признаком которых служит параметр -s. Наборы разрешений могут использоваться в других командах zfs allow для указанной файловой системы и ее потомков. Наборы разрешений проверяются динамически, так что внесенные в набор изменения немедленно обновляются. Наборы разрешений следуют тому же соглашению об именах, что и файловые системы ZFS, но имя должно начинаться с символа (@) и не может быть длиннее 64 символов.
Следующая команда zfs allow (выделено жирным шрифтом) показывает, как делегируются разрешения:
zfs allow [-ld] ... ... filesystem | volume |
Параметр -l означает, что разрешение предоставляется для указанного набора данных, но не для его дочерних наборов данных (если не указан также параметр -d). Параметр -d означает, что разрешение предоставляется для дочерних наборов данных, но не для этого набора данных (если не указан также параметр -l). Если ни один из параметров -ld не задан, разрешения предоставляются для файловой системы или тома и всех их потомков.
Можно удалить ранее предоставленные разрешения с помощью команды zfs unallow.
Предположим, разрешения create, destroy, mount и snapshot делегированы следующим образом:
# zfs allow cindys create,destroy,mount,snapshot tank/cindys # zfs allow tank/cindys ------------------------------------------------------------- Local+Descendent permissions on (tank/cindys) user cindys create,destroy,mount,snapshot ------------------------------------------------------------- |
Чтобы удалить эти разрешения, используйте команды, подобные следующим:
# zfs unallow cindys tank/cindys # zfs allow tank/cindys |