craft_parts.permissions module¶
Specify and apply permissions and ownership to part-owned files.
- class craft_parts.permissions.Permissions(**data)[source]¶
Bases:
BaseModel
Description of the ownership and permission settings for a set of files.
A
Permissions
object specifies that a given pattern-likepath
should be owned byowner
with a givengroup
, and have the read/write/execute bits defined bymode
.Notes
path
is optional and defaults to “everything”;owner
andgroup
are optional if both are omitted - that is, if one of the pair is specified then both must be;mode
is a string containing an integer in base 8. For example, “755”, “0755” and “0o755” are all accepted and are the equivalent of callingchmod 755 ...
.
- Parameters:
data (
Any
)
- applies_to(path)[source]¶
Whether this Permissions’ path pattern applies to
path
.- Parameters:
path (
Path
|str
)- Return type:
bool
- apply_permissions(target)[source]¶
Apply the permissions configuration to
target
.Note that this method doesn’t check if this
Permissions
’s path pattern matchestarget
; be sure to callapplies_to()
beforehand.- Parameters:
target (
Path
|str
)- Return type:
None
-
group:
int
|None
¶
-
mode:
str
|None
¶
- property mode_octal: int¶
Get the mode as a base-8 integer.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}¶
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'group': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'mode': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'owner': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'path': FieldInfo(annotation=str, required=False, default='*')}¶
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
-
owner:
int
|None
¶
-
path:
str
¶
- craft_parts.permissions.apply_permissions(target, permissions)[source]¶
Apply all permissions configurations in
permissions
totarget
.- Parameters:
target (
Path
|str
)permissions (
list
[Permissions
])
- Return type:
None
- craft_parts.permissions.filter_permissions(target, permissions)[source]¶
Get the subset of
permissions
whose path patterns apply totarget
.- Parameters:
target (
Path
|str
)permissions (
list
[Permissions
])
- Return type:
list
[Permissions
]
- craft_parts.permissions.permissions_are_compatible(left, right)[source]¶
Whether two sets of permissions definitions are not in conflict with each other.
The function determines whether applying the two lists of Permissions to a given path would result in the same
owner
,group
andmode
.- Return type:
bool
Remarks:¶
- If either of the parameters is None or empty, they are considered compatible
because they are understood to not be “in conflict”.
- Otherwise, the permissions are incompatible if one would they would set one
of the attributes (owner, group and mode) to different values, even if one of them would not modify the attribute at all.
- The
path
attribute of thePermissions
are completely ignored, as they are understood to apply to the same file of interest through a previous call of
filter_permissions()
.
- The
- type left:
list
[Permissions
] |None
- param left:
the first set of permissions.
- type right:
list
[Permissions
] |None
- param right:
the second set of permissions.