archivebox.config.permissions

Module Contents

Functions

is_root_identity

select_archivebox_user

get_or_create_archivebox_account

root_data_dir_handoff_paths

Return bounded top-level paths safe to hand from root to archivebox.

root_should_handoff_data_dir

Allow bounded handoff only for root or archivebox-owned collection roots.

root_parent_can_grant_group_traversal

Return whether adding archivebox traversal preserves existing parent access.

grant_archivebox_group_traversal

Let the archivebox account traverse private root-owned parents.

handoff_root_owned_data_dir

drop_privileges

If running as root, drop privileges to the data dir owner or archivebox user.

SudoPermission

Attempt to run code with sudo permissions for a given user (or root)

Data

DATA_DIR

DEFAULT_UID

DEFAULT_GID

RUNNING_AS_UID

RUNNING_AS_GID

EUID

EGID

SUDO_UID

SUDO_GID

USER

HOSTNAME

IS_ROOT

IN_DOCKER

FALLBACK_UID

FALLBACK_GID

ARCHIVEBOX_ACCOUNT

ARCHIVEBOX_USER_EXISTS

ROOT_HANDOFF_NAMES

API

archivebox.config.permissions.is_root_identity(running_uid: int, effective_uid: int) bool[source]
archivebox.config.permissions.select_archivebox_user(*, running_uid: int, running_gid: int, effective_uid: int, effective_gid: int, sudo_uid: int, sudo_gid: int, data_dir_uid: int, data_dir_gid: int, account_uid: int | None, account_gid: int | None, data_dir_owner_gid: int | None = None, data_dir_owner_exists: bool = True) tuple[int, int][source]
archivebox.config.permissions.DATA_DIR[source]

‘Path(…)’

archivebox.config.permissions.DEFAULT_UID[source]

911

archivebox.config.permissions.DEFAULT_GID[source]

911

archivebox.config.permissions.RUNNING_AS_UID[source]

‘getuid(…)’

archivebox.config.permissions.RUNNING_AS_GID[source]

‘getgid(…)’

archivebox.config.permissions.EUID[source]

‘geteuid(…)’

archivebox.config.permissions.EGID[source]

‘getegid(…)’

archivebox.config.permissions.SUDO_UID[source]

‘int(…)’

archivebox.config.permissions.SUDO_GID[source]

‘int(…)’

archivebox.config.permissions.USER: str[source]

None

archivebox.config.permissions.HOSTNAME: str[source]

‘cast(…)’

archivebox.config.permissions.IS_ROOT[source]

‘is_root_identity(…)’

archivebox.config.permissions.IN_DOCKER[source]

None

archivebox.config.permissions.FALLBACK_UID[source]

None

archivebox.config.permissions.FALLBACK_GID[source]

None

archivebox.config.permissions.get_or_create_archivebox_account()[source]
archivebox.config.permissions.ARCHIVEBOX_ACCOUNT[source]

‘get_or_create_archivebox_account(…)’

archivebox.config.permissions.ARCHIVEBOX_USER_EXISTS[source]

False

archivebox.config.permissions.ROOT_HANDOFF_NAMES[source]

(‘.archivebox_id’, ‘ArchiveBox.conf’, ‘index.sqlite3’, ‘index.sqlite3-shm’, ‘index.sqlite3-wal’, ‘ar…

archivebox.config.permissions.root_data_dir_handoff_paths(data_dir: pathlib.Path, argv: list[str]) tuple[pathlib.Path, ...][source]

Return bounded top-level paths safe to hand from root to archivebox.

archivebox.config.permissions.root_should_handoff_data_dir(*, is_root: bool, data_dir_uid: int, account_uid: int | None, data_dir_owner_exists: bool = True) bool[source]

Allow bounded handoff only for root or archivebox-owned collection roots.

archivebox.config.permissions.root_parent_can_grant_group_traversal(*, parent_uid: int, parent_gid: int, parent_mode: int, account_gid: int) bool[source]

Return whether adding archivebox traversal preserves existing parent access.

archivebox.config.permissions.grant_archivebox_group_traversal(path: pathlib.Path) None[source]

Let the archivebox account traverse private root-owned parents.

archivebox.config.permissions.handoff_root_owned_data_dir() None[source]
archivebox.config.permissions.drop_privileges()[source]

If running as root, drop privileges to the data dir owner or archivebox user.

archivebox.config.permissions.SudoPermission(uid=0, fallback=False)[source]

Attempt to run code with sudo permissions for a given user (or root)