Architecture & Security
Where socksy's files live, and how it keeps your proxy credentials off the process list.
How it's wired
| Piece | Location |
|---|---|
socksy command | ~/.local/bin/socksy (/usr/bin/socksy from a package) |
gost relay binary | ~/.local/bin/gost |
| systemd user service | ~/.config/systemd/user/socksy-relay.service |
| watchdog timer (opt-in) | ~/.config/systemd/user/socksy-watchdog.{service,timer} |
| relay config (holds credentials) | ~/.config/socksy/relay.yaml (chmod 600) |
| saved profiles | ~/.config/socksy/profiles (chmod 600) |
| optional config | ~/.config/socksy/config |
| env-backend exports | ~/.config/socksy/env.sh (chmod 600, env backend only) |
| local relay listener | 127.0.0.1:1081 |
Security notes
-
Proxy credentials are stored in plain text on disk, in the relay config, the systemd unit, and the profiles file, all written with
600permissions (only your user can read them). This is standard for local proxy setups, but don't commit these files or share them. -
Credentials are kept off the relay's command line. Passing them as
gost -F socks5://user:pass@host:portwould put the password in/proc/<pid>/cmdline, which is world-readable on a default Linux kernel, so any local user could read it out ofpswhile the relay ran, regardless of the600files. socksy instead hands gost a600config file.socksy statusreports which mode is in use, and you can force it either way withrelay_creds(autois the default;filerefuses to start otherwise,argsrestores the old command-line behaviour):relay_creds = fileOn a gost too old to accept a generated config, socksy falls back to the command line and says so.
-
socksy never sends your credentials anywhere except to the upstream proxy you specify.