fs.permissions

Abstract permissions container.

class fs.permissions.Permissions(names: Optional[Iterable[Text]] = None, mode: Optional[int] = None, user: Optional[Text] = None, group: Optional[Text] = None, other: Optional[Text] = None, sticky: Optional[bool] = None, setuid: Optional[bool] = None, setguid: Optional[bool] = None)[source]

An abstraction for file system permissions.

Permissions objects store information regarding the permissions on a resource. It supports Linux permissions, but is generic enough to manage permission information from almost any filesystem.

Example

>>> from fs.permissions import Permissions
>>> p = Permissions(user='rwx', group='rw-', other='r--')
>>> print(p)
rwxrw-r--
>>> p.mode
500
>>> oct(p.mode)
'0o764'
__init__(names: Optional[Iterable[Text]] = None, mode: Optional[int] = None, user: Optional[Text] = None, group: Optional[Text] = None, other: Optional[Text] = None, sticky: Optional[bool] = None, setuid: Optional[bool] = None, setguid: Optional[bool] = None) None[source]

Create a new Permissions instance.

Parameters:
  • names (list, optional) – A list of permissions.

  • mode (int, optional) – A mode integer.

  • user (str, optional) – A triplet of user permissions, e.g. "rwx" or "r--"

  • group (str, optional) – A triplet of group permissions, e.g. "rwx" or "r--"

  • other (str, optional) – A triplet of other permissions, e.g. "rwx" or "r--"

  • sticky (bool, optional) – A boolean for the sticky bit.

  • setuid (bool, optional) – A boolean for the setuid bit.

  • setguid (bool, optional) – A boolean for the setguid bit.

add(*permissions: str) None[source]

Add permission(s).

Parameters:

*permissions (str) – Permission name(s), such as 'u_w' or 'u_x'.

as_str() str[source]

Get a Linux-style string representation of permissions.

check(*permissions: str) bool[source]

Check if one or more permissions are enabled.

Parameters:

*permissions (str) – Permission name(s), such as 'u_w' or 'u_x'.

Returns:

True if all given permissions are set.

Return type:

bool

copy() fs.permissions.Permissions[source]

Make a copy of this permissions object.

classmethod create(init: Union[int, Iterable[Text], None] = None) Permissions[source]

Create a permissions object from an initial value.

Parameters:

init (int or list, optional) – May be None to use 0o777 permissions, a mode integer, or a list of permission names.

Returns:

mode integer that may be used for instance by os.makedir.

Return type:

int

Example

>>> Permissions.create(None)
Permissions(user='rwx', group='rwx', other='rwx')
>>> Permissions.create(0o700)
Permissions(user='rwx', group='', other='')
>>> Permissions.create(['u_r', 'u_w', 'u_x'])
Permissions(user='rwx', group='', other='')
dump() List[Text][source]

Get a list suitable for serialization.

g_r

Boolean for ‘g_r’ permission.

g_w

Boolean for ‘g_w’ permission.

g_x

Boolean for ‘g_x’ permission.

classmethod get_mode(init: Union[int, Iterable[Text], None]) int[source]

Convert an initial value to a mode integer.

classmethod load(permissions: List[Text]) Permissions[source]

Load a serialized permissions object.

property mode

mode integer.

Type:

int

o_r

Boolean for ‘o_r’ permission.

o_w

Boolean for ‘o_w’ permission.

o_x

Boolean for ‘o_x’ permission.

classmethod parse(ls: str) fs.permissions.Permissions[source]

Parse permissions in Linux notation.

remove(*permissions: str) None[source]

Remove permission(s).

Parameters:

*permissions (str) – Permission name(s), such as 'u_w' or 'u_x'.s

setguid

Boolean for ‘setguid’ permission.

setuid

Boolean for ‘setuid’ permission.

sticky

Boolean for ‘sticky’ permission.

u_r

Boolean for ‘u_r’ permission.

u_w

Boolean for ‘u_w’ permission.

u_x

Boolean for ‘u_x’ permission.

fs.permissions.make_mode(init: Union[int, Iterable[Text], None]) int[source]

Make a mode integer from an initial value.