Go to main content

man pages section 7: Standards, Environments, Macros, Character Sets, and Miscellany

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

sysattr(7)

Name

sysattr - extended system attributes

Description

The extended file attributes described in fsattr(7) provide a way to store additional information about objects in the file system. System attributes are a subset of extended file attributes defined by the operating system, and which may have semantics provided or enforced by the operating system or file system. System attributes are stored in extended attribute files named SUNWattr_ro and SUNWattr_rw.

Attributes

The following system attributes are currently defined. All of them are supported on ZFS filesystems. A subset are supported on tmpfs filesystems.

Each system attribute defines a data type for its value and only values of that type are valid for it. See the fgetattr(3C) manual page for detailed data type information for each attribute.

appendonly

Boolean that if set allows a file to be modified only at offset EOF. Attempts to modify a file at a location other than EOF fail with EPERM.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

This attribute is supported on both ZFS and tmpfs filesystems.

archive

Boolean that if set indicates a file has been modified since it was last backed up. Whenever the modification time (mtime) of a file is changed the archive attribute is set.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

av_modified

Boolean that ZFS sets whenever a file's content or size changes or when the file is renamed to let anti-virus software know the file needs to be rescanned. When a file is successfully scanned and found to be clean, vscand(8) will reset the file's modified attribute.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

av_quarantined

Boolean that anti-virus software sets to mark a file as quarantined. Attempts to read(2) or rename(2) an infected file will fail with EACCES being returned as the errno.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it. It may only be set on regular files.

av_scanstamp

An opaque attribute composed of up to 32 bytes of data, which is set after a file has been scanned by vscand(8). ZFS has no semantics associated with the attribute, it just saves it for the vscan service.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it. It may only be set on regular files.

crtime

Timestamp when a file is created. The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

fsid

Read-only integer file system id. The value is determined at mount time and cannot be set by an application.

gen

Read-only integer generation id. The value is determined by ZFS and cannot be set by an application.

groupsid

SMB group id, used by the SMB server.

hidden

Boolean that if set marks a file as hidden. Oracle Solaris allows the attribute to be set but it only has meaning in the context of a SMB server.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

This attribute is supported on both ZFS and tmpfs filesystems.

immutable

Boolean that if set prevents the content of a file from being modified. Also prevents all metadata changes, except for access time updates. When placed on a directory, prevents the deletion and creation of files in the directory. Attempts to modify the content of a file or directory marked as immutable fail with EPERM. Attempts to modify any attributes (with the exception of access time and, with the proper privileges, the immutable attribute) of a file marked as immutable fails with EPERM.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

This attribute is supported on both ZFS and tmpfs filesystems.

nodump

Boolean that may be used by backup software to determine if a file should be skipped when making backups.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

This attribute is supported on both ZFS and tmpfs filesystems.

noretain

Boolean that if set prevents a file from being retained. It is automatically set by the SMB and NFS servers for special files that are not user-managed and it may not be set by applications.

nounlink

Boolean that if set prevents a file from being deleted. On a directory, the attribute also prevents any changes to the contents of the directory. That is, no files within the directory can be removed or renamed. The errno EPERM is returned when attempting to unlink or rename files and directories that are marked as nounlink.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

This attribute is supported on both ZFS and tmpfs filesystems.

offline

Boolean that may be set to indicate that the contents of the file may not be immediately available.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

opaque

Read-only boolean value. Oracle Solaris has no special semantics for this attribute. Attempts to set this will fail with EPERM.

ownersid

SMB owner id, used by the SMB server.

readonly

Boolean that if set marks a file as read-only. Once a file is marked as readonly the content of the file cannot be modified. Other metadata for the file can still be modified. This attribute can be set on directories but it has no semantic meaning. All attempts to modify the content of the file will fail with EPERM.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value. It may only be set on regular files.

This attribute is supported on both ZFS and tmpfs filesystems.

reparse_point

Boolean that if set marks a symbolic link as containing a namespace redirection, such as an NFS referral, instead of a normal filesystem path. This attribute is automatically set when creating a link with the appropriate syntax. The nfsref(8) command should be used to operate on reparse points used as NFS referrals.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

rtime

Timestamp for the end of a file's retention period, if the File Retention feature of ZFS is in use. See the File Retention and retention.policy sections in the zfs(8) manual page.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to set this value. It may only be set on regular files. It cannot be set on files that already have the noretain attribute set.

