<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krishtalevia</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krishtalevia"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Krishtalevia"/>
	<updated>2026-04-21T04:04:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Access_Control_List&amp;diff=81827</id>
		<title>RU/Access Control List</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Access_Control_List&amp;diff=81827"/>
		<updated>2025-02-20T19:06:31Z</updated>

		<summary type="html">&lt;p&gt;Krishtalevia: Исправлена опечатка: 'покан' заменено на 'показан'.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MTA включает в себя полноценный Access Control List (ACL, список контроля доступа), позволяющий вам обезопашивать и ограничивать доступ к серверу, его функциям и ресурсам любыми способами, которыми вы пожелаете.&lt;br /&gt;
&lt;br /&gt;
Ключевая концепция MTA'шного ACL (и ACL в целом) - то, что вы даете определенному объекту набор прав. В случае с MTA, объекты - это одно из двух: либо ресурсы, либо пользователи. В MTA доступно множество ''прав'' - они в основном сфокусированы на скриптинговых функциях серверной стороны. &lt;br /&gt;
&lt;br /&gt;
По сути это значит, что ACL позволяет вам выбирать к использованию каких в точности функций могут иметь доступ ресурс или игрок. Очевидно, что эта возможность бесценна - например, можно не допустить возможность рядовых игроков сервера банить друг друга, или не дать вашим новым непротестированным ресурсам это делать. &lt;br /&gt;
&lt;br /&gt;
Конечно, ''большая сила влечет за собой большую ответственность'', и очень легко можно сломать ресурсы полностью - например, отключение [[spawnPlayer]] для всех ресурсов будет ОЧЕНЬ плохой идеей. В то же время, есть ситуации, когда вам может захотеться это сделать - если вы хотите принудить все свои ресурсы использовать ресурс spawn manager, например, но даже это несколько драконовские меры.&lt;br /&gt;
&lt;br /&gt;
==Понимание ACL==&lt;br /&gt;
ACL состоит из двух важных компонентов: групп и ACL-списков. Они фигурируют как узлы '''&amp;lt;group name=&amp;quot;&amp;quot;&amp;gt;''' и '''&amp;lt;acl name=&amp;quot;&amp;quot; /&amp;gt;'''. Их назначение:&amp;lt;br \&amp;gt;&lt;br /&gt;
'''1.''' Предоставить пользователям полномочия контролировать сервер и пользоваться командами ресура. Примеры:''&amp;lt;br \&amp;gt;&lt;br /&gt;
*Позволить только админам использовать функцию giveweapon мода freeroam&lt;br /&gt;
*Позволить всем пользователям запускать ресурс&lt;br /&gt;
'''2.''' Предоставить ресурсам полномочия использовать функции скриптинга и функции других ресурсов. Примеры:&amp;lt;br \&amp;gt;&lt;br /&gt;
*Позволить ресурсу использовать функцию restartResource&lt;br /&gt;
*Позволить ресурсу использовать функцию call для использования экспортированных из другого скрипта функций&lt;br /&gt;
&lt;br /&gt;
===Группы по умолчанию===&lt;br /&gt;
MTA предоставляет некоторые группы по умолчанию, в списке они по возрастанию полномочий. Эти группы:&lt;br /&gt;
*'''Everyone'''&lt;br /&gt;
*'''Moderator'''&lt;br /&gt;
*'''SuperModerator'''&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Console''' - Эта контролирует полномочия людей, которые используют консоль, через '''&amp;lt;object name=&amp;quot;user.Console&amp;quot; /&amp;gt;'''&lt;br /&gt;
*'''RPC''' - Remote Procedure Call (Удаленный Вызов Процедуры). Конкретно эта предоставляет доступ только к [[callRemote]] и отключает команды ресурсов по умолчанию. Для подробностей смотрите саму функцию.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для дальнейших объяснений, я воспользуюсь группой Everyone в качестве образца. По умолчанию это выглядит так:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;group name=&amp;quot;Everyone&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;Default&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;user.*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;resource.*&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
Сначала вы заметите имя ACL-списка внутри группы. Он обозначает, какие у группы полномочия. Пользователи и ресурсы, принадлежные данной группе, будут иметь полномочия, указанные в acl-списке с названием &amp;quot;Default&amp;quot;. ''Заметка: Вы увидите, что эта группа - особенная, в нее входит любой пользователь и ресурс, это благодаря использованию '''шаблона (*)''' на месте, где должно быть название пользователя или ресурса.''&lt;br /&gt;
&lt;br /&gt;
Теперь прокрутите далее вниз ACL'а и вы увидите acl-список '''&amp;lt;acl name=&amp;quot;Default&amp;quot; /&amp;gt;'''. Заметьте, что я значительно обрезал данный список из-за его длины.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;acl name=&amp;quot;Default&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.start&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.stop&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.stopall&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
    &amp;lt;right name=&amp;quot;function.executeCommandHandler&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;function.restartResource&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
    &amp;lt;right name=&amp;quot;general.adminpanel&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;general.tab_players&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;general.tab_resources&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.freeze&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.shout&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.spectate&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
&amp;lt;/acl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
*'''Function'''-записи регулируют скриптинговые функции MTA. Например, если ресурсу понадобилось воспользоваться restartResource, а он лишь в группе 'Everyone' (с acl-списком 'Default'), ему будет отказано в доступе к restartResource и он откажется полноценно работать.&lt;br /&gt;
*'''Command'''-записи регулируют использование команд, которые создаются при использовании ресурсом [[addCommandHandler]]'ов. Примером использования команды служит ввод в чате '''/createvehicle [vehicle]''' при ресурсе freeroam. Данные записи контролируют, могут ли пользователи группы, использующей данный ACL-список, использовать эту команду. ''Заметка: команды не влияют на ресурсы внутри группы. Команды связаны только с пользователями.''&lt;br /&gt;
**''General - самостоятельно придуманная группа записей, созданная ресурсом admin, хотя она работает по схожим принципам. Скрипт работает с ними через использование [[hasObjectPermissionTo]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы заметите, что некоторые группы, такие как Admin, имеют несколько узлов '''&amp;lt;acl name=&amp;quot;&amp;quot; /&amp;gt;'''. Образцом далее служит группа Admin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;group name=&amp;quot;Admin&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;Moderator&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;SuperModerator&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;Admin&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;RPC&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;resource.admin&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;resource.webadmin&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;user.Ransom&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это дает все полномочия, описанные в каждом из узлов '''&amp;lt;acl name=&amp;quot;&amp;quot; /&amp;gt;''', по порядку списка. Так что, например, группа Admin благодаря использованию всех ACL-списков удостоверяется, что администраторам даются все полномочия. Если получается слишком много конфликтов, приоритет отдается самой нижней записи. В образце выше:&lt;br /&gt;
&lt;br /&gt;
'''1.''' '''&amp;lt;acl name=&amp;quot;Default&amp;quot;&amp;gt;''' устанавливает &amp;lt;right name=&amp;quot;general.http&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
'''2.''' '''&amp;lt;acl name=&amp;quot;Admin&amp;quot;&amp;gt;''' устанавливает &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
'''3.''' Для всех пользователей и ресурсов в группе admin будет: &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;br\&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Группы и ACL ресурсов ===&lt;br /&gt;
Вы заметите, что вместе с использованием MTA появляются и некоторые другие группы. Они определены ресурсами, которые идут вместе с MTA. Если ресурс хочет обозначить собственные ACL-права, не предоставляемые группами MTA по умолчанию, он может создать ACL со своими собственными названием и группой и использовать его. Я покажу это на примере AMX. AMX предназначен для эмуляции SA-MP скриптов, и ему нужен определенный набор полномочий, который, в том числе, не входит в рамки групп по умолчанию. Он показан ниже:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;group name=&amp;quot;AMX&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;acl name=&amp;quot;AMX&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;object name=&amp;quot;resource.amx&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acl name=&amp;quot;AMX&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;general.adminpanel&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.kick&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.freeze&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;right name=&amp;quot;command.mute&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    ...и т.д. и т.д...&lt;br /&gt;
&amp;lt;/acl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Изменение ACL==&lt;br /&gt;
Есть три способа изменения ACL - как это делать зависит от вас.&lt;br /&gt;
&lt;br /&gt;
===HTTP-интерфейс===&lt;br /&gt;
Вы можете воспользоваться http-интерфейсом [[RU/Resource:Webadmin|webadmin]] для изменения ACL через ваш веб-браузере. Это наиболее легкий способ. Просто удостоверьтесь, что на сервере запущен ресурс ''webadmin'' и посетите ''&amp;lt;nowiki&amp;gt;http://IPсервера:Httpпорт/&amp;lt;/nowiki&amp;gt;''. Затем вам будут доступны две секции - ACLs и Groups. ACLs позволяет вам создавать ваш Access Control List - список прав. Groups позволяет вам вместе группировать скопления пользователей и назначать им ACL-список. Например, секция ACLs позволяет вам указывать, что пользователи группы с ACL-списком Admin имеет доступ к консольной команде ''start''. Затем вы можете зайти в секцию Groups и создать ''группу'' Admin, имеющую доступ к вашему ''acl-списку'' Admin. Потом вы сможете добавлять в вашу ''группу'' Admin пользователей.&lt;br /&gt;
&lt;br /&gt;
===XML-файл===&lt;br /&gt;
Вы можете вручную изменять файл ACL.xml. Он обладает довольно простым синтаксисом, но может временами немного вводить в заблуждение. Если вы редактируете его, когда сервер запущен, либо потом не забудьте вызвать скриптинговую функцию [[aclReload]] (&amp;quot;start runcode&amp;quot;, &amp;quot;run aclReload()&amp;quot;), чтобы новый ACL загрузился, либо перед внесением изменений остановите сервер. Это также предотвратит случайную перезапись ваших изменений сервером.&lt;br /&gt;
&lt;br /&gt;
===Функции скриптинга===&lt;br /&gt;
Вы можете использовать огромное количество скриптинговых ACL-функций для его изменения &amp;quot;на лету&amp;quot;. Конечно, можно (и на самом деле нужно!) ограничивать доступ к ACL-функциям через сам ACL. Заметьте, что '''ресурс admin''', идущий вместе с MTA, может использоваться для распоряжения ACL (из вкладки &amp;quot;resources&amp;quot;). Вы должны быть админом сервера для использования этого. [https://wiki.multitheftauto.com/wiki/Admin Нажмите здесь для инструкций по установке admin].&lt;br /&gt;
&lt;br /&gt;
==Также смотрите==&lt;br /&gt;
{{ACL functions}}&lt;br /&gt;
[[Category:Понятия скриптинга]]&lt;br /&gt;
[[en:Access Control List]]&lt;/div&gt;</summary>
		<author><name>Krishtalevia</name></author>
	</entry>
</feed>