Provided by: moosefs-master_4.57.5-1_amd64 bug

NAME

       mfsexports.cfg - MooseFS access control for mfsmounts

DESCRIPTION

       The file mfsexports.cfg contains MooseFS access list for mfsmount clients.

SYNTAX

       Syntax is:

       ADDRESS DIRECTORY [OPTIONS]

       Lines starting with # character are ignored as comments.

       ADDRESS can be specified in several forms:

       *                   all addresses
       n.n.n.n             single IP address
       n.n.n.n/b           IP class specified by network address and number of significant bits
       n.n.n.n/m.m.m.m     IP class specified by network address and mask
       f.f.f.f-t.t.t.t     IP range specified by from-to addresses (inclusive)

       DIRECTORY can be / or path relative to MooseFS root; special value . means MFSMETA companion filesystem.

       OPTIONS list:

       ro, readonly
              export tree in read-only mode; this is default

       rw, readwrite
              export tree in read-write mode

       alldirs
              allows to mount any subdirectory of specified directory (similarly to NFS)

       dynamicip
              allows  reconnecting  of already authenticated client from any IP address (the default is to check
              IP address on reconnect)

       ignoregid
              disable testing of group access at mfsmaster level (it's still done at mfsmount level) -  in  this
              case  "group" and "other" permissions are logically added; needed for supplementary groups to work
              (mfsmaster receives only user primary group information)

       admin  administrative privileges:
              changing quota values
              storage classes management - adding, deleting, modifying
              patterns management - adding, deleting
              using storage classes with admin flag (setting, overwriting)
              manipulating UNDELETABLE, APPENDONLY and IMMUTABLE flags in filesystem objects

       maproot=USER[:GROUP]
              maps root (uid=0) accesses to given user and group (similarly to maproot option  in  NFS  mounts);
              USER  and  GROUP  can  be given either as name or number; if no group is specified, USER's primary
              group is used. Names are resolved on mfsmaster side (see note below).

       mapall=USER[:GROUP]
              like above but maps all non privileged users (uid!=0) accesses to given user and group (see  notes
              below).

       umask=0###
              this umask is added (OR) to user's umask and the resulting umask is used in this mount point

       sclassgroups=-|N[:N[:...]]
              if  this option is not defined, any storage class can be set by user in this mount point, if it is
              defined, only storage classes belonging to listed groups can be set; to  define  no  groups  (user
              cannot  set any storage class) use '-' (minus) sign; for explanation on how to add a storage class
              to a group see mfsscadmin(1); for more detailed explanation see STORAGE CLASS GROUPS

       password=PASS, md5pass=MD5
              requires password authentication in order to access specified resource

       minversion=VER
              rejects access from clients older than specified

       mintrashretention=TIME, maxtrashretention=TIME
              specify range in which trash retention can be set by users

       mintrashtime=TDUR, maxtrashtime=TDUR
              deprectaed options (function similalry as above)

       disable=OPERATION[:OPERATION[:...]]
              do not allow the client to perform certain operations

       Default options are: ro, maproot=999:999, mintrashretention=0, maxtrashretention=4294967295.

       Note! Default value for maxtrashretention is impossible to be set by user, so if the value  is  not  set,
       then  it  can  be  considered  close to infinity, but if it is set, then the maximum is 65535 hours (~390
       weeks).

NOTES

       USER and GROUP names (if not specified by explicit uid/gid number) are resolved on mfsmaster host.

       TDUR (deprecated) can be specified as number without time unit (number  of  seconds)  or  combination  of
       numbers  with  time  units.  Time  units are: W,D,H,M,S. Order is important - less significant time units
       can't be defined before more significant time units.

       TIME can be specified as a number of hours (integer) or as a time period in one of two possible  formats:
       first  format:  #.#T  where  T  is  one of: h-hours, d-days or w-weeks; fractions of minimum unit will be
       rounded to integer value; second format: #w#d#h, any number  of  definitions  can  be  ommited,  but  the
       remaining definitions must be in order (so #w#h is still a valid definition, but #h#w is not); ranges: h:
       0  to  23,  d:  0 to 6, w is unlimited and the first definition is also always unlimited (i.e. for #d#h d
       will be unlimited)

       Time units/periods are case insensitive.

       Option mapall works  in  MooseFS  in  different  way  than  in  NFS,  because  MooseFS  is  using  FUSE's
       "default_permissions"  option. When mapall option is used, users see all objects with uid equal to mapped
       uid as their own and all other as root's objects. Similarly objects with gid equal to mapped gid are seen
       as objects with current user's primary group and all other objects  as  objects  with  group  0  (usually
       wheel). With mapall option set attribute cache in kernel is always turned off.

       Option  disable  can  take  many  parameters  (operations to disable) in two ways: as a list separated by
       colons (:) or by repeating the option many times.  List of operations that can be disabled:
       chown        - don't allow the client to perform the chown operation
       chmod        - don't allow the client to perform the chmod operation
       symlink      - don't allow the client to create symbolic links
       mkfifo       - don't allow the client to create FIFOs
       mkdev        - don't allow the client to create devices
       mksock       - don't allow the client to create sockets
       mkdir        - don't allow the client to create directories
       unlink       - don't allow the client to remove non directory objects (will also deny move/rename operation if target inode already exists!)
       rmdir        - don't allow the client to remove directories (will also deny move/rename operation if target inode already exists!)
       rename       - don't allow the client to change inodes (files, directories) names
       move         - don't allow the client to move inodes (files, directories) to another path
       link         - don't allow the client to create hard links
       create       - don't allow the client to create new files
       readdir      - don't allow the client to list directories ('ls' command will not work)
       read         - don't allow the client to read from files
       write        - don't allow the client to write to files
       truncate     - don't allow the client to shorten the length of a file with truncate command
       setlength    - don't allow the client to increase the length of a file with truncate command
       appendchunks - don't allow the client to add chunks from one file to another (mfsappendchunks)
       snapshot     - don't allow the client to create snapshots
       settrash     - don't allow the client to change trash retention time
       setsclass    - don't allow the client to set storage classes
       seteattr     - don't allow the client to set mfs extra attributes
       setxattr     - don't allow the client to set XATTRs
       setfacl      - don't allow the client to set ACLs

STORAGE CLASS GROUPS

       A system admin may not want MooseFS users to be able to  apply  just  any  Storage  Class  to  data,  for
       security  reasons.  Therefore MooseFS provides a way to only allow for certain Storage Classes to be used
       in a mountpoint.

       First, selected Storage Classes must be assigned to one of 16 (numbered  from  0  to  15)  Storage  Class
       Groups.  This is done when creating or modyfing a Storage Class with mfsscadmin tool (see mfsscadmin(1)).
       Once a group is properly defined, when option sclassgroups is  used  in  a  definition  of  a  mountpoint
       export,  a user using this mountpoint export can only apply (set) Storage Classes from the defined group,
       when they use the mfssclass tool.

       Example: if there are four different Storage Classes defined in a cluster, two of them assigned to  group
       0,  two  to  group 1, and a mountpoint export only allows to use Storage Classes from group 1, users will
       only be able to set the two Storage Classes that are assigned to group 1, an attempt  to  set  a  Storage
       Class assigned to group 0 will result in an error and the file's class will not be changed. This does NOT
       affect the Storage Class inheritance rule, that is, if a user creates a new file in a directory belonging
       to  a  Storage  Class  in  group  0,  this file will belong to the same class in group 0. But if the user
       subsequently changes the file's Storage Class to one of the classes they are allowed to use  (from  group
       1),  they cannot change it back to its original Storage Class, as that class belongs to "forbidden" group
       0.

       Important! Default Storage Class group is 0, unless another is explicitly set when creating or  modifying
       a Storage Class, so for the purpose of limiting the availability of Storage Classes for users it's better
       to use group numbers greater than 0.

       Legacy systems Up to MooseFS version 4.56.6 the mechanism of Storage Class Groups did not exist. Instead,
       there  were  two options mingoal and maxgoal, inherited from previous versions of MooseFS. If any of them
       were set, a user would be allowed to use only legacy Storage Classes (classes with IDs 1 to 9, named  "1"
       to "9", with KEEP definitions 1* to 9*) with name not lower than mingoal and not higher than maxgoal plus
       any  admin  defined classes (ID>9). To simulate this behaviour, in case of an upgrade from a version that
       still had these classes and also used mingoal and maxgoal in config, the system will assign those  legacy
       classes "1" to "9" to groups 1 to 9, respectively and will convert any mingoal and maxgoal to appropriate
       sclassgroups  expression.  Example:  if mingoal is set to 3 and maxgoal is set to 5, sclassgroups will be
       set to 0,3,4,5 - 0 to allow users to use admin-defined classes, 3,4,5 to allow the use of legacy  classes
       "3","4"  and  "5". The old settings should not be used, system admins should instead define Storage Class
       Groups of their choice and use the sclassgroups option explicitly.

