IPB
>  Man Pages > Unix > Solaris 10 11/06 > Section 5 > acl man page

acl man page

Section 5 - Solaris 10 11/06 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!





Standards, Environments, and Macros                        acl(5)



NAME
     acl - Access Control Lists

DESCRIPTION
     Access control lists (ACLs) are discretionary access control
     mechanisms  that  grant  and deny access to files and direc-
     tories. Two  different  ACL  models  are  supported  in  the
     Solaris release:POSIX-draft ACLs and NFSv4 ACLs.

     The older, POSIX-draft model is supported by  the  UFS  file
     system. This model is based on a withdrawn ACL POSIX specif-
     ication that was never  standardized.  It  was  subsequently
     withdrawn by the POSIX committee.

     The other model is based on the standards of the NFSv4 work-
     ing  group  and  is  an  approved standard from the Internet
     Engineering Task Force (IETF). The ZFS file system uses  the
     NFSv4 model, and provides richer semantics and finer grained
     permission capabilities than the POSIX-draft model.

  POSIX-draft ACLs
     POSIX-draft ACLs provide an alternative  security  mechanism
     to basic UNIX file permissions in the Solaris release. Their
     purpose is to further restrict access to  files  and  direc-
     tories  or  to extend permissions to a particular user. ACLs
     can be used to  change  the  permissions  for  the  standard
     owner, group and other class bits of a file's mode. ACLs can
     give additional users and  groups  access  to  the  file.  A
     directory  can  also  have  a  special  kind of ACL called a
     default ACL, which defines ACL entries to  be  inherited  by
     descendents  of  the directory. POSIX-draft ACLs have an ACL
     entry called mask. The mask defines the maximum  permissions
     that  can  be  granted to additional user and group entries.
     Whenever a file  is  created  or  its  mode  is  changed  by
     chmod(1)  or  chmod(2), the mask is recomputed. It is recom-
     puted to be the group permission defined in the mode  passed
     to chmod(2).

     The POSIX-draft ACL model uses the  standard  rwx  model  of
     traditional UNIX permissions.

     An ACL is represented as follows:

     acl_entry[,acl_entry]...

     Each acl_entry contains one  ACL  entry.  An  ACL  entry  is
     represented by two or three colon-separated(:) fields.

     user:[uid]:perms                If uid blank, it  represents
                                     the file owner.





SunOS 5.10          Last change: 30 Aug 2006                    1






Standards, Environments, and Macros                        acl(5)



     group:[gid]:perms               If   gid   is   blank,    it
                                     represents the owning group.



     other:perms                     Represents  the  file  other
                                     class.



     mask:perms                      Defines the  MAX  permission
                                     to hand out.




     For example to give user joe read and write permissions, the
     ACL entry is specified as:

     user:joe:rw-

  NFSv4 ACLs
     NFSv4 ACL model is based  loosely  on  the  Windows  NT  ACL
     model.  NFSv4  ACLs  provide  a  much  richer ACL model than
     POSIX-draft ACLs.

     The major differences between NFSv4 and POSIX-draft ACLs are
     as follows:

       o  NFSv4 ACLs provide finer grained permissions  than  the
          rwx model.

       o  NFSv4 ACLs allow for both ALLOW and DENY entries.

       o  NFSv4 ACLs provide a rich set of inheritance semantics.
          POSIX  ACLs  also  have inheritance, but with the NFSv4
          model  you  can  control  the   following   inheritance
          features:


            o  Whether inheritance cascades  to  both  files  and
               directories or only to files or directories.

            o  In the  case  of  directories,  you  can  indicate
               whether  inheritance  is  applied to the directory
               itself, to just one level  of  subdirectories,  or
               cascades to all subdirectories of the directory.

       o  NFSv4 ACLs provide  a  mechanism  for  hooking  into  a
          system's  audit trail. Currently, Solaris does not sup-
          port this mechanism.




SunOS 5.10          Last change: 30 Aug 2006                    2






