 
	
		 
	
    
	
		 
	
	
		 
	
	
		 
	
	
		 
	
        
                 
	 
		Restricting read and write access to topics and webs, by users and groups
Access Control allows you restrict access to single topics and entire webs, by individual user and by user Groups. Access control, combined with UserAuthentication, lets you easily create and manage an extremely flexible, fine-grained privilege system. Please note FileAttachments are not protected by Foswiki Access Control in a default configuration (though this can be enabled). Your local Foswiki may have an alternate user mapping manager installed which doesn't support user registration. Check with your Wiki administrator if you are in doubt.
 Your local Foswiki may have an alternate user mapping manager installed which doesn't support user registration. Check with your Wiki administrator if you are in doubt.The following describes the standard Foswiki support for groups. Your local Foswiki may have an alternate group mapping manager installed. Check with your Wiki administrator if you are in doubt.
Groups are defined by group topics located in theMain web. To create a new group, visit  WikiGroups. You will find a "Create a new group" link at the top which reveals a form to create a new group. Enter the name of the new group ending in Group into the "Group Name" form field and the initial members in the "Members" field. This creates a new group topic. (The default User Mapper shipped with Foswiki requires that groups end with the word Group. If your site uses an alternate mapper, it might not have that requirement.)
By default any member of a group has access rights to both adding and removing users from the group through the nice user interface. If you need to limit this access further, change the ALLOWTOPICCHANGE setting through "More Topic Action" -> "Edit topic preference settings".
TheALLOWTOPICCHANGE setting defines who is allowed to change the group topic; it is a comma delimited list of users and groups. You typically want to restrict that to the members of the group itself, so it should contain the name of the topic. This prevents users not in the group from editing the topic to give themselves or others access. For example, for the KasabianGroup topic write: Set ALLOWTOPICCHANGE = Main.KasabianGroup  If you want to hide a group and its list of members, you can set
 If you want to hide a group and its list of members, you can set ALLOWTOPICVIEW on the group. For example: Set ALLOWTOPICVIEW = Main.SecretGroup  Foswiki has strict formatting rules. Settings must be entered as a bullet point.
 Foswiki has strict formatting rules. Settings must be entered as a bullet point. GroupView. This alters the way the topic is presented to include a nice user interface for adding and removing users.
{SuperAdminGroup} setting in configure. The default name of this group is the AdminGroup. The system administrator may have chosen a different name for this group if your local Foswiki uses an alternate group mapping manager, but for simplicity we will use the default name AdminGroup in the rest of this topic.
You can create new administrators simply by adding them to the AdminGroup topic. using the WikiGroups API For example,
A member of the Super Admin Group has unrestricted access throughout the wiki, so only trusted staff should be added to this group.
 Hint: Instead of adding users to the AdminGroup, consider adding them to the
 Hint: Instead of adding users to the AdminGroup, consider adding them to the ALLOWTOPICCHANGE setting for the AdminGroup.  Those users will then be able to add and remove themselves from the AdminGroup when they need admin rights, rather than running as admin all the time.