EXAMPLES

       *                    /       ro
       192.168.1.0/24       /       rw
       192.168.1.0/24       /       rw,alldirs,maproot=0,password=passcode
       10.0.0.0-10.0.0.5    /test   rw,maproot=nobody,password=test
       10.1.0.0/255.255.0.0 /public rw,mapall=1000:1000
       10.2.0.0/16          /       rw,alldirs,maproot=0,mintrashretention=2d12h,maxtrashretention=2w
       192.168.1.0/24       /       rw,disable=unlink:rmdir:truncate
       192.168.1.0/24       /       rw,disable=unlink,disable=rmdir,disable=truncate

REPORTING BUGS

       Report bugs to <bugs@moosefs.com>.

COPYRIGHT

       Copyright (C) 2025 Jakub Kruszona-Zawadzki, Saglabs SA

       This file is part of MooseFS.

       MooseFS 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, version 2 (only).

       MooseFS  is  distributed  in  the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
       implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  PURPOSE.  See  the  GNU  General  Public
       License for more details.

       You  should  have  received a copy of the GNU General Public License along with MooseFS; if not, write to
       the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  MA  02111-1301,  USA  or  visit
       http://www.gnu.org/licenses/gpl-2.0.html

SEE ALSO

       mfsmaster(8), mfsmaster.cfg(5)

MooseFS 4.57.5-1                                  February 2025                                mfsexports.cfg(5)