runspec-linux 0.17.0__tar.gz → 0.18.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/CHANGELOG.md +18 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/PKG-INFO +2 -2
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/pyproject.toml +2 -2
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/runspec.toml +14 -3
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/venvs.py +2 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/.gitignore +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/README.md +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/__init__.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/_escalation.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/commands.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/containers.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/cron.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/files.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/fs/__init__.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/fs/_dispatch.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/fs/_worker.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/fs/cli.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/investigate.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/logs.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/nc_command.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/network.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/packages.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/perf.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/power.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/security.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/services.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/sudoers.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/system_info.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/runspec_linux/webops.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/__init__.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_escalation.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_files.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_fs.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_inventory.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_nc_send.py +0 -0
- {runspec_linux-0.17.0 → runspec_linux-0.18.0}/tests/test_webops.py +0 -0
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# runspec-linux Changelog
|
|
2
2
|
|
|
3
|
+
## [0.18.0] — 2026-09-29
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`create-venv` sets up the logs inbox** (`logs/inbox`, `01777`, owned by the
|
|
8
|
+
venv's owner). Operators' and root's runs of the venv's runnables then reach
|
|
9
|
+
its history with no group admin (runspec >= 0.66). `logs/` is owner-only
|
|
10
|
+
(`0755`) unless `--group` is given. `--no-inbox` keeps the pre-inbox `2775`
|
|
11
|
+
layout and writes a `.no-inbox` opt-out marker.
|
|
12
|
+
- **`share-venv-logs` sets up the logs inbox** on an existing venv (run it with
|
|
13
|
+
`--run-as <owner>`). `--group` still adds the `2775` setgid group share, and
|
|
14
|
+
`--no-inbox` does only the group share, as before.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **`install-into-venv` keeps `logs/`'s mode** instead of forcing `2775`.
|
|
19
|
+
- Requires `runspec-linux-core >= 0.12.0`.
|
|
20
|
+
|
|
3
21
|
## [0.17.0] — 2026-09-26
|
|
4
22
|
|
|
5
23
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: runspec-linux
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Summary: Linux system admin runnables for runspec
|
|
5
5
|
Project-URL: Documentation, https://runspec.app/
|
|
6
6
|
Project-URL: Source, https://github.com/jasonfinestone/runspec/tree/main/packages/python/runspec-linux
|
|
@@ -9,7 +9,7 @@ Project-URL: Issues, https://github.com/jasonfinestone/runspec/issues
|
|
|
9
9
|
Keywords: linux,ops,runnable,runspec,ssh,sysadmin,venv
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Requires-Dist: runspec-fs-core>=0.5.0
|
|
12
|
-
Requires-Dist: runspec-linux-core>=0.
|
|
12
|
+
Requires-Dist: runspec-linux-core>=0.12.0
|
|
13
13
|
Requires-Dist: runspec-webops-core>=0.3.0
|
|
14
14
|
Requires-Dist: runspec>=0.50.1
|
|
15
15
|
Provides-Extra: dev
|
|
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "runspec-linux"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.18.0"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
9
|
description = "Linux system admin runnables for runspec"
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
keywords = ["runspec", "runnable", "linux", "sysadmin", "ops", "ssh", "venv"]
|
|
12
12
|
dependencies = [
|
|
13
13
|
"runspec>=0.50.1",
|
|
14
|
-
"runspec-linux-core>=0.
|
|
14
|
+
"runspec-linux-core>=0.12.0",
|
|
15
15
|
"runspec-webops-core>=0.3.0",
|
|
16
16
|
"runspec-fs-core>=0.5.0",
|
|
17
17
|
]
|
|
@@ -680,7 +680,7 @@ required = false
|
|
|
680
680
|
|
|
681
681
|
[create-venv]
|
|
682
682
|
serve = ["local"]
|
|
683
|
-
description = "Create a Python virtualenv (always --symlinks) from a specific interpreter, optionally as a service account, with a
|
|
683
|
+
description = "Create a Python virtualenv (always --symlinks) from a specific interpreter, optionally as a service account, with a logs inbox so every account's runs reach its history"
|
|
684
684
|
autonomy = "confirm"
|
|
685
685
|
output = "json"
|
|
686
686
|
|
|
@@ -711,6 +711,11 @@ short = "-g"
|
|
|
711
711
|
description = "Optional shared group to chgrp the venv to (e.g. consoles), so every connected console can read/write"
|
|
712
712
|
required = false
|
|
713
713
|
|
|
714
|
+
[create-venv.args.no-inbox]
|
|
715
|
+
type = "flag"
|
|
716
|
+
description = "Don't set up the logs inbox (logs/inbox, 01777) — keep the pre-inbox layout (logs/ 2775) and write a logs/.no-inbox opt-out marker. Default: the inbox is created, so operators' and root's runs reach this venv's history with no group admin (runspec >= 0.66)"
|
|
717
|
+
default = false
|
|
718
|
+
|
|
714
719
|
[create-venv.args.system-site-packages]
|
|
715
720
|
type = "flag"
|
|
716
721
|
description = "Give the venv access to the system site-packages"
|
|
@@ -862,12 +867,13 @@ description = "How to escalate to run-as: sudo (passwordless, -n) or su"
|
|
|
862
867
|
|
|
863
868
|
[share-venv-logs]
|
|
864
869
|
serve = ["local"]
|
|
865
|
-
description = "Make an existing venv's logs
|
|
870
|
+
description = "Make an existing venv's logs shared: set up the logs inbox (logs/inbox, 01777) so every account's runs reach its history — plus, with --group, the 2775 setgid group share. Run as the venv owner (--run-as)"
|
|
866
871
|
autonomy = "confirm"
|
|
867
872
|
output = "json"
|
|
868
873
|
|
|
869
874
|
examples = [
|
|
870
|
-
{cmd = "share-venv-logs --venv /opt/venvs/app",
|
|
875
|
+
{cmd = "share-venv-logs --venv /opt/venvs/app --run-as svc", description = "Set up the logs inbox as the venv's owner — the recommended setup"},
|
|
876
|
+
{cmd = "share-venv-logs --venv /opt/venvs/app --no-inbox", description = "The pre-inbox group share only: logs/ group-writable + setgid"},
|
|
871
877
|
{cmd = "share-venv-logs --venv /opt/venvs/app --group consoles", description = "...and chgrp the logs dir to the shared 'consoles' group"},
|
|
872
878
|
{cmd = "share-venv-logs --venv /opt/venvs/app --group consoles --run-as svc", description = "Run as the service account that owns the venv (via sudo -n -u)"},
|
|
873
879
|
]
|
|
@@ -884,6 +890,11 @@ short = "-g"
|
|
|
884
890
|
description = "Optional shared group to chgrp the logs/ dir to (e.g. consoles), so every connected console can read/write. Omit to keep the current group"
|
|
885
891
|
required = false
|
|
886
892
|
|
|
893
|
+
[share-venv-logs.args.no-inbox]
|
|
894
|
+
type = "flag"
|
|
895
|
+
description = "Skip the logs inbox — only the group share (logs/ 2775 setgid, optional chgrp)"
|
|
896
|
+
default = false
|
|
897
|
+
|
|
887
898
|
[share-venv-logs.args.run-as]
|
|
888
899
|
type = "str"
|
|
889
900
|
short = "-u"
|
|
@@ -19,6 +19,7 @@ def main_create_venv() -> None:
|
|
|
19
19
|
upgrade_deps=spec.upgrade_deps.value,
|
|
20
20
|
clear=spec.clear.value,
|
|
21
21
|
prompt=spec.prompt.value or None,
|
|
22
|
+
inbox=not spec.no_inbox.value,
|
|
22
23
|
)
|
|
23
24
|
print(json.dumps(result))
|
|
24
25
|
except CommandError as e:
|
|
@@ -62,6 +63,7 @@ def main_share_venv_logs() -> None:
|
|
|
62
63
|
group=spec.group.value or None,
|
|
63
64
|
run_as=spec.run_as.value or None,
|
|
64
65
|
become_method=spec.become_method.value,
|
|
66
|
+
inbox=not spec.no_inbox.value,
|
|
65
67
|
)
|
|
66
68
|
print(json.dumps(result))
|
|
67
69
|
except CommandError as e:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|