---
name: "kafs-client.conf"
section: "5"
platform: "linux"
package: "kafs-client"
version: "0.5-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/kafs-client.conf"
---

# kafs-client.conf(5)

kAFS filesystem configuration

## NAME

/etc/kafs/client.conf - kAFS filesystem configuration

## DESCRIPTION

Configuration information for the in-kernel kAFS filesystem can be provided in the `"/etc/kafs/"` directory.  This may include the following:

- \- A list of cells to be preconfigured

  - \- Fallback addresses for each cell

  - \- The name of the default cell (the @cell substitution)

  - \- A list of strings for (the @sys substitution)

  When the `"afs.mount"` service is started by systemd (1), a configuration service (`"kafs-config.service"`) runs first and loads the configuration into the kernel from the `"client.conf"` file.  This contains directives to include other things, such as the contents of the `"client.d/"` directory and the generic public cell database.

Once the `"afs.mount"` service is started (or if an AFS volume is manually mounted), if a mountpoint is triggered, the kernel will upcall by means of `"request-key (8)"` to look up addresses for the Volume Location servers for the named cell.  This will also parse the configuration.

## CONFIGURATION FILE FORMAT

The file format is based on the MIT Kerberos configuration file format.  There are a couple of general directives:

- include /path/to/file

  This includes the contents of the named file in the parse at this point.

- includedir /path/to/dir/

  This includes the files in the named directory in the parse at this point.  Files that have names beginning with "." or ending with "~" are ignored.

Leading and trailing whitespace on a line is ignored.  Any line otherwise beginning with a "#" character is considered a comment and ignored.

Any line that contains a label bounded by square brackets, e.g. `"[cells]"`, by itself on that line denotes a switch to the section specified by that label.

Configuration data is specified within a named section as a series of `"key = value"` pairs, where a value may be one of nothing, an unquoted string, a quoted string or a braced lists containing further key=value pairs.  Whitespace either side of the "=" symbol is ignored.

For example:

```
      [cells]
      rivendell.example.com = {
        description = "Last Homely Cell"
        use_dns = yes
        servers = {
                elrond.rivendell.example.com = {
                        address = 192.0.2.23
                }
        }
      }
```

If two or more consecutive clauses specify values for the same key sequence (so cells:rivendell.example.com:use\_dns, for example), then they are merged together to form a single list.  If a single value is expected for a configuration item, the last element in the list is taken.

To prevent overriding by subsequent conflicting configuration, an asterisk can be placed after the closing brace in a braced list to indicate that that list is closed, for example:

```
      [cells]
      rivendell.example.com = {
        description = "Foo"
        use_dns = no
      }*
```

Strings that are interpreted as boolean values are classed as false if they match one of: "0", "f", "false", "n", "no", or "off".  Boolean values are classed as true if they match one off: "1", "t", "true", "y", "yes", or "on".  Boolean matches are case-independent.

## GENERAL SETTINGS

The first section contains general system-level settings shared between all utilities and the kernel.  This is denoted by the section label `"[defaults]"`.

The system settings that may be changed are configured in this section with the following key-value pairs:

- thiscell = \<cellname\>

  This sets the name of the local cell.  This will be used to configure the `@cell` path substitution and will also supply the default cellname for aklog-kafs (1).

- sysname = \[\<systype\>\]\*

  This specifies a (potentially empty) list of strings which the kernel should attempt to substitute in turn for `@sys` at the end of a filename until a match is found.

## CELL DEFINITIONS

The second section contains a list of preconfigured cells, to be used in preloading the cell list in /afs and also to provide fallback or override address data for locating Volume Location servers.  This is denoted by the section label `"[cells]"`.

Within the cell list, each cell is declared with a key=value pair, where the key is the name of the cell and the value is a braced list indicating the details, e.g.:

```
      [cells]
      rivendell.example.com = {
        ...
      }
```

A cell definition may contain any number of key=value pairs.  The keys that are taken note of are:

- description = \<string\>

  This is a text description for the cell.

- show\_cell = \<boolean\>

  Whether a cell should be shown in /afs.

- use\_dns = \<boolean\>

  Whether address look ups for a cell may use the DNS.

- kerberos\_realm = \<string\>

  The name of the Kerberos realm to use for a cell by default.

- servers = { ... }

  A list of servers for the cell, where each element in the list is a key=value pair, where the key is the name of a server and the value is a braced section of the details for that server.

  The elements in the list of server details attached to each server can comprise the following keys:

  - type = vlserver

    The server is an AFS Volume Location server.  This is the default.

  - type = ptserver

    The server is an AFS Protection server.

  - address = \[\<protocol\>/\]\<address\>\[:\<port\>\]

    Specify a single address for a server.  The `"address"` is required and can be a single IPv4 or a single IPv6 address, and may be brackets with square brackets (to avoid confusion with the port number, if specified).  The `"protocol"` is optional; currently only `"udp"` is supported.  The `"port"` is also optional and may be specified to change the UDP port from the default for the server type.

## EXAMPLE

```
      [defaults]
      thiscell = rivendell.example.com
      sysname = fedora28_x86 amd64_linux
      [cells]
      corp.example.com = {
        description = "Valinor Corporation cell"
        use_dns = yes
        servers = {
                manwe.corp.example.com = {
                        address = 2001:db8:123::13
                        address = 203.0.113.19
                }
                ulmo.corp.example.com = {
                        address = [2001:db8:123::750c:1234]:6666
                        address = 203.0.113.3:6666
                }
                aule.corp.example.com = {
                        address = udp/[2001:db8:123::abcd:9090]
                        address = udp/203.0.113.189
                }
                namo.corp.example.com = {
                        type = ptserver
                        address = 2001:db8:123::8888
                        address = 203.0.113.88
                }
        }
      }
      rivendell.example.com = {
        description = "Last Homely Cell"
        servers = {
                elrond.rivendell.example.com = {
                        address = 192.0.2.23
                }
                arwen.rivendell.example.com = {
                        address = 192.0.2.75
                }
        }
      }
```

## SEE ALSO

[**kafs**(7)](/kafs/7.md), [**kafs-check-config**(8)](/kafs-check-config/8.md), [**kafs-preload**(8)](/kafs-preload/8.md), [**systemd**(1)](/systemd/1.md)

## COPYRIGHT

Copyright (C) 2019 Red Hat, Inc. All Rights Reserved.

Written by David Howells (dhowells@redhat.com)

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