Standards, Environments, and Macros                        acl(5)



       o  NFSv4 ACLs enable adminstrators to specify the order in
          which  ACL  entries  are checked. With POSIX-draft ACLs
          the file  system  reorders  ACL  entries  into  a  well
          defined, strict access, checking order.


     POSIX-draft ACL semantics can be achieved with  NFSv4  ACLs.
     However,   only   some  NFSv4  ACLs  can  be  translated  to
     equivalent POSIX-draft ACLs.

     Permissions can be specified in three  different  chmod  ACL
     formats:  verbose,  compact, or positional. The verbose for-
     mat  uses  words  to  indicate  that   the  permissions  are
     separated  with a forward slash (/) character. Compact  for-
     mat uses the permission letters and positional  format  uses
     the  permission letters or the hypen (-) to identify no per-
     missions.

     The permissions for verbose mode and their abbreviated  form
     in   parentheses    for  compact  and  positional  mode  are
     described as follows:

     read_data (r)

         Permission to read the data of the file



     list_directory (r)

         Permission to list the contents of a directory.



     write_data (w)

         Permission to modify  a  file's  data  anywhere  in  the
         file's  offset  range. This includes the ability to grow
         the file or write to any arbitrary offset.



     add_file (w)

         Permission to add a new file to a directory.



     append_data (p)

         The ability to modify the file's data, but only starting
         at <EOF>. Currently, this permission is not supported.



SunOS 5.10          Last change: 30 Aug 2006                    3






Standards, Environments, and Macros                        acl(5)



     add_subdirectory (p)

         Permission to create a subdirectory to a directory.



     read_xattr (R)

         The ability to read the extended attributes of a file or
         do a lookup in the extended attributes directory.



     write_xattr (A)

         The ability to create extended attributes  or  write  to
         the extended attributes directory.



     execute (X)

         Permission to execute a file.



     read_attributes (a)

         The ability to read basic  attributes  (non-ACLs)  of  a
         file.  Basic  attributes  are  considered to be the stat
         level attributes. Allowing this access  mask  bit  means
         that the entity can execute ls(1) and stat(2).



     write_attributes (W)

         Permission to change the times associated with a file or
         directory to an arbitrary value.



     delete (d)

         Permission to delete the file.



     delete_child (D)

         Permission to delete a file within a directory.




SunOS 5.10          Last change: 30 Aug 2006                    4






Standards, Environments, and Macros                        acl(5)



     read_acl (c)

         Permission to read the ACL.



     write_acl (C)

         Permission to write the ACL or the  ability  to  execute
         chmod(1) or setfacl(1).



     write_owner (o)

         Permission to change the owner or the ability to execute
         chown(1) or chgrp(1).



     synchronize (s)

         Permission to access a file locally at the  server  with
         synchronous reads and writes. Currently, this permission
         is not supported.



     The following inheritance flags are supported by NFSv4:

     file_inherit (f)

         Inherit to all newly created files in a directory.



     dir_inherit (d)

         Inherit to all newly created directories in a directory.



     inherit_only (i)

         Placed on a directory, but does not apply to the  direc-
         tory  itself,  only  to  newly created created files and
         directories. This  flag  requires  file_inherit  and  or
         dir_inherit to indicate what to inherit.







SunOS 5.10          Last change: 30 Aug 2006                    5






Standards, Environments, and Macros                        acl(5)



     no_propagate (n)

         Placed on directories and  indicates  that  ACL  entries
         should  only  be  inherited  one level of the tree. This
         flag requires file_inherit and or dir_inherit  to  indi-
         cate what to inherit.



     An NFSv4 ACL is expressed using the following syntax:


     acl_entry[,acl_entry]...

         owner@:<perms>[:inheritance flags]:<allow|deny>
         group@:<perms>[:inheritance flags]:<allow|deny>
         everyone@:<perms>[:inheritance flags]:<allow|deny>
         user:<username>[:inheritance flags]:<allow|deny>
         group:<groupname>[:inheritance flags]:<allow|deny>



     owner@

         File owner



     group@

         Group owner



     user

         Permissions for a specific user



     group

         Permissions for a specific roup



     Permission and inheritance flags are separated by a /  char-
     acter.

     ACL specification examples:





SunOS 5.10          Last change: 30 Aug 2006                    6






