{"id":13479238,"url":"https://github.com/artginzburg/sudo-touchid","last_synced_at":"2025-10-25T14:10:25.215Z","repository":{"id":42375803,"uuid":"389117398","full_name":"artginzburg/sudo-touchid","owner":"artginzburg","description":" Permanent TouchID support 👆 for `sudo`.","archived":false,"fork":false,"pushed_at":"2023-10-15T19:38:55.000Z","size":2943,"stargazers_count":569,"open_issues_count":11,"forks_count":15,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-29T03:09:10.733Z","etag":null,"topics":["authentication","bash","cli","macos","security","sudo","terminal","touchid"],"latest_commit_sha":null,"homepage":"https://git.io/sudotouchid","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artginzburg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-07-24T14:25:37.000Z","updated_at":"2025-03-08T15:54:24.000Z","dependencies_parsed_at":"2024-01-08T07:58:40.324Z","dependency_job_id":"41ca59dd-9c4e-4b7e-a018-bfb11c5e9f2a","html_url":"https://github.com/artginzburg/sudo-touchid","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artginzburg%2Fsudo-touchid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artginzburg%2Fsudo-touchid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artginzburg%2Fsudo-touchid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artginzburg%2Fsudo-touchid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artginzburg","download_url":"https://codeload.github.com/artginzburg/sudo-touchid/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284951,"owners_count":20913704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","bash","cli","macos","security","sudo","terminal","touchid"],"created_at":"2024-07-31T16:02:11.986Z","updated_at":"2025-10-25T14:10:25.208Z","avatar_url":"https://github.com/artginzburg.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"\u003cimg height=\"128\" src=\"res/icon.png\" alt=\"Icon\" align=\"left\" /\u003e\n\n# sudo-touchid\n\n[![Downloads](https://img.shields.io/github/downloads/artginzburg/sudo-touchid/total?color=teal)](https://github.com/artginzburg/sudo-touchid/releases)\n[![Donate](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-white)](https://github.com/artginzburg/sudo-touchid?sponsor=1)\n\n\u003cdiv align=\"right\"\u003e\n\nNative and reliable [**TouchID**](https://support.apple.com/en-gb/guide/mac-help/mchl16fbf90a/mac) support for `sudo`\n\n\u003c/div\u003e\n\n## Try it out \u003csub\u003e \u0026nbsp; \u003csup\u003e \u0026nbsp; without installing\u003c/sup\u003e\u003c/sub\u003e\n\n```powershell\ncurl -sL git.io/sudo-touch-id | sh\n```\n\nNow `sudo` is great, just like Safari — with your fingerprint in Terminal.\n\n\u003e \u003csup\u003eDon't worry, you can also [reverse](#usage) it\u003c/sup\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003csub\u003e\u003csub\u003eResult:\u003c/sub\u003e\u003c/sub\u003e\n\n\u003cimg alt=\"Preview\" src=\"./res/preview.png\" width=\"500vmin\" /\u003e\n\n\u003csub\u003eJust type \u003ca href=\"https://git.io/sudotouchid\"\u003e\u003ccode\u003egit.io/sudotouchid\u003c/code\u003e\u003c/a\u003e to go here.\u003c/sub\u003e\n\n\u003c/div\u003e\n\n### Features\n\n- Fast \u0026 reliable\n- Written in Bash — no dependencies\n- **pam_reattach support** for tmux/screen compatibility (GUI session reattachment)\n- **Supports modern and legacy systems:** For macOS 13 and below, see [LEGACY_MACOS.md][legacy]\n\n\u003cbr /\u003e\n\n## Install\n\n### Via [🍺 Homebrew](https://brew.sh/)\n\n```bash\nbrew install artginzburg/tap/sudo-touchid\n```\n\n\u003e Check out [the formula](https://github.com/artginzburg/homebrew-tap/blob/main/Formula/sudo-touchid.rb) if you're interested\n\n\u003cbr /\u003e\n\n## Usage\n\nCopy and run this command:\n\n```bash\nsudo-touchid\n```\n\nIt adds TouchID to sudo configuration, or migrates an existing legacy configuration if you're upgrading from macOS 13 or below.\n\n```bash\n# Usage:\nsudo-touchid [options]\n             [-v,  --version]   # Output installed version\n             [-d,  --disable]   # Remove TouchID from sudo config\n             [--with-reattach]  # Include pam_reattach.so for tmux/screen support\n             [--migrate]        # Migrate from legacy configuration\n             [--verbose]        # Show detailed output\n             [-q,  --quiet]     # Show minimal output (errors only)\n             [-y,  --yes]       # Skip confirmation prompts (non-interactive mode)\n```\n\nif not installed, can be used via [`curl`][curl] \u003csup\u003ebundled with macOS\u003c/sup\u003e\n\n```bash\nsh \u003c( curl -sL git.io/sudo-touch-id )\n```\n\n\u003e Accepts the same arguments, like -d or -v.\n\n\u003cbr /\u003e\n\n### Why?\n\n- **Productivity:** Automates TouchID setup\n- **Lightweight:** Small Bash script, no builds or Xcode required\n- **Reliable:** Persistent configuration across system updates\n\n\u003cbr /\u003e\n\n## How does it work?\n\n**For macOS 14+:**\n\n- Creates `/etc/pam.d/sudo_local` with TouchID configuration\n- Never modifies system-managed `/etc/pam.d/sudo` file\n\n**All versions:**\n\n- Has a `--disable` (`-d`) option that removes all TouchID configurations.\n- Optional `--with-reattach` for GUI session reattachment support\n- Creates backup files during migration\n- Automatically detects and migrates legacy configurations\n\n### Manual installation\n\nJust save `sudo-touchid.sh` as `/usr/local/bin/sudo-touchid` with execute permissions\n\n\u003e See [LEGACY_MACOS.md][legacy] for additional considerations on older systems\n\n\u003cbr /\u003e\n\n## Related\n\n- **tmux/screen support:** [pam_reattach](https://github.com/fabianishere/pam_reattach) module (built-in via `--with-reattach`)\n- **Apple Watch support:** [pam_watchid](https://github.com/biscuitehh/pam-watchid) module\n- **Disable password prompt:** Change `%admin ALL=(ALL) ALL` to `%admin ALL=(ALL) NOPASSWD: ALL` in `/etc/sudoers`\n\n[curl]: https://curl.se\n[legacy]: ./docs/LEGACY_MACOS.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartginzburg%2Fsudo-touchid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartginzburg%2Fsudo-touchid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartginzburg%2Fsudo-touchid/lists"}