IPROP(8)
π IPROP β bestie edition π
okay so this is iprop(8), and the whole squad here is iprop, ipropd-master, and ipropd-slave β together they propagate transactions from a Heimdal Kerberos master KDC to slave KDCs. no cap, that's literally the whole job. π
β¨ SYNOPSIS β¨
ipropd-master [-c string | --config-file=string] [-r string |
--realm=string] [-k kspec | --keytab=kspec] [-d file |
--database=file] [--slave-stats-file=file]
[--time-missing=time] [--time-gone=time] [--detach]
[--version] [--help]
ipropd-slave [-c string | --config-file=string] [-r string |
--realm=string] [-k kspec | --keytab=kspec]
[--time-lost=time] [--detach] [--version] [--help] master
πΈ DESCRIPTION πΈ
ipropd-master is the one doing the β¨ sending β¨. it takes all the changes happening to a Heimdal Kerberos database and propagates them from the master Kerberos server it's running on, out to all the slave Kerberos servers that are running ipropd-slave. it's giving master-class main character energy, honestly.
So like, who are the slaves? they're defined by whatever's inside the slaves file in the KDC's database directory β think /var/heimdal/slaves. That file has principals, one per line, written like this:
iprop/slave@REALM
where slave is the hostname of the slave server inside that REALM. For example, bestie, literally this:
iprop/kerberos-1.example.com@EXAMPLE.COM
And on a slave? the argument master tells it the hostname of the master server it should be receiving updates from. simple as. π¦
Now here's the tea β β and this is the big difference from hprop(8): hprop(8) just ships the whole entire database over to the slaves on a regular schedule. iprop does NOT do that. iprop normally sends only the changes, as they happen on the master. so much chiller.
How does it keep track? The master gives every single transaction to the database a version number, and it keeps a log of all of them. The slaves know the latest version they've seen, so we can figure out whether they're in sync or not. And if a slave is sitting at an older version than the oldest one in the log?? welp. π the whole database has to be sent. no way around it.
That transaction log is also doing some serious heavy lifting: it implements a two-phase commit method (with roll-forward for recovery β¨) of updating the HDB. The order is iconic and non-negotiable:
- transactions get recorded in the log first,
- then in the HDB,
- then the log gets updated to mark the transaction as committed.
All these changes travel over a secure channel, on port 2121 by default. Normally you'd define that as "iprop/tcp" in /etc/services or wherever else your services database lives. And the master and every slave each need access to a keytab holding the keys for the iprop service principal on the local host. π
There's also a keep-alive feature, and it gets logged in the master's slave-stats file (like /var/heimdal/slave-stats).
π Supported options for ipropd-master:
-cstring,--config-file=string β config file time. (no extra notes, it's just that)-rstring,--realm=string β realm time. (same deal)-kkspec,--keytab=kspec β keytab to get authentication from π-dfile,--database=file β Database (default per KDC)--slave-stats-file=file β file for slave status information π--time-missing=time β time before slave is polled for presence (default 2 min)--time-gone=time β time of inactivity after which a slave is considered gone (default 5 min) π--detachβ detach from console--version--help
π§ Supported options for ipropd-slave:
-cstring,--config-file=string β config file, again-rstring,--realm=string β realm, again-kkspec,--keytab=kspec β keytab to get authentication from π--time-lost=time β time before server is considered lost (default 5 min) π--detachβ detach from console--version--help
oh and btw, time arguments for any of thosetimeoptions up there? they can be written like5 min, or300 s, or just a plain number of seconds. ur welcome π«Ά
π FILES π
slaves,slave-statsβ in the database directory πipropd-master.pid,ipropd-slave.pidβ in the database directory, or in the directory named by theHEIM_PIDFILE_DIRenvironment variable
π SEE ALSO π
krb5.conf(5), hprop(8), hpropd(8), iprop-log(8), kdc(8).
and that's the whole page, bestie π this one came from the Debian crew and it's dated May 24, 2005 β vintage, honestly, but it still ate. mwah ππβ¨
π¦ where this page comes from
- alpine 3.22: heimdal-doc 7.8.0-r4 Β· BSD-3-Clause
- alpine 3.23: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- alpine 3.24: heimdal-doc 7.8.0-r5 Β· BSD-3-Clause
- debian bookworm: heimdal-kdc 7.8.git20221117.28daf24+dfsg-2 Β· BSD-3-Clause
- debian trixie: heimdal-kdc 7.8.git20221117.28daf24+dfsg-9+deb13u1 Β· BSD-3-Clause
- epel 10: heimdal-server 7.8.0-26.el10_2 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- epel 9: heimdal-server 7.8.0-5.el9 Β· BSD and MIT
- fedora 43: heimdal-server 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-server 7.8.0-26.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- fedora 44: heimdal-server 7.8.0-28.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND HPND-export-US AND HPND-export2-US AND LicenseRef-Fedora-Public-Domain
- ubuntu jammy: heimdal-kdc 7.7.0+dfsg-3ubuntu1 Β· BSD-3-Clause
- ubuntu noble: heimdal-kdc 7.8.git20221117.28daf24+dfsg-5ubuntu3 Β· BSD-3-Clause
- ubuntu questing: heimdal-kdc 7.8.git20221117.28daf24+dfsg-9ubuntu1
- ubuntu resolute: heimdal-kdc 7.8.git20221117.28daf24+dfsg-11ubuntu1 Β· BSD-3-Clause
- ubuntu stonking: heimdal-kdc 7.8.git20240113.1b4565a+dfsg-2ubuntu1 Β· BSD-3-Clause
- Copyright (c) 2005 Kungliga Tekniska HΓΆgskolan
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms