1.\" 2.\" CDDL HEADER START 3.\" 4.\" The contents of this file are subject to the terms of the 5.\" Common Development and Distribution License (the "License"). 6.\" You may not use this file except in compliance with the License. 7.\" 8.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9.\" or https://opensource.org/licenses/CDDL-1.0. 10.\" See the License for the specific language governing permissions 11.\" and limitations under the License. 12.\" 13.\" When distributing Covered Code, include this CDDL HEADER in each 14.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15.\" If applicable, add the following below this CDDL HEADER, with the 16.\" fields enclosed by brackets "[]" replaced with your own identifying 17.\" information: Portions Copyright [yyyy] [name of copyright owner] 18.\" 19.\" CDDL HEADER END 20.\" 21.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. 22.\" Copyright 2011 Joshua M. Clulow <josh@sysmgr.org> 23.\" Copyright (c) 2011, 2019 by Delphix. All rights reserved. 24.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved. 25.\" Copyright (c) 2014, Joyent, Inc. All rights reserved. 26.\" Copyright (c) 2014 by Adam Stevko. All rights reserved. 27.\" Copyright (c) 2014 Integros [integros.com] 28.\" Copyright 2019 Richard Laager. All rights reserved. 29.\" Copyright 2018 Nexenta Systems, Inc. 30.\" Copyright 2019 Joyent, Inc. 31.\" 32.Dd March 16, 2022 33.Dt ZFS-ALLOW 8 34.Os 35. 36.Sh NAME 37.Nm zfs-allow 38.Nd delegate ZFS administration permissions to unprivileged users 39.Sh SYNOPSIS 40.Nm zfs 41.Cm allow 42.Op Fl dglu 43.Ar user Ns | Ns Ar group Ns Oo , Ns Ar user Ns | Ns Ar group Oc Ns … 44.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 45.Ar setname Oc Ns … 46.Ar filesystem Ns | Ns Ar volume 47.Nm zfs 48.Cm allow 49.Op Fl dl 50.Fl e Ns | Ns Sy everyone 51.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 52.Ar setname Oc Ns … 53.Ar filesystem Ns | Ns Ar volume 54.Nm zfs 55.Cm allow 56.Fl c 57.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 58.Ar setname Oc Ns … 59.Ar filesystem Ns | Ns Ar volume 60.Nm zfs 61.Cm allow 62.Fl s No @ Ns Ar setname 63.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 64.Ar setname Oc Ns … 65.Ar filesystem Ns | Ns Ar volume 66.Nm zfs 67.Cm unallow 68.Op Fl dglru 69.Ar user Ns | Ns Ar group Ns Oo , Ns Ar user Ns | Ns Ar group Oc Ns … 70.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 71.Ar setname Oc Ns … Oc 72.Ar filesystem Ns | Ns Ar volume 73.Nm zfs 74.Cm unallow 75.Op Fl dlr 76.Fl e Ns | Ns Sy everyone 77.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 78.Ar setname Oc Ns … Oc 79.Ar filesystem Ns | Ns Ar volume 80.Nm zfs 81.Cm unallow 82.Op Fl r 83.Fl c 84.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 85.Ar setname Oc Ns … Oc 86.Ar filesystem Ns | Ns Ar volume 87.Nm zfs 88.Cm unallow 89.Op Fl r 90.Fl s No @ Ns Ar setname 91.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 92.Ar setname Oc Ns … Oc 93.Ar filesystem Ns | Ns Ar volume 94. 95.Sh DESCRIPTION 96.Bl -tag -width "" 97.It Xo 98.Nm zfs 99.Cm allow 100.Ar filesystem Ns | Ns Ar volume 101.Xc 102Displays permissions that have been delegated on the specified filesystem or 103volume. 104See the other forms of 105.Nm zfs Cm allow 106for more information. 107.Pp 108Delegations are supported under Linux with the exception of 109.Sy mount , 110.Sy unmount , 111.Sy mountpoint , 112.Sy canmount , 113.Sy rename , 114and 115.Sy share . 116These permissions cannot be delegated because the Linux 117.Xr mount 8 118command restricts modifications of the global namespace to the root user. 119.It Xo 120.Nm zfs 121.Cm allow 122.Op Fl dglu 123.Ar user Ns | Ns Ar group Ns Oo , Ns Ar user Ns | Ns Ar group Oc Ns … 124.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 125.Ar setname Oc Ns … 126.Ar filesystem Ns | Ns Ar volume 127.Xc 128.It Xo 129.Nm zfs 130.Cm allow 131.Op Fl dl 132.Fl e Ns | Ns Sy everyone 133.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 134.Ar setname Oc Ns … 135.Ar filesystem Ns | Ns Ar volume 136.Xc 137Delegates ZFS administration permission for the file systems to non-privileged 138users. 139.Bl -tag -width "-d" 140.It Fl d 141Allow only for the descendent file systems. 142.It Fl e Ns | Ns Sy everyone 143Specifies that the permissions be delegated to everyone. 144.It Fl g Ar group Ns Oo , Ns Ar group Oc Ns … 145Explicitly specify that permissions are delegated to the group. 146.It Fl l 147Allow 148.Qq locally 149only for the specified file system. 150.It Fl u Ar user Ns Oo , Ns Ar user Oc Ns … 151Explicitly specify that permissions are delegated to the user. 152.It Ar user Ns | Ns Ar group Ns Oo , Ns Ar user Ns | Ns Ar group Oc Ns … 153Specifies to whom the permissions are delegated. 154Multiple entities can be specified as a comma-separated list. 155If neither of the 156.Fl gu 157options are specified, then the argument is interpreted preferentially as the 158keyword 159.Sy everyone , 160then as a user name, and lastly as a group name. 161To specify a user or group named 162.Qq everyone , 163use the 164.Fl g 165or 166.Fl u 167options. 168To specify a group with the same name as a user, use the 169.Fl g 170options. 171.It Xo 172.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 173.Ar setname Oc Ns … 174.Xc 175The permissions to delegate. 176Multiple permissions may be specified as a comma-separated list. 177Permission names are the same as ZFS subcommand and property names. 178See the property list below. 179Property set names, which begin with 180.Sy @ , 181may be specified. 182See the 183.Fl s 184form below for details. 185.El 186.Pp 187If neither of the 188.Fl dl 189options are specified, or both are, then the permissions are allowed for the 190file system or volume, and all of its descendents. 191.Pp 192Permissions are generally the ability to use a ZFS subcommand or change a ZFS 193property. 194The following permissions are available: 195.TS 196l l l . 197NAME TYPE NOTES 198_ _ _ 199allow subcommand Must also have the permission that is being allowed 200bookmark subcommand 201clone subcommand Must also have the \fBcreate\fR ability and \fBmount\fR ability in the origin file system 202create subcommand Must also have the \fBmount\fR ability. Must also have the \fBrefreservation\fR ability to create a non-sparse volume. 203destroy subcommand Must also have the \fBmount\fR ability 204diff subcommand Allows lookup of paths within a dataset given an object number, and the ability to create snapshots necessary to \fBzfs diff\fR. 205hold subcommand Allows adding a user hold to a snapshot 206load-key subcommand Allows loading and unloading of encryption key (see \fBzfs load-key\fR and \fBzfs unload-key\fR). 207change-key subcommand Allows changing an encryption key via \fBzfs change-key\fR. 208mount subcommand Allows mounting/umounting ZFS datasets 209promote subcommand Must also have the \fBmount\fR and \fBpromote\fR ability in the origin file system 210receive subcommand Must also have the \fBmount\fR and \fBcreate\fR ability 211release subcommand Allows releasing a user hold which might destroy the snapshot 212rename subcommand Must also have the \fBmount\fR and \fBcreate\fR ability in the new parent 213rollback subcommand Must also have the \fBmount\fR ability 214send subcommand 215share subcommand Allows sharing file systems over NFS or SMB protocols 216snapshot subcommand Must also have the \fBmount\fR ability 217 218groupquota other Allows accessing any \fBgroupquota@\fI…\fR property 219groupobjquota other Allows accessing any \fBgroupobjquota@\fI…\fR property 220groupused other Allows reading any \fBgroupused@\fI…\fR property 221groupobjused other Allows reading any \fBgroupobjused@\fI…\fR property 222userprop other Allows changing any user property 223userquota other Allows accessing any \fBuserquota@\fI…\fR property 224userobjquota other Allows accessing any \fBuserobjquota@\fI…\fR property 225userused other Allows reading any \fBuserused@\fI…\fR property 226userobjused other Allows reading any \fBuserobjused@\fI…\fR property 227projectobjquota other Allows accessing any \fBprojectobjquota@\fI…\fR property 228projectquota other Allows accessing any \fBprojectquota@\fI…\fR property 229projectobjused other Allows reading any \fBprojectobjused@\fI…\fR property 230projectused other Allows reading any \fBprojectused@\fI…\fR property 231 232aclinherit property 233aclmode property 234acltype property 235atime property 236canmount property 237casesensitivity property 238checksum property 239compression property 240context property 241copies property 242dedup property 243defcontext property 244devices property 245dnodesize property 246encryption property 247exec property 248filesystem_limit property 249fscontext property 250keyformat property 251keylocation property 252logbias property 253mlslabel property 254mountpoint property 255nbmand property 256normalization property 257overlay property 258pbkdf2iters property 259primarycache property 260quota property 261readonly property 262recordsize property 263redundant_metadata property 264refquota property 265refreservation property 266relatime property 267reservation property 268rootcontext property 269secondarycache property 270setuid property 271sharenfs property 272sharesmb property 273snapdev property 274snapdir property 275snapshot_limit property 276special_small_blocks property 277sync property 278utf8only property 279version property 280volblocksize property 281volmode property 282volsize property 283vscan property 284xattr property 285zoned property 286.TE 287.It Xo 288.Nm zfs 289.Cm allow 290.Fl c 291.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 292.Ar setname Oc Ns … 293.Ar filesystem Ns | Ns Ar volume 294.Xc 295Sets 296.Qq create time 297permissions. 298These permissions are granted 299.Pq locally 300to the creator of any newly-created descendent file system. 301.It Xo 302.Nm zfs 303.Cm allow 304.Fl s No @ Ns Ar setname 305.Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 306.Ar setname Oc Ns … 307.Ar filesystem Ns | Ns Ar volume 308.Xc 309Defines or adds permissions to a permission set. 310The set can be used by other 311.Nm zfs Cm allow 312commands for the specified file system and its descendents. 313Sets are evaluated dynamically, so changes to a set are immediately reflected. 314Permission sets follow the same naming restrictions as ZFS file systems, but the 315name must begin with 316.Sy @ , 317and can be no more than 64 characters long. 318.It Xo 319.Nm zfs 320.Cm unallow 321.Op Fl dglru 322.Ar user Ns | Ns Ar group Ns Oo , Ns Ar user Ns | Ns Ar group Oc Ns … 323.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 324.Ar setname Oc Ns … Oc 325.Ar filesystem Ns | Ns Ar volume 326.Xc 327.It Xo 328.Nm zfs 329.Cm unallow 330.Op Fl dlr 331.Fl e Ns | Ns Sy everyone 332.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 333.Ar setname Oc Ns … Oc 334.Ar filesystem Ns | Ns Ar volume 335.Xc 336.It Xo 337.Nm zfs 338.Cm unallow 339.Op Fl r 340.Fl c 341.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 342.Ar setname Oc Ns … Oc 343.Ar filesystem Ns | Ns Ar volume 344.Xc 345Removes permissions that were granted with the 346.Nm zfs Cm allow 347command. 348No permissions are explicitly denied, so other permissions granted are still in 349effect. 350For example, if the permission is granted by an ancestor. 351If no permissions are specified, then all permissions for the specified 352.Ar user , 353.Ar group , 354or 355.Sy everyone 356are removed. 357Specifying 358.Sy everyone 359.Po or using the 360.Fl e 361option 362.Pc 363only removes the permissions that were granted to everyone, not all permissions 364for every user and group. 365See the 366.Nm zfs Cm allow 367command for a description of the 368.Fl ldugec 369options. 370.Bl -tag -width "-r" 371.It Fl r 372Recursively remove the permissions from this file system and all descendents. 373.El 374.It Xo 375.Nm zfs 376.Cm unallow 377.Op Fl r 378.Fl s No @ Ns Ar setname 379.Oo Ar perm Ns | Ns @ Ns Ar setname Ns Oo , Ns Ar perm Ns | Ns @ Ns 380.Ar setname Oc Ns … Oc 381.Ar filesystem Ns | Ns Ar volume 382.Xc 383Removes permissions from a permission set. 384If no permissions are specified, then all permissions are removed, thus removing 385the set entirely. 386.El 387. 388.Sh EXAMPLES 389.\" These are, respectively, examples 17, 18, 19, 20 from zfs.8 390.\" Make sure to update them bidirectionally 391.Ss Example 1 : No Delegating ZFS Administration Permissions on a ZFS Dataset 392The following example shows how to set permissions so that user 393.Ar cindys 394can create, destroy, mount, and take snapshots on 395.Ar tank/cindys . 396The permissions on 397.Ar tank/cindys 398are also displayed. 399.Bd -literal -compact -offset Ds 400.No # Nm zfs Cm allow Sy cindys create , Ns Sy destroy , Ns Sy mount , Ns Sy snapshot Ar tank/cindys 401.No # Nm zfs Cm allow Ar tank/cindys 402---- Permissions on tank/cindys -------------------------------------- 403Local+Descendent permissions: 404 user cindys create,destroy,mount,snapshot 405.Ed 406.Pp 407Because the 408.Ar tank/cindys 409mount point permission is set to 755 by default, user 410.Ar cindys 411will be unable to mount file systems under 412.Ar tank/cindys . 413Add an ACE similar to the following syntax to provide mount point access: 414.Dl # Cm chmod No A+user: Ns Ar cindys Ns :add_subdirectory:allow Ar /tank/cindys 415. 416.Ss Example 2 : No Delegating Create Time Permissions on a ZFS Dataset 417The following example shows how to grant anyone in the group 418.Ar staff 419to create file systems in 420.Ar tank/users . 421This syntax also allows staff members to destroy their own file systems, but not 422destroy anyone else's file system. 423The permissions on 424.Ar tank/users 425are also displayed. 426.Bd -literal -compact -offset Ds 427.No # Nm zfs Cm allow Ar staff Sy create , Ns Sy mount Ar tank/users 428.No # Nm zfs Cm allow Fl c Sy destroy Ar tank/users 429.No # Nm zfs Cm allow Ar tank/users 430---- Permissions on tank/users --------------------------------------- 431Permission sets: 432 destroy 433Local+Descendent permissions: 434 group staff create,mount 435.Ed 436. 437.Ss Example 3 : No Defining and Granting a Permission Set on a ZFS Dataset 438The following example shows how to define and grant a permission set on the 439.Ar tank/users 440file system. 441The permissions on 442.Ar tank/users 443are also displayed. 444.Bd -literal -compact -offset Ds 445.No # Nm zfs Cm allow Fl s No @ Ns Ar pset Sy create , Ns Sy destroy , Ns Sy snapshot , Ns Sy mount Ar tank/users 446.No # Nm zfs Cm allow staff No @ Ns Ar pset tank/users 447.No # Nm zfs Cm allow Ar tank/users 448---- Permissions on tank/users --------------------------------------- 449Permission sets: 450 @pset create,destroy,mount,snapshot 451Local+Descendent permissions: 452 group staff @pset 453.Ed 454. 455.Ss Example 4 : No Delegating Property Permissions on a ZFS Dataset 456The following example shows to grant the ability to set quotas and reservations 457on the 458.Ar users/home 459file system. 460The permissions on 461.Ar users/home 462are also displayed. 463.Bd -literal -compact -offset Ds 464.No # Nm zfs Cm allow Ar cindys Sy quota , Ns Sy reservation Ar users/home 465.No # Nm zfs Cm allow Ar users/home 466---- Permissions on users/home --------------------------------------- 467Local+Descendent permissions: 468 user cindys quota,reservation 469cindys% zfs set quota=10G users/home/marks 470cindys% zfs get quota users/home/marks 471NAME PROPERTY VALUE SOURCE 472users/home/marks quota 10G local 473.Ed 474. 475.Ss Example 5 : No Removing ZFS Delegated Permissions on a ZFS Dataset 476The following example shows how to remove the snapshot permission from the 477.Ar staff 478group on the 479.Sy tank/users 480file system. 481The permissions on 482.Sy tank/users 483are also displayed. 484.Bd -literal -compact -offset Ds 485.No # Nm zfs Cm unallow Ar staff Sy snapshot Ar tank/users 486.No # Nm zfs Cm allow Ar tank/users 487---- Permissions on tank/users --------------------------------------- 488Permission sets: 489 @pset create,destroy,mount,snapshot 490Local+Descendent permissions: 491 group staff @pset 492.Ed 493