| < draft-myers-imap-acl-01.txt | draft-myers-imap-acl-02.txt > | |||
|---|---|---|---|---|
| Network Working Group J. Myers | Network Working Group J. Myers | |||
| Internet Draft Carnegie Mellon | Internet Draft Carnegie Mellon | |||
| Document: draft-myers-imap-acl-01.txt March 1996 | Document: draft-myers-imap-acl-02.txt June 1996 | |||
| IMAP4 ACL extension | IMAP4 ACL extension | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet Draft. Internet Drafts are working | This document is an Internet Draft. Internet Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its Areas, | documents of the Internet Engineering Task Force (IETF), its Areas, | |||
| and its Working Groups. Note that other groups may also distribute | and its Working Groups. Note that other groups may also distribute | |||
| working documents as Internet Drafts. | working documents as Internet Drafts. | |||
| skipping to change at page 2, line ? ¶ | skipping to change at page 2, line ? ¶ | |||
| ``working draft'' or ``work in progress''. | ``working draft'' or ``work in progress''. | |||
| To learn the current status of any Internet-Draft, please check the | To learn the current status of any Internet-Draft, please check the | |||
| 1id-abstracts.txt listing contained in the Internet-Drafts Shadow | 1id-abstracts.txt listing contained in the Internet-Drafts Shadow | |||
| Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or | Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or | |||
| munnari.oz.au. | munnari.oz.au. | |||
| A revised version of this draft document will be submitted to the RFC | A revised version of this draft document will be submitted to the RFC | |||
| editor as a Proposed Standard for the Internet Community. Discussion | editor as a Proposed Standard for the Internet Community. Discussion | |||
| and suggestions for improvement are requested. This document will | and suggestions for improvement are requested. This document will | |||
| expire before April 1996. Distribution of this draft is unlimited. | expire before December 1996. Distribution of this draft is | |||
| unlimited. | ||||
| Internet DRAFT ACL March 21, 1996 | Internet DRAFT ACL June 3, 1996 | |||
| 1. Abstract | 1. Abstract | |||
| The ACL extension of the Internet Message Access Protocol [IMAP4] | The ACL extension of the Internet Message Access Protocol [IMAP4] | |||
| permits access control lists to be manipulated through the IMAP | permits access control lists to be manipulated through the IMAP | |||
| protocol. | protocol. | |||
| 2. Conventions Used in this Document | 2. Conventions Used in this Document | |||
| In examples, "C:" and "S:" indicate lines sent by the client and | In examples, "C:" and "S:" indicate lines sent by the client and | |||
| server respectively. | server respectively. | |||
| 3. Introduction and Overview | 3. Introduction and Overview | |||
| The ACL extension is present in any IMAP4 implementation which | The ACL extension is present in any IMAP4 implementation which | |||
| returns "ACL" as one of the supported capabilities to the CAPABILITY | returns "ACL" as one of the supported capabilities to the CAPABILITY | |||
| command. | command. | |||
| An access control list is a set of <identifier,rights> pairs. | An access control list is a set of <identifier,rights> pairs. | |||
| Identifier is an ASCII string with implementation-defined semantics. | Identifier is a US-ASCII string. The identifier anyone is reserved | |||
| to refer to the universal identity (all authentications, including | ||||
| anonymous). All user name strings accepted by the LOGIN or | ||||
| AUTHENTICATE commands to authenticate to the IMAP server are reserved | ||||
| as identifiers to refer to the corresponding user. All other | ||||
| identifier strings have implementation-defined semantics. | ||||
| Possible variations of identifier interpretation include, but are not | Possible variations of identifier interpretation include, but are not | |||
| limited to: | limited to: | |||
| * User names, as specified in the LOGIN command. | ||||
| * Named groups of users, presumably managed by some | * Named groups of users, presumably managed by some | |||
| authorization service. | authorization service. | |||
| * Only allowing identifiers supported by the operating system | ||||
| (e.g. ``user'', ``group'', and ``other'' for the Unix filesystem) | ||||
| * A prefix to the identifier specifying an "authentication | * A prefix to the identifier specifying an "authentication | |||
| type". | type". | |||
| As an example, an implementation may control posting to a group | As an example, an implementation may control posting to a group | |||
| based on the contents of the From: header: | based on the contents of the From: header: | |||
| from$user p | from$user p | |||
| * Whether the union of rights for matching identifiers are granted | * Whether the union of rights for matching identifiers are granted | |||
| to a user or whether the rights for the most specific matching | to a user or whether the rights for the most specific matching | |||
| identifier is granted. | identifier is granted. | |||
| As an example, for a mailbox with the following ACL: | As an example, for a mailbox with the following ACL: | |||
| user lrsa | user lrsa | |||
| group-user-is-in lrsw | group-user-is-in lrsw | |||
| Internet DRAFT ACL March 21, 1996 | Internet DRAFT ACL June 3, 1996 | |||
| One implementation may grant the user 'lrswa' rights, another | One implementation may grant the user 'lrswa' rights, another | |||
| may only grant the user 'lrsa' rights. | may only grant the user 'lrsa' rights. | |||
| * A prefix to an identifier name specifying the listed rights | * A prefix to an identifier name specifying the listed rights | |||
| are to be removed from users who match the prefixed identifier. | are to be removed from users who match the prefixed identifier. | |||
| As an example, for a mailbox with the following ACL: | As an example, for a mailbox with the following ACL: | |||
| group-user-is-in lrsw | group-user-is-in lrsw | |||
| skipping to change at page 3, line 45 ¶ | skipping to change at page 3, line 45 ¶ | |||
| hierarchy) | hierarchy) | |||
| d - delete (STORE \DELETED flag, perform EXPUNGE) | d - delete (STORE \DELETED flag, perform EXPUNGE) | |||
| a - administer (perform SETACL) | a - administer (perform SETACL) | |||
| An implementation may tie rights together or may force rights to | An implementation may tie rights together or may force rights to | |||
| always or never be granted. For example, in an implementation that | always or never be granted. For example, in an implementation that | |||
| uses unix mode bits, the rights "wisd" are tied, the "a" right is | uses unix mode bits, the rights "wisd" are tied, the "a" right is | |||
| always granted to the owner and is never granted to another user. If | always granted to the owner and is never granted to another user. If | |||
| rights are tied in an implementation, it should be conservative in | rights are tied in an implementation, it should be conservative in | |||
| granting rights in response to SETACL commands--unless all rights in | granting rights in response to SETACL commands--unless all rights in | |||
| a tied set are specified, none should be used. Numeric rights may | a tied set are specified, none should be used. | |||
| not be tied. | ||||
| Internet DRAFT ACL March 21, 1996 | Internet DRAFT ACL June 3, 1996 | |||
| 4. Commands | 4. Commands | |||
| 4.1. SETACL | 4.1. SETACL | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| authentication identifier | authentication identifier | |||
| access rights | access rights | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: untagged responses: ACL | Data: untagged responses: ACL | |||
| Result: OK - getacl completed | Result: OK - getacl completed | |||
| NO - getacl failure: can't get acl | NO - getacl failure: can't get acl | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The GETACL command returns the access control list for mailbox in | The GETACL command returns the access control list for mailbox in | |||
| Internet DRAFT ACL March 21, 1996 | Internet DRAFT ACL June 3, 1996 | |||
| an untagged ACL reply. | an untagged ACL reply. | |||
| Example: C: A002 GETACL INBOX | Example: C: A002 GETACL INBOX | |||
| S: * ACL INBOX Fred rwipslda | S: * ACL INBOX Fred rwipslda | |||
| S: A002 OK Getacl complete | S: A002 OK Getacl complete | |||
| 4.4. MYRIGHTS | 4.4. LISTRIGHTS | |||
| Arguments: mailbox name | ||||
| authentication identifier | ||||
| Data: untagged responses: LISTRIGHTS | ||||
| Result: OK - listrights completed | ||||
| NO - listrights failure: can't get rights list | ||||
| BAD - command unknown or arguments invalid | ||||
| Example: C: a001 LISTRIGHTS ~/Mail/saved smith | ||||
| S: * LISTRIGHTS ~/Mail/saved smith la r swicd | ||||
| S: a001 OK Listrights completed | ||||
| C: a005 LISTRIGHTS archive.imap anyone | ||||
| S: * LISTRIGHTS archive.imap anyone "" l r s w i p c d a 0 1 | ||||
| 2 3 4 5 6 7 8 9 | ||||
| S: a005 OK Listrights completed | ||||
| The LISTRIGHTS command takes a mailbox name and an identifier and | ||||
| returns information about what rights may be granted to the | ||||
| 4.5. MYRIGHTS | ||||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: untagged responses: MYRIGHTS | Data: untagged responses: MYRIGHTS | |||
| Result: OK - myrights completed | Result: OK - myrights completed | |||
| NO - myrights failure: can't get rights | NO - myrights failure: can't get rights | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| Example: C: A003 MYRIGHTS INBOX | ||||
| S: * MYRIGHTS INBOX rwipslda | ||||
| S: A003 OK Myrights complete | ||||
| The MYRIGHTS command returns the set of rights that the user has | The MYRIGHTS command returns the set of rights that the user has | |||
| to mailbox in an untagged MYRIGHTS reply. | to mailbox in an untagged MYRIGHTS reply. | |||
| Example: C: A003 MYRIGHTS INBOX | ||||
| S: * MYRIGHTS INBOX rwipslda | ||||
| Internet DRAFT ACL June 3, 1996 | ||||
| S: A003 OK Myrights complete | ||||
| 5. Responses | 5. Responses | |||
| 5.1. ACL | 5.1. ACL | |||
| Data: mailbox name | Data: mailbox name | |||
| zero or more identifier rights pairs | zero or more identifier rights pairs | |||
| The ACL response occurs as a result of a GETACL command. The | The ACL response occurs as a result of a GETACL command. The | |||
| first string is the mailbox name for which this ACL entry applies. | first string is the mailbox name for which this ACL entry applies. | |||
| This is followed by zero or more pairs of strings, each pair | This is followed by zero or more pairs of strings, each pair | |||
| contains the identifier for which the entry applies followed by | contains the identifier for which the entry applies followed by | |||
| the set of rights that the identifier has. | the set of rights that the identifier has. | |||
| 5.2. MYRIGHTS | 5.2. LISTRIGHTS | |||
| Data: mailbox name | ||||
| identifier | ||||
| required rights | ||||
| list of optional rights | ||||
| The LISTRIGHTS response occurs as a result of a LISTRIGHTS | ||||
| command. The first two strings are the mailbox name and | ||||
| identifier for which this rights list applies. Following the | ||||
| identifier is a string containing the (possibly empty) set of | ||||
| rights the identifier will always be granted in the mailbox. | ||||
| Following this are zero or more strings each containing a set of | ||||
| rights the identifier may be granted in the mailbox. Rights | ||||
| mentioned in the same string are tied together--either all must be | ||||
| granted to the identifier in the mailbox or none may be granted. | ||||
| The same right may not be listed more than once in the LISTRIGHTS | ||||
| command. | ||||
| 5.3. MYRIGHTS | ||||
| Data: mailbox name | Data: mailbox name | |||
| rights | rights | |||
| The MYRIGHTS response occurs as a result of a MYRIGHTS command. | The MYRIGHTS response occurs as a result of a MYRIGHTS command. | |||
| The first string is the mailbox name for which this ACL entry | The first string is the mailbox name for which this ACL entry | |||
| Internet DRAFT ACL June 3, 1996 | ||||
| applies. The second string is the set of rights that the client | applies. The second string is the set of rights that the client | |||
| has. | has. | |||
| Internet DRAFT ACL March 21, 1996 | ||||
| 6. Formal Syntax | 6. Formal Syntax | |||
| The following syntax specification uses the augmented Backus-Naur | The following syntax specification uses the augmented Backus-Naur | |||
| Form (BNF) notation as specified in [RFC-822] as modified by [IMAP4]. | Form (BNF) notation as specified in [RFC-822] as modified by [IMAP4]. | |||
| Non-terminals referenced but not defined below are as defined by | Non-terminals referenced but not defined below are as defined by | |||
| [IMAP4]. | [IMAP4]. | |||
| Except as noted otherwise, all alphabetic characters are | Except as noted otherwise, all alphabetic characters are | |||
| case-insensitive. The use of upper or lower case characters to | case-insensitive. The use of upper or lower case characters to | |||
| define token strings is for editorial clarity only. Implementations | define token strings is for editorial clarity only. Implementations | |||
| MUST accept these strings in a case-insensitive fashion. | MUST accept these strings in a case-insensitive fashion. | |||
| acl_data ::= "ACL" SPACE mailbox *(SPACE identifier SPACE rights) | acl_data ::= "ACL" SPACE mailbox *(SPACE identifier SPACE rights) | |||
| deleteacl ::= "DELETEACL" SPACE mailbox SPACE identifier | deleteacl ::= "DELETEACL" SPACE mailbox SPACE identifier | |||
| getacl ::= "GETACL" SPACE mailbox | getacl ::= "GETACL" SPACE mailbox | |||
| identifier ::= astring | identifier ::= astring | |||
| listrights ::= "LISTRIGHTS" SPACE mailbox SPACE identifier | ||||
| listrights_data ::= "LISTRIGHTS" SPACE mailbox SPACE identifier | ||||
| SPACE rights *(SPACE rights) | ||||
| myrights ::= "MYRIGHTS" SPACE mailbox | myrights ::= "MYRIGHTS" SPACE mailbox | |||
| myrights_data ::= "MYRIGHTS" SPACE mailbox SPACE rights | myrights_data ::= "MYRIGHTS" SPACE mailbox SPACE rights | |||
| rights ::= astring | rights ::= astring | |||
| setacl ::= "SETACL" SPACE mailbox SPACE identifier SPACE rights | setacl ::= "SETACL" SPACE mailbox SPACE identifier SPACE rights | |||
| 7. References | 7. References | |||
| [IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4", | [IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4", | |||
| RFC 1730, University of Washington, December 1994. | RFC 1730, University of Washington, December 1994. | |||
| [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text | [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text | |||
| Messages", STD 11, RFC 822. | Messages", STD 11, RFC 822. | |||
| Internet DRAFT ACL June 3, 1996 | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| An implementation must make sure the ACL commands themselves do not | An implementation must make sure the ACL commands themselves do not | |||
| give information about mailboxes with appropriately restricted ACL's. | give information about mailboxes with appropriately restricted ACL's. | |||
| For example, a GETACL command on a mailbox for which the user has | For example, a GETACL command on a mailbox for which the user has | |||
| insufficient rights should not admit the mailbox exists, much less | insufficient rights should not admit the mailbox exists, much less | |||
| return the mailbox's ACL. | return the mailbox's ACL. | |||
| Internet DRAFT ACL March 21, 1996 | ||||
| 9. Author's Address | 9. Author's Address | |||
| John G. Myers | John G. Myers | |||
| Carnegie-Mellon University | Carnegie-Mellon University | |||
| 5000 Forbes Ave. | 5000 Forbes Ave. | |||
| Pittsburgh PA, 15213-3890 | Pittsburgh PA, 15213-3890 | |||
| Email: jgm+@cmu.edu | Email: jgm+@cmu.edu | |||
| Internet DRAFT ACL March 21, 1996 | Internet DRAFT ACL June 3, 1996 | |||
| Table of Contents | Table of Contents | |||
| Status of this Memo ............................................... i | Status of this Memo ............................................... i | |||
| 1. Abstract ..................................................... 2 | 1. Abstract ..................................................... 2 | |||
| 2. Conventions Used in this Document ............................ 2 | 2. Conventions Used in this Document ............................ 2 | |||
| 3. Introduction and Overview .................................... 2 | 3. Introduction and Overview .................................... 2 | |||
| 4. Commands ..................................................... 4 | 4. Commands ..................................................... 4 | |||
| 4.1. SETACL ....................................................... 4 | 4.1. SETACL ....................................................... 4 | |||
| 4.2. DELETEACL .................................................... 4 | 4.2. DELETEACL .................................................... 4 | |||
| 4.3. GETACL ....................................................... 4 | 4.3. GETACL ....................................................... 4 | |||
| 4.4. MYRIGHTS ..................................................... 5 | 4.4. LISTRIGHTS ................................................... 5 | |||
| 5. Responses .................................................... 5 | 4.5. MYRIGHTS ..................................................... 5 | |||
| 5.1. ACL .......................................................... 5 | 5. Responses .................................................... 6 | |||
| 5.2. MYRIGHTS ..................................................... 5 | 5.1. ACL .......................................................... 6 | |||
| 6. Formal Syntax ................................................ 6 | 5.2. LISTRIGHTS ................................................... 6 | |||
| 7. References ................................................... 6 | 5.3. MYRIGHTS ..................................................... 6 | |||
| 8. Security Considerations ...................................... 6 | 6. Formal Syntax ................................................ 7 | |||
| 9. Author's Address ............................................. 7 | 7. References ................................................... 7 | |||
| 8. Security Considerations ...................................... 8 | ||||
| 9. Author's Address ............................................. 8 | ||||
| End of changes. 21 change blocks. | ||||
| 25 lines changed or deleted | 79 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||