Access to webs and topics is controlled by:
{AuthScripts} setting in configure -> Security and Authentication -> Login; and
These preferences have the general form:
permission context mode Where permission isALLOW or DENY, context is TOPIC, WEB, or ROOT, and mode is VIEW, CHANGE, or RENAME. For example, the preference ALLOWWEBCHANGE lists who is allowed to change
topics in the current web.  (Some extensions add additional modes.  Ex. ALLOWTOPICCOMMENT.)
  There is an important distinction between CHANGE access and RENAME access. A user can CHANGE a topic, but thanks to version control their changes cannot be lost (the history of the topic before the change is recorded). However if a topic or web is renamed, that history may be lost. Typically a site will only give RENAME access to administrators and content owners.
 There is an important distinction between CHANGE access and RENAME access. A user can CHANGE a topic, but thanks to version control their changes cannot be lost (the history of the topic before the change is recorded). However if a topic or web is renamed, that history may be lost. Typically a site will only give RENAME access to administrators and content owners.
  Note that ALLOWWEBxxx and DENYWEBxxx preferences can only be set in WebPreferences topics. You cannot define a site level access. Each web must be protected on their own. Subwebs inherit access settings from the parent web. See next section.
 Note that ALLOWWEBxxx and DENYWEBxxx preferences can only be set in WebPreferences topics. You cannot define a site level access. Each web must be protected on their own. Subwebs inherit access settings from the parent web. See next section.
 Note that ALLOWTOPICxxx and DENYTOPICxxx preferences apply only to the topic itself.
 Note that ALLOWTOPICxxx and DENYTOPICxxx preferences apply only to the topic itself.
 Be warned that some plugins may not respect access permissions.
 Be warned that some plugins may not respect access permissions.
 FINALPREFERENCES affects access controls, allowing you to prevent changes to access control settings while still allowing edit access to topics.
 FINALPREFERENCES affects access controls, allowing you to prevent changes to access control settings while still allowing edit access to topics.
You can define restrictions on who is allowed to view a DAMASK web. You can restrict access to certain webs to selected users and groups, by:
Set DENYWEBVIEW = < comma-delimited list of users and groups >
Set ALLOWWEBVIEW = < comma-delimited list of users and groups >
Set DENYWEBCHANGE = < comma-delimited list of users and groups >
Set ALLOWWEBCHANGE = < comma-delimited list of users and groups >
Set DENYWEBRENAME = < comma-delimited list of users and groups >
Set ALLOWWEBRENAME = < comma-delimited list of users and groups >
You can also use the asterisk (*) in any of the above settings if you want it to match all possible users.
If your site allows sub-webs, then access to sub-webs is determined from the access controls of the parent web, plus the access controls in the sub-web. So, if the parent web hasALLOWWEBVIEW set, this will also apply to the subweb. Also note that you will need to ensure that the parent web's FINALPREFERENCES does not include the access control settings listed above. Otherwise you will not be able override the parent web's access control settings in sub-webs.
Creation and renaming of sub-webs is controlled by the WEBCHANGE setting on the parent web (or ROOTCHANGE for root webs). Renaming is additionally restricted by the setting of WEBRENAME in the web itself.
Set DENYTOPICVIEW = < comma-delimited list of users and groups >
Set ALLOWTOPICVIEW = < comma-delimited list of users and groups >
Set DENYTOPICCHANGE = < comma-delimited list of users and groups >
Set ALLOWTOPICCHANGE = < comma-delimited list of users and groups >
Set DENYTOPICRENAME = < comma-delimited list of users and groups >
Set ALLOWTOPICRENAME = < comma-delimited list of users and groups >
 Caution! Settings are always taken from the latest (current) revision of a topic. If older revisions of a topic had more restrictive access controls, they will not be used when accessing the older revision. If the topic was restricted because it contained sensitive information, and that information was removed, it still exists in the topic history. Once you remove the access restrictions, the topic history will be viewable.
 Caution! Settings are always taken from the latest (current) revision of a topic. If older revisions of a topic had more restrictive access controls, they will not be used when accessing the older revision. If the topic was restricted because it contained sensitive information, and that information was removed, it still exists in the topic history. Once you remove the access restrictions, the topic history will be viewable.Remember when opening up access to specific topics within a restricted web that other topics in the web - for example, the WebLeftBar - may also need to be accessed when viewing the topics. The message you get when you are denied access should tell you what topic you were not permitted to access.
 If your site started out life using an earlier version of Foswiki, you might have seen that from Foswiki 2.0 onwards, the empty DENY has been removed. This rule has been replaced by
 If your site started out life using an earlier version of Foswiki, you might have seen that from Foswiki 2.0 onwards, the empty DENY has been removed. This rule has been replaced by * wildcards in the ALLOW and DENY rules.
