Documentation / Contents - CyLogin
CyLogin ships secure defaults and a few deliberately unsafe options that restore 1990s IRIX clogin friendliness when you turn them on on purpose. Longer prose: src/cylogin/docs/security.md. Setup of the service file: Setting Up.
Behavior | Default | Graphical root login | refused; root not in face grid | Null-password walk-in | refused | /dev/null shell tiles | hidden | Greeter process | nobody (never root) | Auth dir | 0711; cookies 0600 | Failure copy/time | uniform (no user enum) | --canonical | look only; does not open unsafe knobs |
Unsafe knobs (all off): allow_root_login, allow_null_passwd, show_devnull_shell. Autologin is separate and also off by default.
Built with ./configure --with-pam. Service name:
/etc/pam.d/cylogin
Samples under share/cylogin:
cylogin-enable installs the matching sample only when missing. NetBSD skips PAM entirely (native master.passwd / crypt).
PAM may accept a directory user (AD/LDAP/Centrify). CyLogin still applies root / home / nologin / expiry rules afterward. Missing pam.d/cylogin fails closed when PAM was compiled in; there is no silent weaker path.
Many RHEL-family system-auth stacks carry pam_unix.so nullok. PAM alone would accept an empty typed password for a null-hash account. CyLogin refuses an empty typed password unless allow_null_passwd is on in cylogin.conf, after the root check and before trusting that PAM success. Defaults stay closed; demos opt in deliberately.
/var/lib/cyanotype/authdir mode 0711
Per-display cookie files (cylogind-_N, greeter-_N) mode 0600. The cookie IS the X authorization. World-writable authdir is a failure; enable and the PAM matrix check modes. Greeter runs as greeter_user (nobody) so an untrusted X client path does not talk to a root Motif process.
Concern | Stock XDM/login class | CyLogin default | PAM includes | common-* or system-auth | same class | Root at greeter | often PAM-allowed | refused unless allow_root_login | Null password | depends on nullok | refused unless allow_null_passwd | Greeter privilege | historically root X client| greeter as nobody | Cookie dir | xdm authDir modes | authdir 0711; cookies 0600 | Missing PAM file | PAM fail | fail closed with --with-pam |
Goal: no wider hole than a typical XDM/login seat, plus policy knobs that default safer.
Tree tool for negative tests on Linux CTs:
tools/cylogin-pam-matrix.sh
Covers good pass, wrong pass, empty typed, null-hash+empty (nullok closed), root empty, /etc/nologin, authdir 0711, pam.d present. Run on snapshotted lab LXCs after enable. Punchlist acceptance lives in docs/punchlists/CYLOGIN-ENABLE.md.
Cyanotype Project. Blueprint Desktop. BSD 2-clause.
Not affiliated with Silicon Graphics. SGI, IRIX, and Indigo Magic
belong to their owners. 1.0 is aimed at 31 October 2026.