Manual:Preventing access/zh
有关自定义用户权限的帮助,请参阅手册:用户权限 。 此页面包含用于限制访问的示例。
有关如何编辑 LocalSettings.php
的信息,请查看 : 。
For better access restriction, consider Extension:AccessControl or : .
简单的私人维基
对于“自己和批准他人的私人维基”的常见用例,您需要:
# 阻止匿名用户阅读页面
$wgGroupPermissions['*']['read'] = false;
# 禁用匿名编辑
$wgGroupPermissions['*']['edit'] = false;
# 阻止管理员外其他人注册新用户
$wgGroupPermissions['*']['createaccount'] = false;
根据您安装的扩展程序,您可能希望将更多页面列入白名单。
例如,如果您使用: 扩展,则可能需要将Special:RequestAccount
列入白名单。
如果您的维基的内容语言不是英语,则可能必须使用相关特殊页面的翻译名称。
限制账户创建
要限制帐户创建,您需要在MediaWiki安装的根路径中编辑LocalSettings.php
。
# 阻止管理员外其他人注册新用户
$wgGroupPermissions['*']['createaccount'] = false;
- 当以管理员身份登录时,前往Special:Userlogin。
- 点击“创建帐户”链接以转到帐户创建表单。
- 输入用户名和电子邮件地址,然后单击“通过电子邮件”按钮。 请注意,您需要$wgEnableEmail=true ,否则系统管理员必须输入一个密码并将其发送给用户。
- 该帐户将使用随机密码创建,然后通过电子邮件发送到指定地址(与“忘记密码”功能一样)。 首次登录时,将要求用户更改密码;当他这样做时,他的电子邮件地址也将被标记为已确认。
- 当您单击“创建帐户”按钮时,您必须手动向用户发送其密码。
您还可以通过编辑页面MediaWiki:Createaccount-text来修改发送给新用户的电子邮件的内容。
防止管理员创建帐户:
# 阻止任何人注册新用户
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;
要在登录表单上添加消息,请修改MediaWiki:Loginprompt。
限制编辑
限制所有页面的编辑
用户仍然可以阅读具有这些修改的页面,并且可以使用Special:Export/Article name或其他方法查看源代码。
参见Help:User rights 和$wgGroupPermissions
。
如果您使用: ,任何维基管理员也可以实施各种限制。
有关如何保护所有页面免受特定类别用户编辑(而非查看)的一些示例:
限制匿名用户编辑
要求用户在编辑之前进行注册。
$wgGroupPermissions['*']['edit'] = false;
限制所有非管理员用户编辑
要求一个用户是管理员(sysop)用户组的成员。
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['sysop']['edit'] = true;
限制所有人的编辑
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['sysop']['edit'] = false;
限制一整个名字空间的编辑
MediaWiki版本: | ≥ 1.10 |
从MediaWiki版本1.10开始,可以使用$wgNamespaceProtection
变量保护整个名字空间。
示例:
# 仅允许自动确认用户编辑Project命名空间
$wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' );
# Don't allow anyone to edit non-talk pages until they've confirmed their email address (assuming we have no custom namespaces and allow edits from non-emailconfirmed users to start with)
# Note for 1.13: emailconfirmed group and right were removed from default setup, if you want to use it, you'll have to re-enable it manually
$wgNamespaceProtection[NS_MAIN] = $wgNamespaceProtection[NS_USER] =
$wgNamespaceProtection[NS_PROJECT] = $wgNamespaceProtection[NS_IMAGE] =
$wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP] =
$wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' );
# 仅允许管理员编辑“Policy”命名空间
$wgGroupPermissions['sysop']['editpolicy'] = true;
$wgNamespaceProtection[NS_POLICY] = array( 'editpolicy' );
请注意,在最后一种情况下,假设存在自定义命名空间,NS_POLICY
是一个等于命名空间编号的已定义常量。
有关MediaWiki核心命名空间的列表,请参见手册:使用自定义命名空间 和Manual:命名空间常量 。
限制某些特定页面的编辑
使用保护 功能。 默认情况下,任何管理员都可以保护页面,因此只有其他管理员可以编辑它们。 在1.9及更高版本中,默认情况下它们也可以保护页面,因此只有“自动确认”的用户(帐户时间超过配置的时间段)才能对其进行编辑。 这不需要编辑配置文件。
如果要将编辑限制为具有特定权限的组,请编辑$wgRestrictionLevels 。 要防止编辑和移动以外的操作,请使用$wgRestrictionTypes 。
限制所有页面的编辑
要对所有页面的编辑施加全面限制,但允许一些(例如沙箱,加入请求页面等)可编辑,您可以使用EditSubpages 扩展。 这可能不太常见,但您也可以使用上面提到的限制编辑某些特定页面方法,所有名称空间都受到保护,并且每个人都可以编辑一个特殊的文件,其中包含您想要的所有页面编辑。
限制某些IP地址范围的编辑
学校和其他机构可能希望阻止指定的IP地址范围以外的编辑。 为此,请参阅手册:封禁与解除封禁 。 目前执行此操作的唯一方法而不修改代码是为了Special:Blockip并系统地rangeblock 每个你不想要的地址范围能够编辑。 这适用于所有未来版本的MediaWiki。 它不会在每个名字空间的基础上工作。
限制特定用户的编辑
使用用户封禁 功能剥夺用户的所有编辑权限。 MediaWiki并不能直接向单独用户授予权利;相反,权限始终给予用户组。 除了更改用户组之外,核心软件无法更改特定用户的权限以限制或允许编辑特定页面。
限制所有页面的创建
# 匿名用户不能创建页面
$wgGroupPermissions['*']['createpage'] = false;
# 持有四天或四天以上账户的用户才能创建页面
# 需要MW 1.6或更高。
$wgGroupPermissions['*' ]['createpage'] = false;
$wgGroupPermissions['user' ]['createpage'] = false;
$wgGroupPermissions['autoconfirmed']['createpage'] = true;
限制在某些名字空间中创建页面
创建讨论页面(createtalk)和创建非讨论页面(createpage)有单独的权利。 如果您需要更精细的每命名空间控件,则无法在核心MediaWiki中使用,并且需要扩展名,例如扩展:Lockdown 。
限制对上传文件的访问权限
如果您已启用上传文件的功能,则这些文件将由底层Web服务器直接提供。 因此,基于帐户的文件访问权限默认情况下不受限制。
'read'
(允許瀏覽頁面)為false
時僅會保護「維基(條目、討論……)頁面」,但{{$1|上傳檔案(在$UploadPath目錄中的圖片、檔案、文件……)將預設永遠保持在直接存取可讀的情況}}
。 Uploaded files (including images, files, docs) under the $wgUploadPath
subdirectories will always remain publicly accessible via direct URL access by default.當您需要限制圖片瀏覽和檔案下載僅供登入使用者可存取時,請使用Manual:Image authorization 和img_auth.php 頁面上的資訊。
服务器配置中上传文件的访问限制示例
如果将敏感文件上传到可通过互联网访问的维基,您可能希望添加对访问这些文件的限制。 在Apache上,如果您的本地网络是10.1.2.*,则可以使用以下命令将服务文件限制为本地地址:
<Location /mediawiki/images> Order deny,allow Allow from 10.1.2.3 Deny from all </Location>
限制查看
限制所有页面的查看
将这一行添加到你的LocalSettings.php中:
# 阻止匿名用户阅读页面
$wgGroupPermissions['*']['read'] = false;
# 但允许他们阅读下列页面:
$wgWhitelistRead = [ "Main Page", "Help:Contents" ];
$wgWhitelistRead
设置允许用户查看主页面。
如果页面名称包含多个单词,则在它们之间使用空格“ ”,而不是下划线“_”。
除了这样一个私有站点的主页之外,您还可以通过将Special:Recentchanges添加到$wgWhitelistRead
来为Feed阅读器提供对最近更改页面的访问权限(如果您认为其内容不是私有的)。
如果您因任何原因需要保护侧栏,主页或登录屏幕,建议您使用更高级别的身份验证,例如.htpasswd或同等身份。
限制特定页面的查看
![]() | MediaWiki的最初目的并不是提供按页面的访问限制,并且几乎所有添加这一功能的措施或补丁都或多或少存在缺陷,这可能导致暴露机密数据。 If you require this level of control, you are strongly advised to use a content management system that supports it natively.
Patches or third-party extensions claiming to provide access control may contain security flaws, potentially exposing confidential data. Use them at your own risk. Neither the MediaWiki developers nor the Wikimedia Foundation are responsible for any data leaks that may result. This message is added to all extensions of this nature and may not reflect the actual security status of this extension. 关于更多信息,请见Security issues with authorization extensions 。 |
为了防止除管理员之外的任何人查看页面,它可以被删除 。 为了防止管理员查看它,可以使用手册:修订版本删除 永久删除它。 要完全销毁页面文本,可以手动从数据库中删除它。 在任何情况下,在此状态下都无法编辑页面,并且大多数情况下不再存在。
让一个页面对一些用户正常行为但对其他用户不可见,例如在大多数论坛软件中,这是一个非常不同的事情。 MediaWiki专为两种基本访问模式而设计:
- 每个人都可以查看wiki上的每个页面(可能除了一些特殊页面)。 这是维基百科及其姊妹项目使用的模式。
- 匿名用户只能查看主页和登录页面,不能编辑任何页面。 这在技术实现方面基本上与上述相同(只是对每个页面视图进行额外检查),这就是它存在的原因。 这是某些私人维基使用的操作模式,例如各种维基媒体委员会使用的维基。
如果您打算拥有不同的视图权限,则MediaWiki不适合您的使用。 () 数据库不一定通过命名空间,页面名称或其他标准明确描述,如果您想要这样做,则必须插入大量泄漏(请参阅样本的security issues with authorization extensions )。 其他wiki软件可能更符合您的目的。 以上是对您的忠告。 如果必须使用MediaWiki,则有三种基本可能性:
- 将您的wiki设置为私有和白名单特定页面,这些页面将在LocalSetting.php文件中以
$wgWhitelistRead
公开。 请参阅上面的章节。 - 使用共享用户数据库 设置单独的wiki,将一个配置为可查看,一个配置为unviewable(见上),并在它们之间配置制造跨维基链接 。
- 安装第三方文件或扩展程序。 每次升级软件时都必须重新应用它,并且在发布MediaWiki的新安全修复程序或升级时可能不会立即更新。 当然,MediaWiki开发人员不支持第三方黑客攻击,如果您遇到问题,则不应该询问MediaWiki-l、#mediawiki或其他官方支持渠道。 一些黑客以Category:Page specific user rights extensions 列出。 如果您打算使用其中一个,请参阅security issues with authorization extensions 。
限制导出
Manual:Parameters to Special:Export
无法导出自r19935起无法读取的页面内容。
Removing the Login link from all pages
One can remove the login/create-account link from the upper right corner of all pages, as users can still go to Special:SpecialPages
→ Special:UserLogin
to log in.
In LocalSettings.php
use (tested with MediaWiki 1.43.0 LTS):
$wgHooks['SkinTemplateNavigation::Universal'][] = function ( $skinTemplate, &$links ) {
unset( $links['user-menu']['createaccount'] );
unset( $links['user-menu']['login'] );
unset( $links['user-menu']['login-private'] );
unset( $links['user-menu']['anoncontribs'] );
};
移除账户
如果您想完全删除对用户的访问权限,例如 在简单的私人维基上,不可能简单地删除该帐户(除非没有编辑 ,你可以封禁 ,但用户仍然可以能够 来阅读页面。 但是,使用User Merge and Delete 扩展名,您可以将该帐户合并到另一个帐户中并删除前者,然后原始帐户将“消失”。 如果您想保留历史记录可读性(即,要让用户的编辑仍以他的名字显示),您可以创建一个新帐户,例如使用用户名Original User Name (deactivated)然后将Original User Name合并到前者中,或者甚至使用Renameuser 扩展名将Original User Name重命名为Another User Name,然后在Original User Name下创建一个帐户并将Another User Name合并到其中,这样,Original User Name将被完全“篡改”(如果您设置了非空密码)。
其他限制
您可能希望页面仅由其创建者编辑,或禁止查看历史记录或任何其他任何内容。 MediaWiki的未经修改版本中这些功能不可用。 如果您需要更细粒度的权限,请参阅参见部分以获取为此设计的其他wiki包的链接,以及试图将MediaWiki转换为其未设计的内容的黑客攻击,无论如何可能会工作。
参见
有一些您可能感兴趣的相关手册/帮助页面:
- :
- 手册:$wgGroupPermissions
- 手册:$wgRestrictionTypes
- 手册:$wgRestrictionLevels
- 手册:$wgNamespaceProtection
- 手册:$wgEmailConfirmToEdit
- :
- 手册:用户权限
- :
其他维基软件可能比MediaWiki更好地支持细粒度的访问控制:
如果您想要更好的访问控制但想要使用MediaWiki,这是一个扩展列表,并且允许在软件中实现不可能的限制。 其中的修改可能已经过时(请查看他们的版本)。 如果经过第三方修改的文件出现问题,请不要在官方MediaWiki支持渠道中询问。
- Extension:Flagged Revisions
- :
- Extension:Approved Revs
- 扩展:Lockdown
- :
- Extension:EditSubpages - 限制匿名用户编辑大多数页面
- Extension:NSFileRepo