The previous documentation said: Set ALLOWTOPICVIEW =  Set DENYTOPICVIEW =  | Before Foswiki 2.0 | Foswiki 2.0 and newer | |
|---|---|---|
| Allow ALL users | Set DENY to an empty string | Set ALLOW to * | 
| Allow All logged-in users | Set DENY to WikiGuest Leave ALLOW un-set | <no change from before> | 
| Deny all access | Set ALLOW to NobodyGroup | Set ALLOW to NobodyGroup -or- Set DENY to * | 
| Allow selected users | Set ALLOW to desired users/groups | Set ALLOW to desired users/groups | 
| Deny selected users | Set DENY to desired users/groups | Set DENY to desired users/groups | 
{AccessControlACL}{EnableDeprecatedEmptyDeny} in the Foswiki configuration then the old behaviour will still work and  an empty DENY setting means do not deny anyone the right to access. If DENYTOPICVIEW is set to an empty value anyone has access even if ALLOWTOPICVIEW or ALLOWWEBVIEW is defined. This allows you to have very restrictive default access rights to an entire web and still allow individual topics to have more open access.
* is set in a rule, it says that any user identity will match that rule.  Setting ALLOW to * says "Allow ALL", setting * to DENY says "Deny ALL".
For example if you want completely open access to a topic for logged in users then use the following rules: Set ALLOWTOPICVIEW = * Set DENYTOPICVIEW = WikiGuest  Note that it is not possible to override a DENY with an ALLOW at the same level ALLOW on a topic can override DENY at the web level, but not at the TOPIC level
 Note that it is not possible to override a DENY with an ALLOW at the same level ALLOW on a topic can override DENY at the web level, but not at the TOPIC level
 If the same setting is defined multiple times the last one overrides the previous. They are not OR'ed together.
 If the same setting is defined multiple times the last one overrides the previous. They are not OR'ed together.
 Setting to an empty value has caused confusion and has been removed. Please read the release notes carefully when you upgrade.
 Setting to an empty value has caused confusion and has been removed. Please read the release notes carefully when you upgrade.
See "How Foswiki evaluates ALLOW/DENY settings" below for more on how ALLOW and DENY interacts.
mod_rewrite module, and configure your webserver to redirect accesses to attachments to the Foswiki viewfile script. For example,
    ScriptAlias /foswiki/bin/ /filesystem/path/to/bin/
    Alias /foswiki/pub/       /filesystem/path/to/pub/
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/+foswiki/+pub/+System/+.+
    RewriteRule ^/+foswiki/+pub/+([^/]+)((/+([^/]+))+)/+(.+) /foswiki/bin/viewfile/$1/$2?filename=$5 [L,PT]
That way all the controls that apply to the topic also apply to attachments to the topic. Other types of web servers have similar support.
 Images embedded in topics will load much slower since each image will be delivered by the
 Images embedded in topics will load much slower since each image will be delivered by the viewfile script. The Foswiki:Support.ApacheConfigGenerator has some more extensive examples of protecting user attachments, but allowing direct access to trivial graphics attached to System topics.Set DENYROOTCHANGE = < comma-delimited list of users and groups >
Set ALLOWROOTCHANGE = < comma-delimited list of users and groups >
ROOTCHANGE access to rename an existing top-level web. You just need WEBCHANGE in the web itself.
 Settings are only read from the most current (latest) revision of a topic. Settings from older revisions are never used, even when viewing an older revision with the
 Settings are only read from the most current (latest) revision of a topic. Settings from older revisions are never used, even when viewing an older revision with the rdiff scriptALLOWTOPICVIEW and ALLOWTOPICCHANGE only applies to the topic in which the settings are defined. If a topic A includes another topic B, topic A does not inherit the access rights of the included topic B.