Standards, Environments, and Macros                        acl(5)



     user:fred:read_data/write_data/read_attributes:file_inherit:allow
     owner@:read_data:allow,group@:read_data:allow,user:tom:read_data:deny

     Using the compact ACL format, permissions are  specified  by
     using 14 unique letters to indicate permissions.

     Using the positional ACL format, permissions  are  specified
     as  positional  arguments  similar  to the ls -V format. The
     hyphen (-), which indicates that no permission is granted at
     that  position, can be omitted and only the required letters
     have to be specified.


     The letters above are listed in  the  order  they  would  be
     specified in positional notation.

     With these letters you can specify permissions in  the  fol-
     lowing equivalent ways.

     user:fred:rw------R-----:file_inherit:allow

     Or you can remove the - and scrunch it together.

     user:fred:rwR:file_inherit:allow

     The inheritance flags can also be specified in a  more  com-
     pact manner, as follows:

     user:fred:rwR:f:allow
     user:fred:rwR:f-----:allow

  Shell-level Solaris API
     The Solaris command interface supports the  manipulation  of
     ACLs.  The  following Solaris utilities accommodate both ACL
     models:

     chmod

         The chmod utility has been enhanced  to  allow  for  the
         setting  and  deleting  of  ACLs.  This  is  achieved by
         extending the  symbolic-mode  argument  to  support  ACL
         manipulation. See chmod(1) for details.



     compress

         When a file is compressed any ACL  associated  with  the
         original file is preserved with the compressed file.






SunOS 5.10          Last change: 30 Aug 2006                    7






Standards, Environments, and Macros                        acl(5)



     cp

         By default, cp ignores ACLs, unless  the  -p  option  is
         specified.  When -p is specified the owner and group id,
         permission modes, modification and access  times,  ACLs,
         and extended attributes if applicable are preserved.



     cpio

         ACLs are preserved when the -P option is specified.



     find

         Find locates files with  ACLs  when  the  -acl  flag  is
         specified.



     ls

         By default ls does not display ACL information. When the
         -v option is specified, a file's ACL is displayed.



     mv

         When a file is moved, all attributes are  carried  along
         with  the  renamed  file.  When a file is moved across a
         file system boundary, the ACLs are  replicated.  If  the
         ACL information cannot be replicated, the move fails and
         the source file is not removed.



     pack

         When a file is packed, any ACL associated with the  ori-
         ginal file is preserved with the packed file.



     rcp

         rcp has been enhanced to support copying. A  file's  ACL
         is only preserved when the remote host supports ACLs.





SunOS 5.10          Last change: 30 Aug 2006                    8






Standards, Environments, and Macros                        acl(5)



     tar

         ACLs are preserved when the -p option is specified.



     unpack

         When a file with an ACL is unpacked, the  unpacked  file
         retains the ACL information.



  Application-level API
     The primary interfaces required to access file  system  ACLs
     at  the  programmatic  level are the acl_get() and acl_set()
     functions. These functions support both POSIX draft ACLs and
     NFSv4 ACLs.

  Retrieving a file's ACL
     int acl_get(const char *path, int flag, acl_t **aclp);
     int facl_get(int fd, int flag, acl_t **aclp);


     The acl_get(3SEC) and facl_get(3SEC) functions retrieves  an
     ACL  on  a file whose name is given by path or referenced by
     the open file descriptor fd.  The  flag  argument  specifies
     whether  a  trivial  ACL  should be retrieved. When the flag
     argument equals ACL_NO_TRIVIAL then only ACLs that  are  not
     trivial are retrieved. The ACL is returned in the aclp argu-
     ment.

  Freeing ACL structure
     void acl_free(acl_t *aclp)s;



     The acl_free() function frees up memory  allocated  for  the
     argument aclp;.

  Setting an ACL on a file
     int acl_set(const char *path, acl_t *aclp);
     int facl_set(int fd, acl_t *aclp);


     The acl_set(3SEC) and facl_get(3SEC) functions are used  for
     setting  an  ACL  on  a  file whose name is given by path or
     referenced by the open file descriptor fd. The aclp argument
     specifies  the  ACL  to set. The acl_set(3SEC) translates an
     POSIX-draft ACL into a NFSv4 ACL when the target  file  sys-
     tems  supports  NFSv4 ACLs. No translation is performed when
     trying to set an NFSv4 ACL on a  POSIX-draft  ACL  supported



