KADMIN(1)
π KADMIN(1) π
okay bestie, gather round π«Ά this is kadmin straight out of the MIT Kerberos manual, section 1, and it's lowkey the whole backstage pass to your Kerberos realm. It's giving "I run the database, you just live in it" π
β¨ NAME β¨
kadmin β the Kerberos V5 database administration program π
β¨ SYNOPSIS β¨
kadmin [-O|-N] [-r realm] [-p principal] [-q query] [[-c cache_name]|[-k
[-t keytab]]|-n] [-w password] [-s admin_server[:port]] [command
args...]
kadmin.local [-r realm] [-p principal] [-q query] [-d dbname] [-e
enc:salt ...] [-m] [-x db_args] [command args...]
β¨ DESCRIPTION β¨
so kadmin and kadmin.local are both command-line interfaces to the Kerberos V5 administration system πΈ They do nearly the same stuff β the one tiny difference is that kadmin.local goes straight at the KDC database itself, while kadmin does its thing through kadmind (see the kadmind page, section 8). Unless this page says otherwise out loud, "kadmin" means both of them, mmkay? π What does it actually do? It maintains Kerberos principals, password policies, and service key tables (keytabs). Iconic, honestly.
The remote kadmin client uses Kerberos to authenticate to kadmind using the service principal kadmin/admin or kadmin/ADMINHOST (where ADMINHOST is the fully-qualified hostname of the admin server). If your credentials cache has a ticket for one of those principals, and you passed the -c credentials_cache option, then boom β that ticket is what authenticates you to kadmind π Otherwise, the -p and -k options are what specify the client Kerberos principal name used to authenticate. Once kadmin has figured out the principal name, it asks the KDC for a service ticket, and uses that service ticket to authenticate to kadmind. No cap.
And because kadmin.local goes straight at the KDC database, it usually has to be run directly on the primary KDC with enough permissions to read that database. Unless β plot twist β the KDC database uses the LDAP database module, in which case kadmin.local can be run on any host that can reach the LDAP server π¦
β¨ OPTIONS β¨
-r realmβ use realm as the default database realm π-p principalβ authenticate as principal. If you don't,kadminwill append/adminto the primary principal name of the default ccache, or to the value of theUSERenvironment variable, or to the username as obtained withgetpwuidβ in that order of preference, bestie, it's a whole priority list π-kβ use a keytab to decrypt the KDC response instead of getting asked for a password. In this case the default principal becomeshost/hostnameπ If no keytab was specified with the-toption, the default keytab gets used.-t keytabβ use keytab to decrypt the KDC response. Heads up: this one can only be used together with the-koption β οΈ-nβ requests anonymous processing π Two flavors of anonymous principals are supported. For fully anonymous Kerberos, configure PKINIT on the KDC and set uppkinit_anchorsin the client'skrb5.conf(section 5). Then use-nwith a principal shaped like@REALM(an empty principal name, then the at-sign, then a realm name). If the KDC allows it, you get an anonymous ticket. There's a second form too: these "realm-exposed" tickets hide who the client is but not which realm the client belongs to. For that mode, usekinit -nwith a normal principal name β if the KDC supports it, the principal (but not the realm) gets replaced by the anonymous principal. As of release 1.8, the MIT Kerberos KDC only supports fully anonymous operation π-c credentials_cacheβ use credentials_cache as the credentials cache. That cache should hold a service ticket for thekadmin/adminorkadmin/ADMINHOSTservice (whereADMINHOSTis the fully-qualified hostname of the admin server); you can grab one with thekinitprogram (section 1) β¨ If you skip this option,kadminrequests a fresh service ticket from the KDC and stores it in its own temporary ccache.-w passwordβ use password instead of being prompted for one. Use this one with care, bestie β it may expose the password to other users on the system via the process list π-q queryβ perform the specified query and then exit. In and out, no small talk π-d dbnameβ specifies the name of the KDC database. This option does not apply to the LDAP database module π«-s admin_server[:port]β specifies the admin server thatkadminshould contact π-mβ if you're usingkadmin.local, prompt for the database master password instead of reading it from a stash file π-e "enc:salt ..."β sets the keysalt list used for any new keys created. Check out Keysalt lists inkdc.conf(section 5) for the possible values π-Oβ force use of the oldAUTH_GSSAPIauthentication flavor π΄-Nβ prevent fallback to theAUTH_GSSAPIauthentication flavor π-x db_argsβ specifies the database-specific arguments. Peep the next section for the supported options π
Starting with release 1.14, if any command-line arguments are left over after the options, they get treated as a single query to be executed. This mode is made for scripts, and it behaves differently from interactive mode in a few ways:
- Query arguments are split by the shell, not by
kadmin. - Informational and warning messages are suppressed. Error messages and query output (like for
get_principal) will still show up though π¬ - Confirmation prompts are disabled (as if
-forcewas given). Password prompts will still be issued as required π - The exit status will be non-zero if the query fails.
The -q option does not carry these behavior differences; that query gets processed as if you typed it in interactively. And the -q option cannot be used in combination with a query in the remaining arguments β pick one, bestie, not both π
β¨ DATABASE OPTIONS β¨
Database options can be used to override database-specific defaults π
ποΈ Supported options for the DB2 module
-x dbname=filename β specifies the base filename of the DB2 database π-x lockiterβ make iteration operations hold the lock for the duration of the entire operation, rather than temporarily releasing the lock while handling each principal. This is the default behavior, but the option exists so you can override a[dbmodules]setting from the command line. First introduced in release 1.13 π-x unlockiterβ make iteration operations unlock the database for each principal, instead of holding the lock for the whole entire operation. First introduced in release 1.13 π
ποΈ Supported options for the LDAP module
-x host=ldapuriβ specifies the LDAP server to connect to by a LDAP URI π-x binddn=bind_dnβ specifies the DN used to bind to the LDAP server πͺͺ-x bindpwd=passwordβ specifies the password or SASL secret used to bind to the LDAP server. Using this option may expose the password to other users on the system via the process list π¬ β to avoid that, stash the password with thestashsrvpwcommand ofkdb5_ldap_util(section 8) instead.-x sasl_mech=mechanismβ specifies the SASL mechanism used to bind to the LDAP server. The bind DN is ignored if a SASL mechanism is used. New in release 1.13 β¨-x sasl_authcid=nameβ specifies the authentication name used when binding to the LDAP server with a SASL mechanism, if the mechanism requires one. New in release 1.13 β¨-x sasl_authzid=nameβ specifies the authorization name used when binding to the LDAP server with a SASL mechanism. New in release 1.13 β¨-x sasl_realm=realmβ specifies the realm used when binding to the LDAP server with a SASL mechanism, if the mechanism uses one. New in release 1.13 β¨-x debug=levelβ sets the OpenLDAP client library debug level. level is an integer to be interpreted by the library. Debugging messages get printed to standard error. New in release 1.12 π
β¨ COMMANDS β¨
When you're using the remote client, the available commands may be restricted according to the privileges specified in the kadm5.acl file (section 5) on the admin server π
π add_principal
add_principal [options] newprinc
Creates the principal newprinc, prompting you twice for a password π If no password policy is specified with the -policy option, and a policy named default exists, that default policy is assigned to the principal. But β important β creating a policy named default will not automatically assign this policy to principals that already exist π This policy assignment can be suppressed with the -clearpolicy option.
This command requires the add privilege π
Aliases: addprinc, ank
Options:
-expire expdateβ (agetdatetime string) the expiration date of the principal β°-pwexpire pwexpdateβ (agetdatetime string) the password expiration date π-maxlife maxlifeβ (aTime durationor agetdatetime string) the maximum ticket life for the principal β³-maxrenewlife maxrenewlifeβ (aTime durationor agetdatetime string) the maximum renewable life of tickets for the principal π-kvno kvnoβ the initial key version number π’-policy policyβ the password policy used by this principal. If not specified, the policydefaultis used if it exists (unless-clearpolicyis specified) π-clearpolicyβ prevents any policy from being assigned when-policyis not specified π«{-|+}allow_postdatedβ-allow_postdatedprohibits this principal from obtaining postdated tickets.+allow_postdatedclears this flag ποΈ{-|+}allow_forwardableβ-allow_forwardableprohibits this principal from obtaining forwardable tickets.+allow_forwardableclears this flag π¨{-|+}allow_renewableβ-allow_renewableprohibits this principal from obtaining renewable tickets.+allow_renewableclears this flag β»οΈ{-|+}allow_proxiableβ-allow_proxiableprohibits this principal from obtaining proxiable tickets.+allow_proxiableclears this flag π§³{-|+}allow_dup_skeyβ-allow_dup_skeydisables user-to-user authentication for this principal by prohibiting others from obtaining a service ticket encrypted in this principal's TGT session key.+allow_dup_skeyclears this flag π+requires_preauth,-requires_preauthβ okay so+requires_preauthmeans this principal has to preauthenticate before it's allowed tokinit.-requires_preauthclears that flag. And when+requires_preauthis set on a service principal, the KDC will only issue service tickets for that service principal if the client's initial auth was done using preauthentication. periodt. π+requires_hwauth,-requires_hwauthβ+requires_hwauthsays this principal has to preauthenticate with a hardware device before it cankinit.-requires_hwauthclears that flag. When+requires_hwauthis set on a service principal, the KDC will only issue service tickets for that service principal if the client's initial auth was done using a hardware device to preauthenticate. slay. π+ok_as_delegate,-ok_as_delegateβ+ok_as_delegatesets the okay as delegate flag on tickets issued with this principal as the service. Clients may use this flag as a hint that credentials should be delegated when authenticating to the service.-ok_as_delegateclears this flag. vibe check passed. π-allow_svr,+allow_svrβ-allow_svrprohibits the issuance of service tickets for this principal. In release 1.17 and later, user-to-user service tickets are still allowed unless the-allow_dup_skeyflag is also set.+allow_svrclears this flag. no cap. β¨-allow_tgs_req,+allow_tgs_reqβ-allow_tgs_reqspecifies that a Ticket-Granting Service (TGS) request for a service ticket for this principal is not permitted.+allow_tgs_reqclears this flag. big yikes if you try. π-allow_tix,+allow_tixβ-allow_tixforbids the issuance of any tickets for this principal.+allow_tixclears this flag. literally locked out. π+needchange,-needchangeβ+needchangeforces a password change on the next initial authentication to this principal.-needchangeclears this flag. glow up time. π¦+password_changing_serviceβ marks this principal as a password change service principal. iconic. π+ok_to_auth_as_delegateβ allows this principal to acquire forwardable tickets to itself from arbitrary users, for use with constrained delegation. main character energy. π+no_auth_data_requiredβ prevents PAC or AD-SIGNEDPATH data from being added to service tickets for the principal. no extra baggage. π+lockdown_keysβ prevents keys for this principal from leaving the KDC viakadmind. Thechpassandextractoperations are denied for a principal with this attribute. Thechrandoperation is allowed, but will not return the new keys. Thedeleteandrenameoperations are also denied if this attribute is set, in order to prevent a malicious administrator from replacing principals likekrbtgt/*orkadmin/*with new principals without the attribute. This attribute can be set via the network protocol, but can only be removed usingkadmin.local. so serious. π-randkeyβ sets the key of the principal to a random value. randomize it bestie. π²-nokeyβ causes the principal to be created with no key. New in release 1.12. no key, no problem. β¨-pw passwordβ sets the password of the principal to the specified string and does not prompt for a password. Note: using this option in a shell script may expose the password to other users on the system via the process list. be careful, fr fr. π-e enc:salt,...β uses the specified keysalt list for setting the keys of the principal. See Keysalt lists <#keysalt-lists> in kdc.conf <#kdc-conf-5> for a list of possible values. key glow up. π-x db_princ_argsβ indicates database-specific options. The options for the LDAP database module are:-x dn=dnβ specifies the LDAP object that will contain the Kerberos principal being created.-x linkdn=dnβ specifies the LDAP object to which the newly created Kerberos principal object will point.-x containerdn=container_dnβ specifies the container object under which the Kerberos principal is to be created.-x tktpolicy=policyβ associates a ticket policy to the Kerberos principal.
Note: listen up bestie: - Thecontainerdnandlinkdnoptions cannot be specified with thednoption. - If thednorcontainerdnoptions are not specified while adding the principal, the principals are created under the principal container configured in the realm or the realm container. -dnandcontainerdnshould be within the subtrees or principal container configured in the realm.
Example:
kadmin: addprinc jennifer
No policy specified for "jennifer@ATHENA.MIT.EDU";
defaulting to no policy.
Enter password for principal jennifer@ATHENA.MIT.EDU:
Re-enter password for principal jennifer@ATHENA.MIT.EDU:
Principal "jennifer@ATHENA.MIT.EDU" created.
kadmin:
modify_principal
modify_principal [options] principal
Modifies the specified principal, changing the fields as specified. The options to add_principal also apply to this command, except for the -randkey, -pw, and -e options. In addition, the option -clearpolicy will clear the current policy of a principal. glow up that principal. β¨
This command requires the modify privilege.
Alias: modprinc
Options (in addition to the addprinc options):
-unlockβ unlocks a locked principal (one which has received too many failed authentication attempts without enough time between them according to its password policy) so that it can successfully authenticate. free them from jail. π
rename_principal
rename_principal [-force] old_principal new_principal
Renames the specified old_principal to new_principal. This command prompts for confirmation, unless the -force option is given. no take-backs. π
This command requires the add and delete privileges.
Alias: renprinc
add_alias
add_alias alias_princ target_princ
Create an alias alias_princ pointing to target_princ. Aliases may be chained (that is, target_princ may itself be an alias) up to a depth of 10. chain them like friendship bracelets. π§
This command requires the add privilege for alias_princ and the modify privilege for target_princ.
(New in release 1.22.) fresh drop! π
Aliases: alias
delete_principal
delete_principal [-force] principal
Deletes the specified principal or alias from the database. This command prompts for deletion, unless the -force option is given. gone, bye. π
This command requires the delete privilege.
Alias: delprinc
change_password
change_password [options] principal
Changes the password of principal. Prompts for a new password if neither -randkey or -pw is specified. new password, who dis? π
This command requires the changepw privilege, or that the principal running the program is the same as the principal being changed.
Alias: cpw
The following options are available:
-randkeyβ sets the key of the principal to a random value. π²-pw passwordβ set the password to the specified string. Using this option in a script may expose the password to other users on the system via the process list. careful! π-e enc:salt,...β uses the specified keysalt list for setting the keys of the principal. See Keysalt lists <#keysalt-lists> in kdc.conf <#kdc-conf-5> for a list of possible values. π-keepoldβ keeps the existing keys in the database. This flag is usually not necessary except perhaps forkrbtgtprincipals. hoard those keys. π
Example:
kadmin: cpw systest
Enter password for principal systest@BLEEP.COM:
Re-enter password for principal systest@BLEEP.COM:
Password for systest@BLEEP.COM changed.
kadmin:
purgekeys
purgekeys [-all|-keepkvno oldest_kvno_to_keep] principal
Purges previously retained old keys (e.g., from change_password -keepold) from principal. If -keepkvno is specified, then only purges keys with kvnos lower than oldest_kvno_to_keep. If -all is specified, then all keys are purged. The -all option is new in release 1.12. clean slate. π§Ή
This command requires the modify privilege.
get_principal
get_principal [-terse] principal
Gets the attributes of principal. With the -terse option, outputs fields as quoted tab-separated strings. spill the tea. β
This command requires the inquire privilege, or that the principal running the program to be the same as the one being listed.
Alias: getprinc
Examples:
kadmin: getprinc tlyu/admin
Principal: tlyu/admin@BLEEP.COM
Expiration date: [never]
Last password change: Mon Aug 12 14:16:47 EDT 1996
Password expiration date: [never]
Maximum ticket life: 0 days 10:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Mon Aug 12 14:16:47 EDT 1996 (bjaspan/admin@BLEEP.COM)
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 1
Key: vno 1, aes256-cts-hmac-sha384-192
MKey: vno 1
Attributes:
Policy: [none]
kadmin: getprinc -terse systest
systest@BLEEP.COM 3 86400 604800 1
785926535 753241234 785900000
tlyu/admin@BLEEP.COM 786100034 0 0
kadmin:
list_principals
list_principals [expression]
Retrieves all or some principal names. expression is a shell-style glob expression that can contain the wild-card characters ?, *, and []. All principal names matching the expression are printed. If no expression is provided, all principal names are printed. If the expression does not contain an @ character, an @ character followed by the local realm is appended to the expression. find your people. π«Ά
This command requires the list privilege.
Alias: listprincs, get_principals, getprincs
Example:
kadmin: listprincs test*
test3@SECURE-TEST.OV.COM
test2@SECURE-TEST.OV.COM
test1@SECURE-TEST.OV.COM
testuser@SECURE-TEST.OV.COM
kadmin:
get_strings
get_strings principal
Displays string attributes on principal. string theory but make it kerberos. π§΅
This command requires the inquire privilege.
Alias: getstrs
set_string
set_string principal name value
Sets a string attribute on principal. String attributes are used to supply per-principal configuration to the KDC and some KDC plugin modules. The following string attribute names are recognized by the KDC:
require_authβ names an authentication indicator that's required to authenticate to this principal as a service. You can stack several, separated by spaces, and then any of them will do the trick. (new in release 1.14 β¨)session_enctypesβ sets which encryption types are supported for session keys when this principal is authenticated to as a server. Peep Encryption types inkdc.conffor the full list of values that are accepted, bestie.otpβ turns on One Time Passwords (OTP) preauthentication for a client principal. The value is a JSON string that represents an array of objects, each with optionaltypeandusernamefields.pkinit_cert_matchβ a matching expression that defines which certificate attributes are required for the client certificate this principal uses during PKINIT authentication. Same format as thepkinit_cert_matchoption inkrb5.conf. (new in release 1.16 π)pac_privsvr_enctypeβ forces the encryption type of the PAC KDC checksum buffers to the one you name, for tickets issued to this server, by deriving a key from the localkrbtgtkey if that key is a different encryption type. You might need to set this to"aes256-sha1"on the cross-realmkrbtgtentry for an Active Directory realm when you're using aes-sha2 keys on the localkrbtgtentry.optional_pac_tkt_chksumβ a boolean that defines how the KDC behaves when an expected ticket checksum signed with one of this principal's keys just isn't in the PAC. That's typically the case for TGS or cross-realm TGS principals when they're processing S4U2Proxy requests.
This command requires the modify privilege.
Alias: setstr
Example:
set_string host/foo.mit.edu session_enctypes aes128-cts
set_string user@FOO.COM otp "[{""type"":""hotp"",""username"":""al""}]"
ποΈ del_string
del_string principal key
Deletes a string attribute from principal.
This command requires the delete privilege.
Alias: delstr
π add_policy
add_policy [options] policy
Adds a password policy named policy to the database. slay
This command requires the add privilege.
Alias: addpol
The following options are available:
-maxlifetime β (Time duration orgetdatetime string) sets the maximum lifetime of a password.-minlifetime β (Time duration orgetdatetime string) sets the minimum lifetime of a password.-minlengthlength β sets the minimum length of a password.-minclassesnumber β sets the minimum number of character classes a password needs. The five character classes are: lower case, upper case, numbers, punctuation, and whitespace/unprintable characters.-historynumber β sets how many past keys get kept for a principal. Heads up: this option is not supported with the LDAP KDC database module.-maxfailuremaxnumber β sets how many authentication failures happen before the principal gets locked. Authentication failures are only tracked for principals that require preauthentication. The failed-attempt counter resets to0after a successful authentication attempt. A maxnumber value of0(the default) disables lockout entirely.-failurecountintervalfailuretime β (Time duration orgetdatetime string) sets the allowable time between authentication failures. If a failure happens after failuretime has elapsed since the previous failure, the number of authentication failures resets to1. A failuretime value of0(the default) means forever.-lockoutdurationlockouttime β (Time duration orgetdatetime string) sets how long the principal is locked out of authenticating if too many authentication failures pile up without the specified failure count interval elapsing. A duration of0(the default) means the principal stays locked out until someone administratively unlocks it withmodprinc -unlock.-allowedkeysaltsβ specifies the key/salt tuples supported for long-term keys when setting or changing a principal's password/keys. Peep Keysalt lists inkdc.conffor the accepted values, but note that key/salt tuples must be separated with commas (',') only. To clear the allowed key/salt policy, use a value of'-'.
Example:
kadmin: add_policy -maxlife "2 days" -minlength 5 guests
kadmin:
βοΈ modify_policy
modify_policy [options] policy
Modifies the password policy named policy. The options are exactly as described for add_policy.
This command requires the modify privilege.
Alias: modpol
π delete_policy
delete_policy [-force] policy
Deletes the password policy named policy. It prompts for confirmation before deleting, bestie β no accidental deletions here. The command will fail if the policy is in use by any principals.
This command requires the delete privilege.
Alias: delpol
Example:
kadmin: del_policy guests
Are you sure you want to delete the policy "guests"?
(yes/no): yes
kadmin:
π get_policy
get_policy [ -terse ] policy
Displays the values of the password policy named policy. With the -terse flag, it outputs the fields as quoted strings separated by tabs.
This command requires the inquire privilege.
Alias: getpol
Examples:
kadmin: get_policy admin
Policy: admin
Maximum password life: 180 days 00:00:00
Minimum password life: 00:00:00
Minimum password length: 6
Minimum number of password character classes: 2
Number of old keys kept: 5
Reference count: 17
kadmin: get_policy -terse admin
admin 15552000 0 6 2 5 17
kadmin:
The "Reference count" is the number of principals using that policy. Heads up though β with the LDAP KDC database module, the reference count field is not meaningful.
ποΈ list_policies
list_policies [expression]
Retrieves all or some policy names. expression is a shell-style glob expression that can contain the wild-card characters ?, *, and []. All policy names matching the expression are printed. If no expression is provided, every existing policy name gets printed.
This command requires the list privilege.
Aliases: listpols, get_policies, getpols.
Examples:
kadmin: listpols
test-pol
dict-only
once-a-min
test-pol-nopw
kadmin: listpols t*
test-pol
test-pol-nopw
kadmin:
π ktadd
ktadd [options] principal
ktadd [options] -glob princ-exp
Adds a principal β or all principals matching princ-exp β to a keytab file. Each principal's keys get randomized in the process. The rules for princ-exp are described over in the list_principals command.
This command requires the inquire and changepw privileges. With the -glob form, it also needs the list privilege.
The options are:
-k[eytab]keytab β use keytab as the keytab file. Otherwise, the default keytab is used.-eenc:salt,... β uses the specified keysalt list for setting the new keys of the principal. Peep Keysalt lists inkdc.conffor a list of possible values.-qβ display less verbose information.-norandkeyβ do not randomize the keys. The keys and their version numbers stay unchanged. This option cannot be specified in combination with the-eoption.
An entry for each of the principal's unique encryption types is added, ignoring multiple keys with the same encryption type but different salt types.
Alias: xst
Example:
kadmin: ktadd -k /tmp/foo-new-keytab host/foo.mit.edu
Entry for principal host/foo.mit.edu@ATHENA.MIT.EDU with kvno 3,
encryption type aes256-cts-hmac-sha1-96 added to keytab
FILE:/tmp/foo-new-keytab
kadmin:
π§Ή ktremove
ktremove [options] principal [kvno | all | old]
Removes entries for the specified principal from a keytab. Requires no permissions, since this doesn't require database access. we love a low-maintenance icon
If the string "all" is specified, all entries for that principal are removed; if the string "old" is specified, all entries for that principal except those with the highest kvno are removed. Otherwise, the value specified is parsed as an integer, and all entries whose kvno match that integer are removed.
The options are:
-k[eytab]keytab β use keytab as the keytab file. Otherwise, the default keytab is used.-qβ display less verbose information.
Alias: ktrem
Example:
kadmin: ktremove kadmin/admin all
Entry for principal kadmin/admin with kvno 3 removed from keytab
FILE:/etc/krb5.keytab
kadmin:
π lock
Lock database exclusively. Use with extreme caution! π¨ This command only works with the DB2 KDC database module.
π unlock
Release the exclusive database lock. freedom β¨
π list_requests
Lists available for kadmin requests.
Aliases: lr, ?
πͺ quit
Exit program. If the database was locked, the lock is released.
Aliases: exit, q
π HISTORY
The kadmin program was originally written by Tom Yu at MIT, as an interface to the OpenVision Kerberos administration program.
π ENVIRONMENT
See kerberos for a description of Kerberos environment variables.
π SEE ALSO
kpasswd, kadmind, kerberos
π Author
MIT
Β©οΈ Copyright
1985-2026, MIT
and that's the whole page, bestie π«Ά you made it to the end. this one'skadminfrom MIT Kerberos 1.22.2 β yeah, version1.22.2, dated under theKADMIN(1)section of the manual. now go forth and administer some principals, you absolute main character ππ
π¦ where this page comes from
- fedora 44: krb5-server 1.22.2-2.fc44 Β· Brian-Gladman-2-Clause AND BSD-2-Clause AND (BSD-2-Clause OR GPL-2.0-or-later) AND BSD-2-Clause-first-lines AND BSD-3-Clause AND BSD-4-Clause AND CMU-Mach-nodoc AND FSFULLRWD AND HPND AND HPND-export2-US AND HPND-export-US AND HPND-export-US-acknowledgement AND HPND-export-US-modify AND ISC AND MIT AND MIT-CMU AND OLDAP-2.8 AND OpenVision
- fedora 44: krb5-server 1.22.2-4.fc44 Β· Brian-Gladman-2-Clause AND BSD-2-Clause AND (BSD-2-Clause OR GPL-2.0-or-later) AND BSD-2-Clause-first-lines AND BSD-3-Clause AND BSD-4-Clause AND CMU-Mach-nodoc AND FSFULLRWD AND HPND AND HPND-export2-US AND HPND-export-US AND HPND-export-US-acknowledgement AND HPND-export-US-modify AND ISC AND MIT AND MIT-CMU AND OLDAP-2.8 AND OpenVision
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms