# `mix suidhelper.install`
[🔗](https://github.com/harmont-dev/hyper/blob/main/lib/mix/tasks/suidhelper.install.ex#L1)

Builds, stamps, and installs the Rust setuid helper.

    mix suidhelper.install

Two steps:

  1. `cargo xtask stamp` in `native/suidhelper` builds the release binary and
     writes its BLAKE3 self-checksum into `.note.sum` (the same step the
     `:suidhelper_stamp` compiler runs).
  2. The stamped binary is copied setuid-root (mode `4755`) to
     `/usr/local/bin/hyper-suidhelper`.

The copy needs root, but Mix runs every subprocess in its own session with no
controlling terminal (`erl_child_setup` calls `setsid`), so a nested `sudo`
cannot open `/dev/tty` to prompt for a password. This task therefore only runs
`sudo` itself when it is already non-interactive (`sudo -n` succeeds, e.g.
`NOPASSWD` or a usable cached credential). Otherwise it prints the exact
privileged command for you to run in your own terminal.

This is the privileged counterpart to `mix suidhelper.stamp`, which stamps
only. `cargo` and the helper's toolchain (see
`native/suidhelper/rust-toolchain.toml`) must be installed.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
