Phase 1 of docs/roadmap/storage-locations.md — locations can now exist. Nothing places an app on one yet; that is phase 2. libreportal-storage is the only writer of the root-owned registry, and its admission rules are what make adding a location safe: absolute and canonical (a symlinked path is refused), outside the protected system set, non-nesting with any known root in either direction, and EMPTY — or already carrying our marker, which is the adopt case for a drive that already holds app data. Root only ever chowns an empty directory, so acceptance cannot hand away anything that existed. The parent must also not be manager-writable, which is what closes the validate-then-chown race; /mnt and /srv qualify, a path inside the manager's home does not. The fitness checks answer a different question — "will app data actually work here" — and grade rather than refuse. Only checks 1-5 (filesystem type, mount options, ownership, sub-UID range, write/read-back) can block. Reboot persistence and removability warn, because both describe supported setups and start-up is already gated by the marker test. The ownership probe had to move into the root helper. For a candidate the directory is not ours yet — a fresh /mnt/disk is root-owned 0755 — so an unprivileged probe could only ever report "cannot create a directory here", which says nothing about the filesystem. Verified against a real loopback ext4: it now reports ownership, sub-UID and read-back cleanly. The Disks view unions the registry with attached hardware, registry first. Verified on the live box that pulling a drive leaves its row in place as not-attached, naming the app stranded on it, rather than the row silently disappearing at exactly the moment someone needs it. Also registers storage_scripts with both loaders, adds the CLI category (auto-dispatched by cli_initialize.sh), and bumps footprint_version to 6 for the new root helper and the widened sudoers allowlist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
17 lines
492 B
Bash
Executable File
17 lines
492 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# This file is auto-generated by generate_arrays.sh
|
|
# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate
|
|
|
|
crontab_scripts=(
|
|
"crontab/app/crontab_backup_scheduler.sh"
|
|
"crontab/crontab_clean.sh"
|
|
"crontab/crontab_clear.sh"
|
|
"crontab/crontab_install.sh"
|
|
"crontab/crontab_refresh.sh"
|
|
"crontab/crontab_setup.sh"
|
|
"crontab/system/crontab_boot_app_reconcile.sh"
|
|
"crontab/system/crontab_setup_system_info_updater.sh"
|
|
|
|
)
|