SunOS 5.10          Last change: 30 Aug 2006                    9






Standards, Environments, and Macros                        acl(5)



     file system.

  Determining an ACL's trivialness
     int acl_trivial(const char *path);


     The acl_trivial() function is used to  determine  whether  a
     file  has  a  trivial  ACL.  The trivialness of a file's ACL
     depends on the type of ACL it is. For POSIX-draft  ACLs,  it
     implies  the  ACL  has  greater  than  MIN_ACL_ENTRIES.  For
     NFSv4/ZFS style ACLs, it implies that the  ACL  has  entries
     other  than  owner@, group@ and everyone@, inheritance flags
     are set, or the ACL is not ordered in a  manner  that  meets
     POSIX access control requirements.

  Removing all ACLs from a file
     int acl_strip(const char *path, uid_t uid, gid_t gid, mode_t mode);


     The acl_strip() function removes all ACLs from  a  file  and
     replaces  them with a trivial ACL based off of the passed in
     argument mode. After replacing the ACL the owner  and  group
     of  the  file are set to the values specified in the uid and
     gid parameters.

  Converting ACLs to/from external representation
     int acl_fromtext(const char *path, acl_t **aclp);
     char *acl_totext(acl_t *aclp, int flags);


     The acl_text() function converts an internal ACL representa-
     tion pointed to by aclp into an external representation. See
     DESCRIPTION for details about external representation.

     The acl_fromtext() functions converts and external represen-
     tation  into an internal representation. See DESCRIPTION for
     details about external representation.

EXAMPLES
     The following examples demonstrate how the API can  be  used
     to perform basic operations on ACLs.

     Example 1: Retrieving and Setting an ACL

     Use the following to retrieve an ACL and set it  on  another
     file:


     error = acl_get("file", ACL_NO_TRIVIAL, &aclp);

     if (error == 0 && aclp != NULL) {
     error = acl_set("file2", aclp)



SunOS 5.10          Last change: 30 Aug 2006                   10






Standards, Environments, and Macros                        acl(5)



     acl_free(aclp);
     }
     ...


     Example 2: Retrieving and Setting Any ACLs

     Use the following to retrieve  any  ACL,  including  trivial
     ACLs, and set it on another file:


     error = acl_get("file3", 0, &aclp);
     if (error == 0) {
     error = acl_set("file4", aclp)
     acl_free(aclp);
     }
     ...



     Example 3: Determining if a File has a Trivial ACL

     Use the following to determine if a file has a trivial ACL:


     istrivial = acl_trivial("file")

     if (istrivial == 0)
     printf("file %s has a trivial ACL0, file);
     else
     printf("file %s has a NON-trivial ACL0, file);
     ...


     Example 4: Removing all ACLs from a File

     Use the following to remove all ACLs from a file, and set  a
     new mode, owner, and group:


     error = acl_strip("file", 10, 100, 0644);
     ...


SEE ALSO
     chgrp(1),  chmod(1),  chown(1),  cp(1),  cpio(1),   find(1),
     ls(1),      mv(1),     tar(1),     setfacl(1),     chmod(2),
     acl(2),stat(2),acl_get(3SEC),                 aclsort(3SEC),
     acl_fromtext(3SEC),     acl_free(3SEC),     acl_strip(3SEC),
     acl_trivial(3SEC)





SunOS 5.10          Last change: 30 Aug 2006                   11





Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Wed Sep 12 11:27:36 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

CPAN man page (4210 hits)
(Suse Linux 10.1)

ssh man page (4117 hits)
(Suse Linux 10.1)

svn man page (2480 hits)
(FreeBSD 6.2)

adv_cap_autoneg man page (1782 hits)
(Solaris 10 11_06)

startproc man page (1711 hits)
(Suse Linux 10.1)

sqlite3 man page (1663 hits)
(openSUSE 10.2)

signal man page (1393 hits)
(Suse Linux 10.1)

pprosetup man page (1241 hits)
(Solaris 10 11_06)

netcat man page (1237 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (1126 hits)
(Solaris 10 11_06)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: PYRENEES Winter Activities :: Electronic Circuit Design :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum