Ñò ɼjWc&@s»dZddkZddkZddkZddkZddkZddkZeii Z de fd„ƒYZ d„Z e de dƒde dƒd e d ƒd e d ƒd e dƒde dƒde dƒde dƒde dƒde dƒde dƒde dƒde dƒde d ƒd!e d"ƒƒZe d#e d$ƒd%e d&ƒd'e d(ƒd)e d*ƒd+e d,ƒd-e d.ƒd/e d0ƒƒZd1„Zd2„Zd3„Zd4„ZdS(5s…This module implements the "zfs allow" and "zfs unallow" subcommands. The only public interface is the zfs.allow.do_allow() function.iÿÿÿÿNtFSPermscBsAeZdZd ZeiiZd„Ze d„ƒZ d„Z RS( ssThis class represents all the permissions that are set on a particular filesystem (not including those inherited).tcreatetsetstlocaltdescendtldc Cs‹tƒ|_tƒ|_tƒ|_tƒ|_tƒ|_xÊ|iƒD]¼}||iƒ}|diƒ}|d}|djo|ii |ƒqI|djo-d|}|ii |tƒƒi |ƒqI|djoFyt i t |ƒƒi}Wntj o |}nXd|}nw|djoFytit |ƒƒi}Wntj o |}nXd |}n$|d jo d }n t|ƒ‚|d d jo |i}n/|d djo |i}nt|d ƒ‚|i |tƒƒi |ƒqIWx{|iD]p}||ijoqn|i||i|@|i|<|i|c|i|8<|i|c|i|8\}}|o+|d|ddit|ƒƒf7}qqW|o||}n|S(Nts %s %s it,(tsortedtitemstjoin(RtheaderRR$R!((s../../common/allow.pyt__ldstrjs )cCsÀ|i|itdƒƒ}|io4|tdƒ7}|ddit|iƒƒ7}n||i|itdƒƒ7}||i|itdƒƒ7}||i|itdƒƒ7}|i ƒS(NsPermission sets: sCreate time permissions: s %s R(sLocal permissions: sDescendent permissions: sLocal+Descendent permissions: ( t_FSPerms__ldstrRt_RR+R)RRRtrstrip(RR((s../../common/allow.pyt__str__xs $(screatessetsslocalsdescendsld( t__name__t __module__t__doc__t __slots__tzfstutilt default_reprt__repr__R&t staticmethodR.R1(((s../../common/allow.pyR%s   >c søˆo0td„ˆDƒƒ‰td„ˆDƒƒ‰n d‰d‰tƒ‰‡‡‡‡fd†}‡fd†}|io|dd|ƒnd|io|dddƒnFxB|D]:}|io%||titd ƒƒ}d }nÊ|io%||t i td ƒƒ}d }n›|d jod}d}n~yti|ƒd}d }Wn]t j oQyt i |ƒd}d }Wq´t j oˆi tdƒ|ƒq´XnX|i o||d|ƒn|io||d|ƒq¶q¶WˆS(s[Return a dict of raw perms {"whostr" -> {"perm" -> None}} based on the command-line input.css4x-|]&}|ddjo|dfVqqWdS(it@N(tNone(t.0tp((s../../common/allow.pys ‹s css:x3|],}|ddjot|ƒdfVqqWdS(iR;N(tcanonicalized_permR<(R=R>((s../../common/allow.pys Œs csŠ|djpt‚ˆdjpt‚‡‡fd†}ˆpˆ oˆˆ||ƒ[,...] [[,...]] unallow [-rld] -e [[,...]] unallow [-r] -c [[,...]] unallow [-r] -s @setname [[,...]] tremovesundefine permission sets allow allow [-ldug] <"everyone"|user|group>[,...] [,...] allow [-ld] -e [,...] allow -c [,...] allow -s @setname [,...] Rsdefine permission setRŒtprogR6s-ltactiont store_truetdestRthelps%s permission locallys-dRs%s permission for descendentss-uRSs%s permission for users-gRUs%s permission for groups-eRRs%s permission for everyones-cRs%s create time permissionss-ss-rt recursivesremove permissions recursivelyiis-htsnapstreverses---- Permissions on %s RQiFNs%-u, -g, and -e are mutually exclusivecsĈo*tˆƒ|djodˆ|dfStˆƒ|jolg}ˆ|didƒD]}||iƒq`~}d|joˆtdƒƒn|ˆ|dfSˆtdƒƒdS(NiiR(R's!badly formed comma separated listswrong number of parameters(tlenR<tsplittstripR/(t expected_lent_[1]R R>(targsR‹RŒ(s../../common/allow.pyt mungeargsZs8 sinvalid option combined with -siR;s$invalid set name: missing '@' prefixsinvalid option combined with -csinvalid option combined with -eR(R'sbadly formed list of userssset %s is not defined(%tsystargvR<R/R6R7tZFSOptionParsert add_optionR–RytDatasetRsRRpR*RR)RRrt parse_argstsumtboolRRRSRURKRRRRR—R˜RZRvt set_fsaclR“t descendents(R tverbtsstrRtR>tfsRRRWRœR!tfsnameRXRšRLRtchild((RORŒR›R‹s../../common/allow.pytdo_allow s¬               4   "# (R4tzfs.utilR6t zfs.datasetRRRR|R7R/tobjectRRZRRwRxRvR?R†R¬(((s../../common/allow.pytsP       _ F