## CVM

# CVM Fact Definitions

## Types

Facts may have one of two types:

- string: An arbitrary length series of ASCII characters (not containing `NUL` in the version 1 protocol).
- integer: A series of ASCII numerals interpreted as an unsigned decimal value.

## Numbering

All predefined fact numbers will have values between 1 and 127 inclusive. All other fact numbers (from 128 to 255) are reserved for local or experimental use. Facts marked as "required" must be present at least once in the result. Facts marked as "multiple" may be present more than once; all other facts are optional and must be present at most once. Facts may be reported in any order, and that order carries no significance.

# | Name | Type | Required/ Optional/ Multiple | Description
--- | --- | --- | --- | ---
`1` | `CVM_FACT_USERNAME` | string | Required | The login user name.
`2` | `CVM_FACT_USERID` | integer | Required | The user numerical ID.
`3` | `CVM_FACT_GROUPID` | integer | Required | The group numerical ID.
`4` | `CVM_FACT_REALNAME` | string | Optional | The user's real name.
`5` | `CVM_FACT_DIRECTORY` | string | Required | The "home" directory.
`6` | `CVM_FACT_SHELL` | string | Optional | The login shell.
`7` | `CVM_FACT_GROUPNAME` | string | Optional | The login group name, as reported by the system tables.
`8` | `CVM_FACT_SUPP_GROUPID` | integer | Optional Multiple | Supplemental group ID list, must contain the primary group ID.
`9` | `CVM_FACT_SYS_USERNAME` | string | Optional | The system user name. For virtual login systems, this may differ from fact #1. Where present, this should be the user name associated with the user ID as reported by the system tables (ie `getpwuid`).
`10` | `CVM_FACT_SYS_DIRECTORY` | string | Optional | The base "home" directory. For virtual login systems, this may differ from fact #5. Where present, this should be the directory associated with the user ID as reported by the system tables (ie `getpwuid`).
`11` | `CVM_FACT_OFFICE_LOCATION` | string | Optional | The office location from the GECOS field.
`12` | `CVM_FACT_WORK_PHONE` | string | Optional | The work phone number from the GECOS field.
`13` | `CVM_FACT_HOME_PHONE` | string | Optional | The home phone number from the GECOS field.
`14` | `CVM_FACT_DOMAIN` | string | Optional | The domain name associated with the validated credentials.
`15` | `CVM_FACT_MAILBOX` | string | Optional | The path to the mailbox file or directory. If this path is not prefixed with a slash ('/'), it must be interpreted as relative to the home directory.
`16` | `CVM_FACT_OUTOFSCOPE` | integer | Optional | This fact is only relevant on permanent failures. If present, a non-zero value indicates that validation failed because the given credentials were outside of the scope for which the module is authoritative.