{
  "name": "rootd",
  "icon": "https://bb10repo.whytofly.de/img/bb10-rootd.png",
  "category": "System",
  "type": "cli",
  "author": "whytofly",
  "homepage": "https://bb10repo.whytofly.de/",
  "description": "sudo for BlackBerry 10 — run commands as root from any app perimeter (Term49, Rubus). Installs a `sudo` client on the apk PATH plus a tiny root daemon (rootd).\n\nWhy a daemon and not a setuid binary: on the autoroot image, setuid-to-root is blocked (/bin/__root returns 'Operation not permitted' even when called as root, on a trusted path), so nothing can escalate on demand. rootd is started once per boot inside the autoroot's btool root window (the only every-boot root context) and services requests over a small spool directory under the apk tree — the one shared location the app perimeter can both reach and write. `sudo <cmd>` writes a request, rootd runs it as root, and the output + exit status stream back.\n\nAuth model: OPEN — any local process may escalate, with every command written to an audit log (apk/rootd/sudo.log with the caller's uid). This matches the device's existing wide-open posture (the autoroot's per-user /bin/__* helpers are world-exec setuid). There is no password: BlackBerry's app/perimeter accounts have no Unix login password to check.\n\nFirst activation needs ONE reboot (btool has already run by the time this installs); after that rootd starts automatically on every boot. The package hooks btool by appending a single guarded line (backed up to btool.bak) at the very end, after root is already established, so it can never interfere with rooting.\n\nUsage from Term49: `sudo cat /var/etc/ssh/sshd_config`, `sudo shutdown -S reboot`. For pipes/redirects/globs use `sudo sh -c '...'`, exactly like real sudo. Required by bb10-pathtrust.",
  "history": [
    {
      "version": "20260630",
      "released": "2026-06-30",
      "changes": "- Initial release. rootd root-command daemon + sudo client. Validated end-to-end on hardware from the real Term49 app perimeter: sudo read a root-only SSH host key (direct read denied), exit codes pass through, and each request is audit-logged with the app uid. Spool lives under the apk tree (a fresh sibling under /accounts/1000/shared/misc is blocked by the perimeter ACL). Boot hook into btool starts rootd every boot."
    }
  ]
}