sensitive

Boolean that if set marks a file as containing “sensitive” content. Some utilities may take different actions if this is set. For example, pfedit(8) does not record the contents or content changes of files with this attribute set.

The {PRIV_FILE_FLAG_SET} privilege is required to set this attribute and all privileges are required to clear it.

This attribute is supported on both ZFS and tmpfs filesystems.

sparse

Boolean that if set indicates that a file can be interpreted as sparse. It does not indicate whether or not the file is actually sparse and it has no special semantics on the Oracle Solaris operating system. The sparse attribute will be cleared if the file is truncated to zero length.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

system

Oracle Solaris systems have no special semantics for this boolean attribute. It is provided for use by SMB clients.

The owner of the file or any user with "write_attributes" permission or the {PRIV_FILE_OWNER} privilege has the ability to modify this value.

This attribute is supported on both ZFS and tmpfs filesystems.

Shell-level API

The following utilities handle extended system attributes specifically, in addition to support they may have for generic extended attributes listed on the fsattr(7) manual page. Many of these commands treat system attributes as a separate case from general extended attributes, and require the –/ option to operate on system attributes. See the individual manual pages for details.

chmod(1)

The S system attribute specifier allows setting and clearing boolean system attributes on the target file.

compress(1)

The –/ option causes compress and uncompress to copy system attributes from the source file to the target file.

cp(1)

By default, cp ignores attributes and copies only file data. This is intended to maintain the semantics implied by cp currently, where attributes (such as owner and mode) are not copied unless the –p option is specified. With the –/ (or –p) option, cp attempts to copy system attributes along with the file data.

cpio(1)

The –/ option causes cpio to archive or extract system attributes.

ls(1)

The ls –/ option displays boolean system attribute information for each file.

The ls –% option displays timestamp system attribute information for each file.

pax(1)

The –/ option causes pax to archive or extract system attributes.

pkg(1)

The sysattr attribute in a pkg(7) manifest causes system attributes to be set on files delivered by IPS packages.

tar(1)

The –/ option causes tar to archive or extract system attributes.

touch(1)

The –R option causes touch to set the rtime system attribute.

Application-level API

The following interfaces are available. For full details on each, see the respective manual page. Applications that wish to retrieve or modify system attributes should include the header file <attr.h> which defines the interfaces below.

The getattrat(3C) function obtains system attribute information about a specified file path.

The fgetattr(3C) function obtains system attribute information about an open file object.

The setattrat(3C) function updates the attributes for a specified file path.

The fsetattr(3C) function updates the attributes for an open file object.

pathconf() functionality

Two variables have been added to pathconf(2) to provide enhanced support for extended attribute manipulation.

The SATTR_ENABLED variable allows an application to determine if system attribute support is currently enabled for the file in question. Filesystems may choose not to support system attributes for certain object types (e.g. .zfs).

The SATTR_EXISTS variable allows an application to determine whether there are any system attributes associated with the supplied path.

The XATTR_EXISTS check has been modified to return 0 if the only extended attributes associated with the supplied path are system attributes.

See Also

chmod(1), compress(1), cp(1), cpio(1), ls(1), pax(1), pkg(1), tar(1), touch(1), acl(2), chmod(2), chown(2), fcntl(2), futimens(2), mmap(2), open(2), pathconf(2), read(2), rename(2), rmdir(2), unlink(2), utime(2), utimensat(2), utimes(2), write(2), fgetattr(3C), fsetattr(3C), getattrat(3C), setattrat(3C), tmpfs(4FS), zfs(4FS), fsattr(7), pfedit(8), pkg(7), nfsref(8), vscand(8), zfs(8)

History

System attributes were added in the Oracle Solaris 11.0.0 release, along with support for them on ZFS filesystems.

Support for system attributes on tmpfs filesystems was added in the Oracle Solaris 11.4.0 release.

Support for specific attributes was first added in the listed Oracle Solaris release:

NAME
RELEASE
noretain, rtime
11.4.45
sensitive
11.2.0
appendonly, archive, av_modified, av_scanstamp, av_quarantined, crtime, fsid, gen, groupsid, hidden, immutable, nodump, nounlink, offline, opaque, ownersid, readonly, reparse_point, sparse, system
11.0.0