.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "KAFS-CLIENT.CONF 5" .TH KAFS-CLIENT.CONF 5 "2023-02-05" "0.5-4" "kafs-client" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" /etc/kafs/client.conf \- kAFS filesystem configuration .SH "DESCRIPTION" .IX Header "DESCRIPTION" Configuration information for the in-kernel kAFS filesystem can be provided in the \f(CW\*(C`/etc/kafs/\*(C'\fR directory. This may include the following: .IP "\- A list of cells to be preconfigured" 4 .IX Item "- A list of cells to be preconfigured" .PD 0 .IP "\- Fallback addresses for each cell" 4 .IX Item "- Fallback addresses for each cell" .ie n .IP "\- The name of the default cell (the @cell substitution)" 4 .el .IP "\- The name of the default cell (the \f(CW@cell\fR substitution)" 4 .IX Item "- The name of the default cell (the @cell substitution)" .ie n .IP "\- A list of strings for (the @sys substitution)" 4 .el .IP "\- A list of strings for (the \f(CW@sys\fR substitution)" 4 .IX Item "- A list of strings for (the @sys substitution)" .PD .PP When the \f(CW\*(C`afs.mount\*(C'\fR service is started by systemd (1), a configuration service (\f(CW\*(C`kafs\-config.service\*(C'\fR) runs first and loads the configuration into the kernel from the \f(CW\*(C`client.conf\*(C'\fR file. This contains directives to include other things, such as the contents of the \f(CW\*(C`client.d/\*(C'\fR directory and the generic public cell database. .PP Once the \f(CW\*(C`afs.mount\*(C'\fR service is started (or if an \s-1AFS\s0 volume is manually mounted), if a mountpoint is triggered, the kernel will upcall by means of \f(CW\*(C`request\-key (8)\*(C'\fR to look up addresses for the Volume Location servers for the named cell. This will also parse the configuration. .SH "CONFIGURATION FILE FORMAT" .IX Header "CONFIGURATION FILE FORMAT" The file format is based on the \s-1MIT\s0 Kerberos configuration file format. There are a couple of general directives: .IP "include /path/to/file" 4 .IX Item "include /path/to/file" This includes the contents of the named file in the parse at this point. .IP "includedir /path/to/dir/" 4 .IX Item "includedir /path/to/dir/" This includes the files in the named directory in the parse at this point. Files that have names beginning with \*(L".\*(R" or ending with \*(L"~\*(R" are ignored. .PP Leading and trailing whitespace on a line is ignored. Any line otherwise beginning with a \*(L"#\*(R" character is considered a comment and ignored. .PP Any line that contains a label bounded by square brackets, e.g. \f(CW\*(C`[cells]\*(C'\fR, by itself on that line denotes a switch to the section specified by that label. .PP Configuration data is specified within a named section as a series of \&\f(CW\*(C`key = value\*(C'\fR 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 \*(L"=\*(R" symbol is ignored. .PP For example: .PP .Vb 10 \& [cells] \& rivendell.example.com = { \& description = "Last Homely Cell" \& use_dns = yes \& servers = { \& elrond.rivendell.example.com = { \& address = 192.0.2.23 \& } \& } \& } .Ve .PP 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. .PP 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: .PP .Vb 5 \& [cells] \& rivendell.example.com = { \& description = "Foo" \& use_dns = no \& }* .Ve .PP Strings that are interpreted as boolean values are classed as false if they match one of: \*(L"0\*(R", \*(L"f\*(R", \*(L"false\*(R", \*(L"n\*(R", \*(L"no\*(R", or \*(L"off\*(R". Boolean values are classed as true if they match one off: \*(L"1\*(R", \*(L"t\*(R", \*(L"true\*(R", \&\*(L"y\*(R", \*(L"yes\*(R", or \*(L"on\*(R". Boolean matches are case-independent. .SH "GENERAL SETTINGS" .IX Header "GENERAL SETTINGS" The first section contains general system-level settings shared between all utilities and the kernel. This is denoted by the section label \f(CW\*(C`[defaults]\*(C'\fR. .PP The system settings that may be changed are configured in this section with the following key-value pairs: .IP "thiscell = " 4 .IX Item "thiscell = " This sets the name of the local cell. This will be used to configure the \f(CW@cell\fR path substitution and will also supply the default cellname for aklog-kafs (1). .IP "sysname = []*" 4 .IX Item "sysname = []*" This specifies a (potentially empty) list of strings which the kernel should attempt to substitute in turn for \f(CW@sys\fR at the end of a filename until a match is found. .SH "CELL DEFINITIONS" .IX Header "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 \f(CW\*(C`[cells]\*(C'\fR. .PP 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.: .PP .Vb 4 \& [cells] \& rivendell.example.com = { \& ... \& } .Ve .PP A cell definition may contain any number of key=value pairs. The keys that are taken note of are: .IP "description = " 4 .IX Item "description = " This is a text description for the cell. .IP "show_cell = " 4 .IX Item "show_cell = " Whether a cell should be shown in /afs. .IP "use_dns = " 4 .IX Item "use_dns = " Whether address look ups for a cell may use the \s-1DNS.\s0 .IP "kerberos_realm = " 4 .IX Item "kerberos_realm = " The name of the Kerberos realm to use for a cell by default. .IP "servers = { ... }" 4 .IX Item "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. .Sp The elements in the list of server details attached to each server can comprise the following keys: .RS 4 .IP "type = vlserver" 4 .IX Item "type = vlserver" The server is an \s-1AFS\s0 Volume Location server. This is the default. .IP "type = ptserver" 4 .IX Item "type = ptserver" The server is an \s-1AFS\s0 Protection server. .IP "address = [/]
[:]" 4 .IX Item "address = [/]
[:]" Specify a single address for a server. The \f(CW\*(C`address\*(C'\fR 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 \f(CW\*(C`protocol\*(C'\fR is optional; currently only \f(CW\*(C`udp\*(C'\fR is supported. The \f(CW\*(C`port\*(C'\fR is also optional and may be specified to change the \s-1UDP\s0 port from the default for the server type. .RE .RS 4 .RE .SH "EXAMPLE" .IX Header "EXAMPLE" .Vb 3 \& [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 \& } \& } \& } .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBkafs\fR(7), \fBkafs-check-config\fR(8), \fBkafs-preload\fR(8), \fBsystemd\fR(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2019 Red Hat, Inc. All Rights Reserved. .PP Written by David Howells (dhowells@redhat.com) .PP This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.