DACS.VFS(5) DACS Formats and Conventions DACS.VFS(5)


dacs.vfs — the DACS virtual filestore


These files are part of the DACS suite.

The virtual filestore provides flexible ways for DACS and software built on top of DACS to obtain information regardless of how or where the information is stored. The DACS core accesses (almost) all configuration information through the virtual filestore layer, allowing information to be more easily shared and maintained, secured, or organized for better performance.

Sometimes it is easiest to store information in a regular file initially, where it can be modified using an ordinary text editor, but after some growth a database might improve performance. In some situations, accessing the information remotely, via HTTP, makes administration more convenient or is more secure. A goal of the virtual filestore is to make data storage alternatives easier to specify and change.

The vfs_uri and Item Types

Many DACS components need to access data to perform their function. The documentation for a component will specify a reserved, case-sensitive name called an item type for each data set that it may use. For example, dacspasswd(1) identifies the account information that it manages by the name passwds.

Item types start with an alphabetic character followed by zero or more alphanumerics, hyphens, and underscores. Item types used by DACS are always completely lower case. Some other item types used by DACS are federation_keys and jurisdiction_keys (used by dacskey(1) and others), and revocations (used by dacs.acls(5) and others). The dacsconf(1) command can list all reserved item types.

The VFS directive is used to specify the mapping from an item type to a vfs_uri, which describes where and how the information is stored. Some commands and functions take a vfs_uri as an argument to provide a default or override a default. A vfs_uri has the following syntax:

vfs_uri -> [ '[' item_type ']' ] URI

The general form of the URI syntax is (see RFC 2396 and RFC 3986):

scheme : [ // authority] [path] [query] [fragment]

The distribution's conf/site.conf-std file (by default installed as /usr/local/dacs/federations/site.conf; see dacs.install(7)) specifies defaults for many item types. For example, it defines the "roles file" (item type roles; see dacs_authenticate(8)) as:

VFS "[roles]dacs-kwv-fs:${Conf::FEDERATIONS_ROOT}/${Conf::FEDERATION_DOMAIN}/${Conf::JURISDICTION_NAME}/roles"

For the hypothetical federation domain example.com and jurisdiction J1, by default this would resolve to a file, /usr/local/dacs/federations/example.com/J1/roles. That file might consist of entries like:


The default location of the DACS XML DTDs (item type dtds) is defined as:

VFS "[dtds]dacs-fs:${Conf::DACS_HOME}/www/dtd-xsd"

By default, this would resolve to the directory /usr/local/dacs/www/dtd-xsd.

Refer to the VFS directive for additional detail.

Virtual Filestore Details

Each virtual filestore instance contains either an uninterpreted sequence of bytes (e.g., a Unix file or the output of a program) or an object that contains zero or more items, each of which is associated with a key (i.e., the name of an item relative in its virtual filestore context) and has an uninterpreted sequence of bytes as its value (e.g., a database file, a Unix file containing lines having a particular keyword/value structure, or a directory containing regular files).

For maximum portability, a key should be composed of characters from the Portable Filename Character Set: any alphanumeric character, period, hyphen, or underscore. The true limitation on the character set depends on the underlying storage scheme and URI syntax constraints. There is no a priori limit on naming context or key length.


dacsvfs(1), dacs.conf(5), dacs.install(7), dacs_vfs(8)


Distributed Systems Software (www.dss.ca)


Copyright 2003-2018 Distributed Systems Software. See the LICENSE file that accompanies the distribution for licensing information.

DACS Version 1.4.50 21-Jul-2023 DACS.VFS(5)

Table of Contents
−− Set ++

$Id: dacs.vfs.5.xml 3016 2018-08-17 18:12:46Z brachman $