Examples: Topic A includes topic B
NOSEARCHALL setting in WebPreferences.  It does the following: all webs search option from accessing the web
* Set NOSEARCHALL = on
This setup can be useful to hide a new web until content its ready for deployment, or reduce clutter in the WebLeftBar and default search results when restricted access is not desired.
 Setting
 Setting NOSEARCHALL to any value other than the empty string will hide a web. Setting NOSEARCHALL = off will have the same effect as setting it to on  Obfuscating a web without setting view access control is very insecure, as anyone who knows the URL can access the web, and explicit searches naming that web will also work. For security purposes it is better to use the ALLOW or DENY VIEW settings in the WebPreferences topic.
 Obfuscating a web without setting view access control is very insecure, as anyone who knows the URL can access the web, and explicit searches naming that web will also work. For security purposes it is better to use the ALLOW or DENY VIEW settings in the WebPreferences topic. %SEARCH% and %WEBLIST% will not show any results for webs that the current user does not have permission to view. With this configuration, someone with access to the site needs to register new users. ResetPassword will also have to be done by administrators.
 With this configuration, someone with access to the site needs to register new users. ResetPassword will also have to be done by administrators.bin and pub directories to all but valid users. In the Apache .htaccess file or the appropriate .conf file, replace the <FilesMatch "(attach|edit|... section with this:
<FilesMatch ".*">
       require valid-user
</FilesMatch>
If needed, you can further restrict access to selected webs with ALLOWWEBVIEW and other access control settings.
foswiki/bin directory (except for login, logon and configure) to the list of {AuthScripts} in configure, Security And Authentication tab, Login sub-tab, For a default Foswiki installation:
{AuthScripts} = 'attach,compareauth,edit,manage,previewauth,rdiffauth,rename,restauth,save,statistics,upload,viewauth,viewfileauth'; 
{AuthScripts} = 'attach,changes,compare,compareauth,edit,manage,oops,preview,previewauth,rdiff,rdiffauth,register,rename,resetpasswd,rest,restauth,save,search,statistics,upload,view,viewauth,viewfile,viewfileauth
 If you install extensions that add scripts, you must also remember to add the new scripts to this list or the new scripts will not be protected.
 If you install extensions that add scripts, you must also remember to add the new scripts to this list or the new scripts will not be protected.WebPreferences in all webs. Set DENYWEBVIEW = WikiGuest
Set ALLOWWEBVIEW = < list of users and groups >
DENYWEBVIEW is evaluated before ALLOWWEBVIEW. Access is denied if the authenticated person is in the DENYWEBVIEW list, or not in the ALLOWWEBVIEW list. Access is granted if DENYWEBVIEW and ALLOWWEBVIEW are not defined.
In rare cases it may be required to authenticate the view script. This can in some cases have a dramatic performance hit because the webserver must re-authenticate for every page view.
require valid-user on your view script in .htaccess or the appropriate Apache .conf file. This looks like: FilesMatch "(attach|edit|manage|rename|save|view|upload|mail|logon|.*auth).*" (normally view is not in that list).
Set DENYWEBVIEW = < list of users and groups >
Set ALLOWWEBVIEW = < list of users and groups >
DENYWEBVIEW is evaluated before ALLOWWEBVIEW. Access is denied if the authenticated person is in the DENYWEBVIEW list, or not in the ALLOWWEBVIEW list. Access is granted if DENYWEBVIEW and ALLOWWEBVIEW are not defined.
%SHOWPREFERENCE{"DENYWEBVIEW,ALLOWWEBVIEW,DENYWEBCHANGE,ALLOWWEBCHANGE,DENYWEBRENAME,ALLOWWEBRENAME"}%
For this topic, this displays: Edit topic preference settings under More topic actions menu. Preferences set in this manner are not visible in the topic text, but take effect nevertheless. Access control settings added as topic preference settings are stored in the topic meta data and they override settings defined in the topic text.
Alternatively, place them in HTML comment markers, but this exposes the access setting during ordinary editing.
<!--
* Set DENYTOPICCHANGE = Main.SomeGroup
-->
 Copyright © by the contributing authors. All material on this site is the property of the contributing authors.
Copyright © by the contributing authors. All material on this site is the property of the contributing authors.