<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>phpGACL - ÑÑÑÑÐºÐ°Ñ Ð´Ð¾ÐºÑменÑаÑиÑ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="author" content="Feskov Kuzma, http://russofile.ru/kuzma/">
<style>
BODY{color:Black;background-color:White;font-family:sans-serif;font-size:14px;}
TABLE.BORDER{border-color:#FFFFCC;border-style:Solid;border-width:3px;}
TD{font-family:sans-serif;font-size:14px;}
TD.CONTENT{padding:.5cm .5cm .5cm;}
A{color: #002080;text-decoration:none;}
A:hover{color:#D49000;}
P{text-indent:1cm;margin:0cm;}
PRE{font-size:14px;}
HR{color:#FFFFCC;}
H1{color:#FFD068;}
H2{color:#FFD068;}
H3{color:#FFD068;}
.P1{letter-spacing:2pt}
</style>
</head>
<body>
<h1>phpGACL - ÑÑÑÑÐºÐ°Ñ Ð´Ð¾ÐºÑменÑаÑиÑ</h1>
Generic Access Control List
<br><br>
Mike Benoit (<a href="mailto:hide@address.com">hide@address.com</a>)<br>
James Russell (<a href="mailto:james-hide@address.com">james-hide@address.com</a>)<br>
Karsten Dambekalns (<a href="mailto:hide@address.com">hide@address.com</a>)<br>
Ð ÑÑÑкий пеÑевод ФеÑÑков ÐÑзÑма (<a href="mailto:hide@address.com">hide@address.com</a>) (<a href="http://php.russofile.ru" target="_blank">http://php.russofile.ru</a>)<br>
Copyright © 2002,2003, Mike Benoit<br>
Copyright © 2003, James Russell<br>
Copyright © 2003, Karsten Dambekalns<br>
Document Version: 672<br>
Last Updated: 5/20/03 - 18:55:08<br>
<h1>phpGACL</h1>
<h2>ЧÑо ÑÑо?</h2>
<p>PhpGACL â ÑÑо Ð½Ð°Ð±Ð¾Ñ ÑÑнкÑий, коÑоÑÑй позволÑÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð¿Ñава доÑÑÑпа к пÑоизволÑнÑм обÑекÑам (напÑимеÑ, ÑÑÑаниÑам, базам даннÑÑ
и Ñак далее) дÑÑгим обÑекÑам (напÑимеÑ, полÑзоваÑелÑми, ÑдаленнÑми Ñ
оÑÑами и Ñак далее).
<p>ÐÑо пÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ Ð¿Ð¾Ð´ÑобнÑй конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа Ñ Ð¿ÑоÑÑÑм ÑпÑавлением и вÑÑокой ÑкоÑоÑÑÑÑ.
<p>СкÑÐ¸Ð¿Ñ Ð½Ð°Ð¿Ð¸Ñан на PHP (оÑÑÑда его название â phpGACL) â ÑÑо попÑлÑÑнÑй ÑкÑипÑовÑй ÑзÑк, коÑоÑÑй обÑÑно иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ ÑеÑи. GACL ÑаÑÑÑ phpGACL â Родовой ÑпиÑок конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа.
<h2>Ðде взÑÑÑ?</h2>
<p>PhpGACL Ñ
оÑÑиÑÑÑ Ð½Ð° sourceforge.net здеÑÑ <a href="http://phpGACL.sourceforge.net/" target="_blank">http://phpGACL.sourceforge.net/</a>
<h2>ЧÑо нÑжно Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка?</h2>
<P>PhpGACL ÑÑебÑÐµÑ ÑелÑÑионнÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о пÑаваÑ
. ÐоÑÑÑп к базе даннÑÑ
оÑÑÑеÑÑвлÑеÑÑÑ ÑеÑез абÑÑÑакÑнÑй клаÑÑ Ð´Ð¾ÑÑÑпа к базам даннÑÑ
ADOdb (<a href="http://php.weblogs.com/adodb" target="_blank">http://php.weblogs.com/adodb</a>). ÐаннÑй клаÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑабоÑаÑÑ Ñ Ñакими базами даннÑÑ
как: PostgreSQL, MySQL, Oracle.
<p>ÐоÑколÑÐºÑ phpGACL напиÑан на ÑзÑке PHP, Ñо он ÑÑебÑÐµÑ ÑÑÑановки PHP веÑÑии не ниже 4.2. ACL (ÐдминиÑÑÑиÑование ÑпиÑка конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа) дополнена веб-инÑеÑÑейÑом, поÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ
одимо налиÑие веб-ÑеÑвеÑа Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой PHP, напÑимеÑ, Apache (<a href="http://httpd.apache.org/" target="_blank">http://httpd.apache.org/</a>).
<h2>ÐвÑоÑÑ</h2>
<p>Mike Benoit (<a href="mailto:hide@address.com">hide@address.com</a>) â авÑÐ¾Ñ Ð¸ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð¿ÑоекÑа.
<p>James Russel (<a href="mailto:james-hide@address.com">james-hide@address.com</a>) и
<p>Karsten Dambekalns (<a href="mailto:hide@address.com">hide@address.com</a>) â авÑоÑÑ Ð´Ð¾ÐºÑменÑаÑии.
<p>Feskov Kuzma (<a href="mailto:hide@address.com">hide@address.com</a>) â ÑÑÑÑкий пеÑевод
<p>ÐоÑледнÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¿ÐµÑевода вÑегда здеÑÑ: <a href="http://php.russofile.ru" target="_blank">http://php.russofile.ru</a>
<h1>Ðведение</h1>
<h2>Ðонимание конÑÑÐ¾Ð»Ñ Ð´ÐµÐ¹ÑÑвиÑ</h2>
<p>Хан â капиÑан âСокола ÑÑÑÑÑелеÑиÑâ и ЧÑви â его вÑоÑой оÑиÑеÑ. Ðни взÑли на боÑÑ Ð½ÐµÑколÑко паÑÑажиÑов: ÐÑка, Ðби-Ðана, R2-D2 и C3PO. Хан должен опÑеделиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа Ð´Ð»Ñ ÑазлиÑнÑÑ
меÑÑ (комнаÑ) коÑаблÑ, напÑимеÑ: кабина, маÑиннÑй зал, двигаÑели и внеÑнее оÑÑжие.
<p>Хан Ñказал: âЯ и ЧÑви могÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп вÑÑдÑ, но, поÑле оÑобенно гÑÑзного ÑемонÑа гипеÑдвигаÑелÑ, Ñ Ð·Ð°Ð¿ÑеÑÐ°Ñ Ð§Ñви когда-либо подÑ
одиÑÑ Ðº маÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð·Ð°Ð»Ñ. ÐаÑÑажиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ñ Ð¿Ð°ÑÑажиÑÑким заломâ.
<p>С ÑÑого моменÑа, давайÑе бÑдем ÑÑиÑаÑÑ, ÑÑо доÑÑÑп ÑвлÑеÑÑÑ Boolean (ÐÑлевÑм), Ñо еÑÑÑ, ÑезÑлÑÑÐ°Ñ Ð·Ð°Ð¿ÑоÑа на доÑÑÑп пеÑÑонажа к какомÑ-либо помеÑÐµÐ½Ð¸Ñ ÑвлÑеÑÑÑ âРазÑеÑиÑÑâ или âÐе ÑазÑеÑиÑÑâ, и Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ ÑÑеднего ÑезÑлÑÑаÑа.
<p>ÐÑли Ð¼Ñ Ð½Ð°Ð½ÐµÑем ÑÑо ÑÑвеÑждение на маÑÑиÑÑ Ð´Ð¾ÑÑÑпа, показÑваÑÑÑÑ, кÑо Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп кÑда-либо, Ñо ÑÑо Ð±Ñ Ð²ÑглÑдело пÑимеÑно Ñак (O â доÑÑÑп ÑазÑеÑен, X â доÑÑÑп запÑеÑен):
<table align="center" cellpadding="5" border="1">
<tr>
<td align="center">ÐÑо / ÐÑда</td>
<td align="center">Ðабина</td>
<td align="center">ÐаÑÑажиÑÑкий зал</td>
<td align="center">ÐÑÑжие</td>
<td align="center">ÐаÑиннÑй зал</td>
</tr>
<tr>
<td align="center">Хан
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
</tr>
<tr>
<td align="center">ЧÑви
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">Ðби-Ðан
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">ÐÑк
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">R2-D2
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">C3PO
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="red">X
</tr>
</table>
<p>Ðолонки показÑваÑÑ ÑпиÑок комнаÑ, к коÑоÑÑм Хан Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð³ÑаниÑиÑÑ Ð´Ð¾ÑÑÑп, а ÑÑÐ´Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ð¿ÐµÑÑон, коÑоÑÑе могли Ð±Ñ Ð·Ð°Ð¿ÑоÑиÑÑ Ð´Ð¾ÑÑÑп к Ñем или инÑм комнаÑам. Ðолее ÑиÑокое обÑÑÑнение:
<p>âкомнаÑÑâ - ÑÑо веÑи (обÑекÑÑ) Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа к ним. ÐÑ Ð½Ð°Ð·Ñваем ÑÑи обÑекÑÑ <strong>ACO</strong> (<em>Access Control Objects</em> - ÐбÑекÑÑ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа);
<p>âлÑдиâ - âвеÑи (обÑекÑÑ), запÑаÑиваÑÑие доÑÑÑпâ. ÐÑ Ð½Ð°Ð·Ñваем иÑ
<strong>ARO</strong> (<em>Access Request Objects</em> - ÐбÑекÑÑ Ð·Ð°Ð¿ÑоÑа доÑÑÑпа). ÐÑди запÑаÑиваÑÑ Ð´Ð¾ÑÑÑп к комнаÑам, или, в наÑей ÑеÑминологии, AROs запÑаÑиваÑÑ Ð´Ð¾ÑÑÑп к ACOs.
<p>Так же еÑÑÑ ÑÑеÑий Ñип обÑекÑа â <strong>AXO</strong> (<em>Access eXtension Objects</em> â ÐбÑекÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа), но о нем Ð¼Ñ Ð¿Ð¾Ð³Ð¾Ð²Ð¾Ñим позже. ÐÑи обÑекÑÑ Ð¸Ð¼ÐµÑÑ Ð¼Ð½Ð¾Ð³Ð¾ аÑÑибÑÑов и ÑпоминаÑÑÑÑ Ð²Ð¼ÐµÑÑе как ÐбÑекÑÑ Ð´Ð¾ÑÑÑпа.
<p>УпÑавление доÑÑÑпом, иÑполÑзÑÑ Ð¼Ð°ÑÑиÑÑ Ð´Ð¾ÑÑÑпа, подобной вÑÑе, Ð¸Ð¼ÐµÐµÑ Ð¿ÑеимÑÑеÑÑва и недоÑÑаÑки:
<p>ÐлÑÑÑ:
<ul>
<li>оÑÐµÐ½Ñ Ð¿Ð¾Ð´ÑобнÑй â еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпом на ÑÑовне конкÑеÑного Ñеловека, еÑли еÑÑÑ ÑÐ°ÐºÐ°Ñ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ;
<li>легко ÑвидеÑÑ, <u>кÑо</u> Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп и <u>к ÑемÑ</u>. ÐÑÐ²ÐµÑ Ð½Ð°Ñ
одиÑÑÑ Ð² пеÑеÑеÑении Ñеловека и комнаÑÑ.
</ul>
<p>ÐинÑÑÑ:
<ul>
<li>ÑÑÑдно ÑпÑавлÑÑÑ Ð½Ð° кÑÑпной маÑÑиÑе доÑÑÑпа. 6 паÑÑажиÑов и 4 меÑÑа â ÑÑо пÑоÑÑо, но ÑÑо, еÑли Ñ Ð²Ð°Ñ ÑÑÑÑÑи паÑÑажиÑов и ÑоÑни меÑÑ, и Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð³ÑаниÑиÑÑ Ð´Ð¾ÑÑÑп болÑÑими гÑÑппами и ÑÑазÑ, но ÑоÑ
ÑаниÑÑ Ð¿Ñи ÑÑом подÑобнÑй конÑÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð¾ÑделÑного индивидÑÑма? ÐÑо ознаÑало Ð±Ñ Ð±Ð¾Ð»ÑÑое и ÑÑÑдоемкое ÑегÑлиÑование маÑÑиÑÑ, а Ñак же поÑÑавило Ð±Ñ Ð¾ÑÐµÐ½Ñ ÑÑÑднÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð¿ÑовеÑки маÑÑиÑÑ Ð½Ð° пÑавилÑноÑÑÑ;
<li>ÑÑÑдно ÑÑммиÑоваÑÑ Ð¸ визÑализиÑоваÑÑ. ÐÑедÑдÑÑий пÑÐ¸Ð¼ÐµÑ Ð´Ð¾Ð²Ð¾Ð»Ñно пÑоÑÑ, его можно запиÑаÑÑ Ð² неÑколÑко пÑедложений (ÑмоÑÑиÑе вÑÑказÑвание Хана), но ÑÑо, еÑли маÑÑиÑа Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ ÑакÑÑ?
</ul>
<table align="center" cellpadding="5" border="1">
<tr>
<td align="center">ÐÑо / ÐÑда</td>
<td align="center">Ðабина</td>
<td align="center">ÐаÑÑажиÑÑкий зал</td>
<td align="center">ÐÑÑжие</td>
<td align="center">ÐаÑиннÑй зал</td>
</tr>
<tr>
<td align="center">Хан
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">O
</tr>
<tr>
<td align="center">ЧÑви
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">Ðби-Ðан
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">ÐÑк
<td align="center" bgcolor="green">0
<td align="center" bgcolor="green">O
<td align="center" bgcolor="green">0
<td align="center" bgcolor="red">X
</tr>
<tr>
<td align="center">R2-D2
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">0
</tr>
<tr>
<td align="center">C3PO
<td align="center" bgcolor="green">0
<td align="center" bgcolor="green">O
<td align="center" bgcolor="red">X
<td align="center" bgcolor="green">0
</tr>
</table>
<p>ÐÑа маÑÑиÑа не на ÑÑолÑко оÑевидна Ð´Ð»Ñ ÑÑммиÑованиÑ, и не понÑÑна Ð´Ð»Ñ ÑиÑаÑелÑ, поÑÐµÐ¼Ñ Ñе или инÑе ÑеÑÐµÐ½Ð¸Ñ Ð±Ñли пÑинÑÑÑ.
<h2>УпÑавление конÑÑолем доÑÑÑпа пÑи помоÑи phpGACL</h2>
<p>ЯÑно, ÑÑо Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð½Ð°Ð´ болÑÑими ÑиÑÑемами и ÑложнÑми ÑиÑÑаÑиÑми ÑÑÐ¾Ñ Ð¿Ð¾Ð´Ñ
од âмаÑÑиÑÑ Ð´Ð¾ÑÑÑпаâ ÑвлÑеÑÑÑ Ð½ÐµÐ¿Ð¾Ð´Ñ
одÑÑим. ÐÑ Ð½ÑждаемÑÑ Ð² лÑÑÑей ÑиÑÑеме, коÑоÑÐ°Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð»ÑÑÑ (подÑобнÑй конÑÑÐ¾Ð»Ñ Ð¸ понÑÑнÑÑ Ð²Ð¸Ð·ÑализаÑÐ¸Ñ Ñого, <u>кÑо</u> Ð¸Ð¼ÐµÐµÑ Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп и <u>к ÑемÑ</u>) и ÑдалÑÐµÑ Ð½ÐµÑдобÑÑва (ÑÑÑдноÑÑÑ ÑÑммиÑованиÑ, ÑÑÑдноÑÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑими гÑÑппами лÑдей ÑÑазÑ). Ðдно ÑеÑение â phpGACL.
<p>PhpGACL не опиÑÑÐ²Ð°ÐµÑ Ð´Ð¾ÑÑÑп Ð¾Ñ âвоÑÑ
одÑÑегоâ подобно маÑÑиÑе доÑÑÑпа вÑÑе. ÐмеÑÑо ÑÑого, опиÑÑÐ²Ð°ÐµÑ Ð´Ð¾ÑÑÑп ÑвеÑÑ
Ñ Ð²Ð½Ð¸Ð·, подобно ÑекÑÑÐ¾Ð²Ð¾Ð¼Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ñики доÑÑÑпа Хана. ÐÑо â оÑÐµÐ½Ñ Ð³Ð¸Ð±ÐºÐ°Ñ ÑиÑÑема, коÑоÑÐ°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð²Ð°Ð¼ ÑпÑавлÑÑÑ Ð´Ð¾ÑÑÑпом в болÑÑиÑ
гÑÑппаÑ
, Ñак же позволÑÐµÑ Ð°ÐºÐºÑÑаÑно ÑÑммиÑоваÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð´Ð¾ÑÑÑпа и легко видеÑÑ, <u>кÑо</u> Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво на доÑÑÑп и <u>к ÑемÑ</u>.
<p>ARO-деÑево опÑеделÑÐµÑ Ð¸ÐµÑаÑÑ
Ð¸Ñ Ð³ÑÑпп AROs (обÑекÑов запÑоÑа доÑÑÑпа). ÐÑо подобно пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´ÐµÑева папок и Ñайлов. âÐапкиâ - гÑÑппÑ, âÑайлÑâ - AROs.
<p>ÐавайÑе попÑобÑем ÑоÑÑавиÑÑ ACL-деÑево Ð´Ð»Ñ Ð»Ñдей на ÑÑдне Хана. СнаÑала Ð¼Ñ Ð¾Ð¿Ñеделим некоÑоÑÑе каÑегоÑии Ð´Ð»Ñ Ð»Ñдей. ЯÑно, ÑÑо Хан и ЧÑви ÑпÑавлÑÑÑ ÑÑдном, а оÑÑалÑнÑе обÑекÑÑ â ÑÑо ÑолÑко паÑÑажиÑÑ.
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑÐ¸Ñ ÐÑÑппа
ââÐоманда ÐÑÑппа
â ââХан ARO
â ââЧÑви ARO
ââÐаÑÑажиÑÑ ÐÑÑппа
ââÐби-Ðан ARO
ââÐÑк ARO
ââR2-D2 ARO
ââC3PO ARO
</pre>
<p>ÐÑо деÑево не опÑеделÑÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ полиÑики, оно пÑоÑÑо показÑваеÑ, каким обÑазом Ð¼Ñ Ð³ÑÑппиÑÑем лÑдей, коÑоÑÑе могли Ð±Ñ Ð·Ð°Ð¿ÑоÑиÑÑ Ð´Ð¾ÑÑÑп (AROs).
<p>ÐÑ Ð·Ð°Ð´Ð°ÐµÐ¼ огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа, ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ Ð¸Ð½ÑÑÑÑкÑии Ð´Ð»Ñ Ð¾Ð¿Ñеделенной комнаÑÑ (ACO) какой-Ñо гÑÑппе или AROs в деÑеве. Хан говоÑиÑ: âÐо ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð¸ÐºÐ¾Ð¼Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð½Ð°Ð·Ð½Ð°ÑиÑÑ Ð´Ð¾ÑÑÑп ни к одной из ÐºÐ¾Ð¼Ð½Ð°Ñ Ð½Ð° Соколе ÑÑÑÑÑелеÑиÑ. Ðо команда должна имеÑÑ Ð´Ð¾ÑÑÑп к каждой комнаÑе. ÐаÑÑажиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп ÑолÑко к паÑÑажиÑÑÐºÐ¾Ð¼Ñ Ð·Ð°Ð»Ñâ.
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
ââÐби-Ðан
ââÐÑк
ââR2D2
ââC3PO
</pre>
<p>ЧÑÐ¾Ð±Ñ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑ Ð½Ð°Ñе ARO-деÑево, Ð¼Ñ Ð½Ð°Ñинаем Ñ Ð²ÐµÑÑÐ¸Ð½Ñ Ð¸ двигаемÑÑ Ð²Ð½Ð¸Ð·.
<p>Ðо-пеÑвÑÑ
, полиÑика по ÑмолÑÐ°Ð½Ð¸Ñ ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑеÑиÑÑ Ð´Ð¾ÑÑÑп ко вÑемÑ. ÐгÑаниÑÐµÐ½Ð¸Ñ Ð±Ñли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ ÑолÑко Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, Ñак ÑÑо они ÑепеÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп ко вÑÐµÐ¼Ñ (ALL â Ñиноним Ð´Ð»Ñ Ð²ÑеÑ
ÐºÐ¾Ð¼Ð½Ð°Ñ (кабина, маÑиннÑй зал, паÑÑажиÑÑкий зал и оÑÑжие). ÐаÑÑажиÑÑ Ð¸Ð¼ÐµÑÑ ÑолÑко доÑÑÑп к паÑÑажиÑÑÐºÐ¾Ð¼Ñ Ð·Ð°Ð»Ñ.
<p>Такой ÑпоÑоб опиÑÑваÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð´Ð¾ÑÑÑпа более ÑÑен Ñем маÑÑиÑа доÑÑÑпа. ÐÑ Ð¼Ð¾Ð¶ÐµÑе легко видеÑÑ ÐºÑо Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп к ÑемÑ, а Ñак же более легко опÑеделиÑÑ, поÑÐµÐ¼Ñ Ð¾Ð½Ð¸ имеÑÑ ÑÑÐ¾Ñ Ð´Ð¾ÑÑÑп (кажеÑÑÑ Ð¾ÑевиднÑм, ÑÑо Хан и ЧÑви имеÑÑ Ð´Ð¾ÑÑÑп ко вÑемÑ, Ñак как они ÑгÑÑппиÑÐ¾Ð²Ð°Ð½Ñ Ð² âÐомандÑâ).
<p>СÑммиÑÑем:
<ul>
<li>ACO (обÑекÑÑ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа) â веÑи, доÑÑÑпом к коÑоÑÑм Ð¼Ñ Ñ
оÑим ÑпÑавлÑÑÑ (напÑÐ¸Ð¼ÐµÑ ÑÑÑаниÑÑ ÑеÑи, Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, комнаÑÑ Ð¸ Ñак далее);
<li>ARO (обÑекÑÑ Ð·Ð°Ð¿ÑоÑа доÑÑÑпа) â веÑи, коÑоÑÑе запÑаÑиваÑÑ Ð´Ð¾ÑÑÑп (напÑимеÑ, лÑди, оÑдаленнÑе компÑÑÑеÑÑ Ð¸ Ñак далее);
<li>ARO-деÑевÑÑ â опÑеделÑÑÑ Ð¸ÐµÑаÑÑ
Ð¸Ñ <strong>ÐÑÑпп</strong> и AROs. ÐÑÑÐ¿Ð¿Ñ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ Ð´ÑÑгие гÑÑÐ¿Ð¿Ñ Ð¸ AROs;
<li>полиÑика по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð´ÐµÑева â запÑеÑиÑÑ Ð²Ñе (DENY: ALL);
<li>ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð´Ð¾ÑÑÑпа, двигайÑеÑÑ Ð²Ð½Ð¸Ð· по деÑевÑ, Ñвно назнаÑÐ°Ñ ÑазÑеÑÐµÐ½Ð¸Ñ ÐÑÑппам и AROs Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ACO, еÑли в ÑÑом Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ð¾ÑÑебноÑÑÑ.
</ul>
<h2>ÐодÑобнÑй конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа</h2>
<p>Ðй, Ð¼Ñ ÐºÐ°Ð¶ÐµÑÑÑ Ð·Ð°Ð±Ñли пÑо ЧÑви! ÐÑнеÑÑ ÐµÐ³Ð¾ к команде Хан коÑвенно дал ÐµÐ¼Ñ Ð´Ð¾ÑÑÑп в маÑиннÑй зал! Ðо, еÑли помниÑе, он не Ñ
оÑел ÑÑого делаÑÑ. Ðн не Ñ
оÑÐµÑ ÑÑого поÑле Ñого, как ЧÑви недавно ÑемонÑиÑовал гипеÑдвигаÑелÑ. Хан добавлÑÐµÑ Ð¿Ñавило запÑеÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð§Ñви:
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви <strong>[DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)</strong>
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
ââÐби-Ðан
ââÐÑк
ââR2D2
ââC3PO
</pre>
<p>ÐÑо пÑÐ¸Ð¼ÐµÑ Ñого, как Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑпÑавлÑÑÑ Ð¿Ð¾Ð»Ð¸Ñикой доÑÑÑпа в подÑобной манеÑе. ÐÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи пеÑемеÑаÑÑ Ð§Ñви в дÑÑгÑÑ Ð³ÑÑппÑ, Ð¼Ñ Ð¿ÑоÑÑо запÑеÑаем ÐµÐ¼Ñ Ð½Ð° более низком ÑÑовне.
<p>ÐÑÑгой пÑÐ¸Ð¼ÐµÑ Ð¿Ð¾Ð´Ñобного конÑÑÐ¾Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ, когда на коÑÐ°Ð±Ð»Ñ Ð½Ð°Ð¿Ð°Ð»Ð° ÐмпеÑиÑ. Хан должен позволиÑÑ ÑÐµÐ»Ð¾Ð²ÐµÐºÑ ÐÑÐºÑ Ð¸ÑполÑзоваÑÑ Ð¾ÑÑжие и позволиÑÑ ÑобоÑÑ R2D2 воÑÑÑановиÑÑ Ð³Ð¸Ð¿ÐµÑдвигаÑÐµÐ»Ñ Ð² маÑинном зале. Ðн Ð¼Ð¾Ð¶ÐµÑ ÑделаÑÑ ÑÑо ÑаÑÑиÑив иÑ
полномоÑиÑ, коÑоÑÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð¸Ð¼ обÑим ÑÑаÑÑÑом гÑÑÐ¿Ð¿Ñ âÐаÑÑажиÑâ:
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви [DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
ââÐби-Ðан
ââÐÑк <strong>[ALLOW: Guns] (ÑазÑеÑиÑÑ: оÑÑжие)</strong>
ââR2D2 <strong>[ALLOW: Engines] (ÑазÑеÑиÑÑ: маÑиннÑй зал)</strong>
ââC3PO
</pre>
<h2>ÐногоÑÑовневÑе гÑÑппÑ</h2>
<p>ÐÑÑÐ¿Ð¿Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑаÑÑиÑÐµÐ½Ñ Ð½Ð° лÑбой ÑÑÐ¾Ð²ÐµÐ½Ñ Ð² ARO-деÑеве. ÐапÑимеÑ, Ð¼Ñ Ð¼Ð¾Ð³Ð»Ð¸ Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð³ÑÑÐ¿Ð¿Ñ âÐжедаиâ к âÐаÑÑажиÑамâ. ÐолÑÑинÑÑво паÑÑажиÑов бÑло Ð±Ñ ÐºÐ°ÑегоÑизиÑовано пÑи âÐаÑÑажиÑаÑ
â, но ÐÑк и Ðби-Ðан бÑдÑÑ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ñ Ð² âÐжедаиâ и поÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе пÑивелегии (напÑимеÑ, доÑÑÑп в кабинÑ):
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви [DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
ââÐжедаи <strong>[ALLOW: Cockpit] (ÑазÑеÑиÑÑ: кабинÑ)</strong>
â ââ<strong>Ðби-Ðан</strong>
â ââ<strong>ÐÑк</strong> [ALLOW: Guns] (ÑазÑеÑиÑÑ: оÑÑжие)
ââR2D2 [ALLOW: Engines] (ÑазÑеÑиÑÑ: маÑинное оÑделение)
ââC3PO
</pre>
<h2>Ðак phpGACL опÑеделÑÐµÑ ÑазÑеÑениÑ?</h2>
<p>Ðогда компÑÑÑÐµÑ ÑÑдна (Ñ Ð·Ð°Ð¿ÑÑеннÑм phpGACL конеÑно же) пÑовеÑÑÐµÑ Ð´Ð¾ÑÑÑп, единÑÑвеннÑй вопÑоÑ, коÑоÑÑй он Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ñебе - âÐ¸Ð¼ÐµÐµÑ Ð»Ð¸ Ñеловек X доÑÑÑп к меÑÑÑ Y?â Ðа ÑзÑке phpGACL ÑÑо бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ñак: âÐÐ¾Ð¶ÐµÑ Ð»Ð¸ ARO X имеÑÑ Ð´Ð¾ÑÑÑп к ACO Y?â
<p>phpGACL опÑеделÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ опÑеделеннÑй Ñеловек доÑÑÑп к опÑÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¼ÐµÑÑÑ ÑледÑÑ Ð¾Ñ Ð²ÐµÑÑÐ¸Ð½Ñ Ð´ÐµÑева к ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑеловекÑ, оÑмеÑÐ°Ñ Ð¿Ð¾ пÑÑи ÑвнÑй конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа Ð´Ð»Ñ Ñого меÑÑа. Ðогда Ð¼Ñ Ð´Ð¾ÑÑигаем нÑжного Ñеловека, полÑÑаем конкÑеÑнÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð´Ð¾ÑÑÑпа коÑоÑÑй и ÑвлÑеÑÑÑ ÐºÐ¾Ð½ÐµÑнÑм ÑезÑлÑÑаÑом Ð´Ð»Ñ Ð²Ð¾Ð·Ð²ÑаÑениÑ. Таким обÑазом Ð¼Ñ Ð¾ÑÑÑеÑÑвлÑем конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа Ð´Ð»Ñ Ð³ÑÑпп, лÑдей, но имеем возможноÑÑÑ ÑаÑÑиÑÑÑÑ ÑÑи ÑÑовни еÑли нÑжно.
<p><strong>ÐÑÐ¸Ð¼ÐµÑ 1.</strong> ÐÑ ÑпÑаÑиваем: ÐÐ¼ÐµÐµÑ Ð»Ð¸ ÐÑк доÑÑÑп к паÑÑажиÑÑÐºÐ¾Ð¼Ñ Ð·Ð°Ð»Ñ?â
<ul>
<li>ÑÑÑанавливаем пÑавило по ÑмолÑÐ°Ð½Ð¸Ñ DENY (запÑеÑиÑÑ);
<li>двигаемÑÑ Ð¿Ð¾ деÑÐµÐ²Ñ Ðº ÐÑкÑ: <em>ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑÐ¸Ñ -> ÐаÑÑажиÑÑ -> Ðжедаи -> ÐÑк</em>;
<li>наÑинаем Ñ Ð²ÐµÑÑÐ¸Ð½Ñ Ð´ÐµÑева и двигаемÑÑ Ðº ÐÑкÑ: âÑзелâ âÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑâ не говоÑÐ¸Ñ Ð½Ð¸ ниÑего не об одном из ACO. ÐÑÑавлÑем DENY (запÑеÑ);
<li>идем далÑÑе, âÐаÑÑажиÑÑâ - Ñвно говоÑиÑ, ÑÑо âÐаÑÑажиÑÑâ имеÑÑ Ð´Ð¾ÑÑÑп к âпаÑÑажиÑÑÐºÐ¾Ð¼Ñ Ð·Ð°Ð»Ñâ. ÐенÑем внÑÑÑенний ÑезÑлÑÑÐ°Ñ Ð½Ð° âALLOWâ (ÑазÑеÑиÑÑ);
<li>двигаемÑÑ Ð² Ñзел âÐжедаиâ - он не ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ âпаÑÑажиÑÑкого залаâ вообÑе â оÑÑавлÑем пÑедÑдÑÑий ÑезÑлÑÑаÑ;
<li>двигаемÑÑ Ð² Ñзел âÐÑкâ - Ñнова Ð½ÐµÑ Ð½Ð¸Ñего о âпаÑÑажиÑÑком залеâ - оÑÑавлÑем пÑедÑдÑÑий ÑезÑлÑÑаÑ;
<li>идÑи далÑÑе некÑда â оÑÑанавливаемÑÑ. ÐозвÑаÑаемÑй ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ âALLOWâ (ÑазÑеÑиÑÑ).
</ul>
<p><strong>ÐÑÐ¸Ð¼ÐµÑ 2.</strong> ÐÑ ÑпÑаÑиваем: âÐÐ¼ÐµÐµÑ Ð»Ð¸ ЧÑви доÑÑÑп в маÑиннÑй зал?â
<ul>
<li>ÑÑÑанавливаем пÑавило по ÑмолÑÐ°Ð½Ð¸Ñ DENY (запÑеÑиÑÑ);
<li>двигаемÑÑ Ð¿Ð¾ деÑÐµÐ²Ñ Ðº ЧÑви: <em>ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑÐ¸Ñ -> Ðоманда -> ЧÑви</em>;
<li>наÑинаем Ñ Ð²ÐµÑÑÐ¸Ð½Ñ Ð´ÐµÑева и двигаемÑÑ Ðº ЧÑви: âÑзелâ âÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑâ не говоÑÐ¸Ñ Ð½Ð¸ ниÑего не об одном из ACO. ÐÑÑавлÑем DENY (запÑеÑ);
<li>идем далÑÑе в Ñзел âÐомандаâ - Ñвно говоÑÐ¸Ñ Ð½Ð°Ð¼ - âÐомандаâ Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп к âмаÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð·Ð°Ð»Ñâ - менÑем внÑÑÑенний ÑезÑлÑÑÐ°Ñ Ð½Ð° âALLOWâ (ÑазÑеÑиÑÑ);
<li>двигаемÑÑ Ð² Ñзел âЧÑвиâ - еÑÑÑ Ñвное запÑеÑение, коÑоÑое говоÑÐ¸Ñ Ð½Ð°Ð¼, ÑÑо доÑÑÑп в âмаÑиннÑй залâ закÑÑÑ. ÐенÑем внÑÑÑенний ÑезÑлÑÑÐ°Ñ Ð½Ð° âDENYâ (запÑеÑиÑÑ);
<li>идÑи далÑÑе некÑда, возвÑаÑаем ÑезÑлÑÑÐ°Ñ âDENYâ (запÑеÑиÑÑ).
</ul>
<p>ÐÑ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, ÑÑо еÑли гÑÑппа Ñвно не опÑеделÑÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
пÑав, Ñо она наÑледÑÐµÑ Ð¸Ñ
Ð¾Ñ ÑодиÑелÑÑкой гÑÑÐ¿Ð¿Ñ (пÑедÑдÑÑей).ÐÑли Ñзел коÑÐ½Ñ (âÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑâ) не опÑеделÑÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
ÑазÑеÑений, Ñо он наÑледÑÐµÑ ÑазÑеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. Рданном ÑлÑÑае âDENY ALLâ (запÑеÑиÑÑ Ð²Ñе).
<p>ÐÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð½ÐµÑколÑко инÑеÑеÑнÑÑ
моменÑов об ARO-деÑеве:
<ul>
<li>ARO-деÑево вÑегда показÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»Ð½Ñй ÑпиÑок AROs. ÐоÑÑÐ¾Ð¼Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÑпÑаÑиваÑÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ доÑÑÑп к кабине Ðжабба, поÑколÑÐºÑ Ð¾Ð½ не бÑл опÑеделен в ÑиÑÑеме. Ðднако, phpGACL не пÑовеÑÑÐµÑ ÑÑÑеÑÑвÑÐµÑ Ð»Ð¸ ARO или ACO пеÑед вÑполнением пÑовеÑки. Так, еÑли Ð±Ñ Ñакой вопÑÐ¾Ñ Ð´ÐµÐ¹ÑÑвиÑелÑно имел Ð±Ñ Ð¼ÐµÑÑо, оÑÐ²ÐµÑ ÑÑл Ð±Ñ âDENYâ (запÑеÑиÑÑ);
<li>ARO-деÑево Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ показÑваÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ACO еÑли они ÑпеÑиалÑно не опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² ARO-деÑеве. ÐапÑимеÑ, Хан опÑеделил ACO âÐ²Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñаâ. ÐÑбой вопÑоÑ, подобнÑй ÑÑомÑ: âÐ¸Ð¼ÐµÐµÑ Ð»Ð¸ ÐÑк доÑÑÑп в ваннÑÑ ÐºÐ¾Ð¼Ð½Ð°ÑÑ?â, даÑÑ Ð¾ÑÑиÑаÑелÑнÑй оÑÐ²ÐµÑ âDENYâ (запÑеÑено), поÑколÑÐºÑ Ð½Ð¸Ð³Ð´Ðµ в ARO-деÑеве âÐ²Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñаâ не ÑпоминаеÑÑÑ. ÐмейÑе ввидÑ, пÑи иÑÑледовании ARO-деÑева, некоÑоÑÑе ACO могÑÑ Ð±ÑÑÑ Ð½Ðµ видимÑми.
</ul>
<p><span class="P1">ÐбÑаÑиÑе внимание:</span> пÑи вÑÑÑнении ÑеÑез phpGACL вопÑоÑов о доÑÑÑпе невозможно иÑполÑзоваÑÑ ÐÑÑÐ¿Ð¿Ñ ÐºÐ°Ðº AROs (даже пÑи Ñом, ÑÑо ÑÑо Ð¼Ð¾Ð¶ÐµÑ ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¿ÑавилÑнÑм). ÐапÑимеÑ, невозможно оÑвеÑиÑÑ Ð½Ð° вопÑÐ¾Ñ âÐакие паÑÑажиÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп к оÑÑжиÑ?â ÐолнÑй оÑÐ²ÐµÑ Ð½Ðµ Boolean (не ÐÑлевÑй) â DENY / ALLOW (оÑÑиÑÐ°Ñ / позволÑÑ), а более ÑложнÑй âÐÑк и Ðби-Ðан могÑÑ, а R2D2 и С3PO неÑâ. PhpGACL не пÑедназнаÑен Ð´Ð»Ñ Ñакого вида оÑвеÑов.
<h2>Ðобавление гÑÑпп</h2>
<p>Хан видиÑ, ÑÑо ACL наÑÐ¸Ð½Ð°ÐµÑ Ð²ÑглÑдеÑÑ Ð¾ÑÐµÐ½Ñ Ñложно. ÐÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾ иÑклÑÑений. Ðозможно, ÑледÑÐµÑ ÑделаÑÑ Ð¿Ð¾Ð´ÑÑгомÑ, напÑимеÑ, ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ Ð³ÑÑÐ¿Ð¿Ñ âÐнженеÑÑâ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð»Ñдей, коÑоÑÑм позволен доÑÑÑп в маÑинное оÑделение и оÑÑжиÑ. ÐÑа гÑÑппа должна ÑодеÑжаÑÑ Ð¥Ð°Ð½Ð° и R2D2, Ñак как они могÑÑ Ð²Ð¾ÑÑÑановиÑÑ Ð´Ð²Ð¸Ð³Ð°ÑÐµÐ»Ñ Ð¸ оÑÑжие. ÐÑо позволÑÐµÑ Ð¥Ð°Ð½Ñ ÑдалиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе из âгÑÑзнÑÑ
â пÑавил-иÑклÑÑений, ÑÑо Ð´Ð°ÐµÑ Ð¾Ð¿ÑеделеннÑÑ Ð²ÑÐ³Ð¾Ð´Ñ Ð² Ñом, ÑÑо Ð´Ð°ÐµÑ ÑÑное опиÑание:
<pre>
Ðо ÑмолÑаниÑ: [DENY: ALL] (запÑеÑиÑÑ: вÑе)
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑилеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви [DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
â ââÐжедаи [ALLOW: Cockpit] (ÑазÑеÑиÑÑ: кабинÑ)
â â ââÐби-Ðан
â â ââÐÑк [ALLOW: Guns] (ÑазÑеÑиÑÑ: оÑÑжие)
â ââR2D2
â ââC3PO
ââÐнженеÑÑ <strong>[ALLOW: Engines, Guns] (ÑазÑеÑиÑÑ: маÑ.зал, оÑÑжие)</strong>
ââ<strong>Хан</strong>
ââ<strong>R2D2</strong>
</pre>
<p>ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑоÑиÑаÑÑ ÑÑо ÑледÑÑÑим обÑазом: по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð¸ÐºÑо никÑда не Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво заÑ
одиÑÑ, команда Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп вÑÑÐ´Ñ (кÑоме ЧÑви, он не Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑпа в маÑинное оÑделение). ÐаÑÑажиÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп ÑолÑко к паÑÑажиÑÑÐºÐ¾Ð¼Ñ Ð·Ð°Ð»Ñ, кÑоме Ðжедаев, они имеÑÑ Ð´Ð¾ÑÑÑп к кабине. ÐÑк Ñакже Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп к оÑÑжиÑ. ÐнженеÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп к оÑÑÐ¶Ð¸Ñ Ð¸ маÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð¾ÑделениÑ.
<p>Ðаиболее важно, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ видеÑÑ, ÑÑо Хан и R2D2 наÑ
одÑÑÑÑ ÑепеÑÑ Ð² двÑÑ
меÑÑаÑ
ACL. Ðм Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи бÑÑÑ ÑникалÑнÑми. ÐÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ð¾Ð»Ð¸Ñики более ÑÑнÑми Ð´Ð»Ñ ÑиÑаÑелÑ: âÐÑ
, Хан и R2D2 имеÑÑ Ð´Ð¾ÑÑÑп к оÑÑÐ¶Ð¸Ñ Ð¸ маÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð·Ð°Ð»Ñ, поÑÐ¾Ð¼Ñ ÑÑо они инженеÑÑâ.
<h2>Ðобавление лÑдей</h2>
<p>Хан Ð¸Ð´ÐµÑ Ð² ÐоÑод облаков, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð²Ð¸Ð´Ð°ÑÑ Ðандо и ÑделаÑÑ Ð½ÐµÐºÐ¾ÑоÑÑй ÑемонÑ. Ðандо â пÑедÑдÑÑий Ñ
озÑин Сокола ÑÑÑÑÑелеÑиÑ, Хан пÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ Ð¾ÑнеÑÑи его к гÑÑппе âÐомандаâ. Ðандо Ñак же пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ ÑÑлÑги Ñвоего главного инженеÑа ХонÑÑка, Ð´Ð»Ñ Ð¿Ð¾Ð¼Ð¾Ñи в воÑÑÑановлении ÑÑдна, пока оно наÑ
одиÑÑÑ Ð² доке.
<pre>
Ðо ÑмолÑаниÑ: [DENY: ALL] (запÑеÑиÑÑ: вÑе)
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââЧÑви [DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)
â ââ<strong>Ðандо</strong>
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
â ââÐжедаи [ALLOW: Cockpit] (ÑазÑеÑиÑÑ: кабина)
â â ââÐби-Ðан
â â ââÐÑк [ALLOW: Guns] (ÑазÑеÑиÑÑ: оÑÑжие)
â ââR2D2
â ââC3PO
ââÐнженеÑÑ [ALLOW: Engines, Guns] (ÑазÑеÑиÑÑ: маÑ.зал, оÑÑжие)
ââХан
ââR2D2
ââ<strong>ХанÑÑк</strong>
</pre>
<p>ÐÑо деÑево показÑÐ²Ð°ÐµÑ ÐºÐ°Ðº легко можно пÑедоÑÑавлÑÑÑ Ð´Ð¾ÑÑÑп новÑм лÑдÑм. ÐÑли Ð±Ñ Ð¼Ñ Ð¸ÑполÑзовали пеÑвонаÑалÑнÑÑ Ð¼Ð°ÑÑиÑнÑÑ ÑÑ
емÑ, Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±Ñли Ð±Ñ ÑÑÑановиÑÑ ÑазÑеÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ меÑÑа на коÑабле и Ð´Ð»Ñ Ð¥Ð°Ð½Ñка и Ð´Ð»Ñ Ðандо. ÐмеÑÑо ÑÑого, Ð¼Ñ Ð¿ÑоÑÑо добавлÑем иÑ
к нÑжнÑм гÑÑппам, в ÑезÑлÑÑаÑе Ñего, иÑ
доÑÑÑп неÑвно и легко опÑеделен.
<h2>УÑÑÑанение конÑликÑов</h2>
<p>ЧÑо ÑлÑÑиÑÑÑ, еÑли Ð¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ ЧÑви к ÑпиÑÐºÑ Ð¸Ð½Ð¶ÐµÐ½ÐµÑов?
<pre>
Ðо ÑмолÑаниÑ: [DENY: ALL] (запÑеÑиÑÑ: вÑе)
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑ
ââÐоманда [ALLOW: ALL] (ÑазÑеÑиÑÑ: вÑе)
â ââХан
â ââ<strong>ЧÑви</strong> [DENY: Engines] (запÑеÑиÑÑ: маÑиннÑй зал)
â ââÐандо
ââÐаÑÑажиÑÑ [ALLOW: Lounge] (ÑазÑеÑиÑÑ: паÑÑажиÑÑкий зал)
â ââÐжедаи [ALLOW: Cockpit] (ÑазÑеÑиÑÑ: кабина)
â â ââÐби-Ðан
â â ââÐÑк [ALLOW: Guns] (ÑазÑеÑиÑÑ: оÑÑжие)
â ââR2D2
â ââC3PO
ââÐнженеÑÑ [ALLOW: Engines, Guns] (ÑазÑеÑиÑÑ: маÑ.зал, оÑÑжие)
ââХан
ââR2D2
ââХанÑк
ââ<strong>ЧÑви</strong>
</pre>
<p>ÐÑо Ð´ÐµÐ»Ð°ÐµÑ Ð´Ð¾ÑÑÑп ЧÑви к маÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð·Ð°Ð»Ñ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑнÑм, поÑÐ¾Ð¼Ñ ÑÑо ÑепеÑÑ ÐµÑÑÑ Ð´Ð²Ðµ доÑожки Ð¾Ñ ÐºÐ¾ÑÐ½Ñ Ð´ÐµÑева до ЧÑви. ÐÑли компÑÑÑÐµÑ Ð¿Ð¾ÑледÑÐµÑ Ð¿Ð¾ одной доÑожке, Ñо ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ âDENYâ (запÑеÑаÑ), а еÑли он поÑледÑÐµÑ Ð·Ð° дÑÑгой доÑожкой, Ñо ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ âALLOWâ (ÑазÑеÑаÑ). Так вÑе же, ÐµÐ¼Ñ Ð·Ð°Ð¿ÑеÑен или ÑазÑеÑен доÑÑÑп?
<p>PhpGACL пÑедÑпÑÐµÐ´Ð¸Ñ Ð²Ð°Ñ, еÑли Ð²Ñ ÑгÑÑппиÑÑеÑе ARO Ñаким обÑазом, ÑÑо доÑÑÑп ARO к пÑоизволÑÐ½Ð¾Ð¼Ñ ACO бÑÐ´ÐµÑ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑнÑм. Ðо <u>ÑеÑаÑÑ</u> конÑÐ»Ð¸ÐºÑ Ð¿ÑидеÑÑÑ <u>вам</u>.
<p>ÐÑли пÑи Ñакой неоднознаÑноÑÑи ÑпÑоÑиÑÑ ÐºÐ¾Ð¼Ð¿ÑÑÑÐµÑ âÐÐ¼ÐµÐµÑ Ð»Ð¸ ЧÑви доÑÑÑп к маÑÐ¸Ð½Ð½Ð¾Ð¼Ñ Ð·Ð°Ð»Ñ?â, Ñо оÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ âALLOWâ (ÑазÑеÑаÑ), поÑÐ¾Ð¼Ñ ÑÑо ÑиÑÑема веÑÐ½ÐµÑ Ð²Ð°Ð¼ <u>поÑледний измененнÑй паÑамеÑÑ</u> (ÑÑо полиÑика phpGACL). Ð ÑÑом ÑлÑÑае ÑезÑлÑÑÐ°Ñ âALLOWâ, поÑÐ¾Ð¼Ñ ÑÑо ÑазÑеÑение âALLOW: Engines, Gunsâ (ÑазÑеÑиÑÑ: маÑиннÑй зал, оÑÑжие), назнаÑенное на гÑÑÐ¿Ð¿Ñ âÐнженеÑÑâ, ÑвлÑеÑÑÑ Ð±Ð¾Ð»ÐµÐµ Ñвежим, по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ âDENY: Enginesâ (запÑеÑиÑÑ: маÑиннÑй зал) гÑÑÐ¿Ð¿Ñ âЧÑвиâ.
<p>Ð ÑлÑÑае, еÑли ACL ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑноÑÑи, ÑакÑÑ ACL назÑваÑÑ <strong>непоÑледоваÑелÑной</strong>. ÐепоÑледоваÑелÑÐ½Ð°Ñ ACL Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¾Ð¿Ð°Ñна, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе неволÑно обеÑпеÑиÑÑ Ð´Ð¾ÑÑÑп неÑооÑвеÑÑÑвÑÑÑим лÑдÑм. Ðогда phpGACL пÑедÑпÑÐµÐ¶Ð´Ð°ÐµÑ Ð²Ð°Ñ Ð¾ Ñом, ÑÑо ACL непоÑледоваÑелÑна, ÑазÑеÑиÑе конÑÐ»Ð¸ÐºÑ ÐºÐ°Ðº можно более опеÑаÑивно, ÑÑÐ¾Ð±Ñ ÑÑÐ°Ð·Ñ Ð²Ð¾ÑÑÑановиÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ.
<p>ЧÑÐ¾Ð±Ñ ÑеÑиÑÑ ÐºÐ¾Ð½ÑликÑ, Ð²Ñ Ð¼Ð¾Ð³Ð»Ð¸ ÑделаÑÑ ÑледÑÑÑее:
<ul>
<li>ÑдалиÑÑ Ð´ÐµÑекÑÐ¸Ð²Ñ âDENY: Enginesâ Ñ Ð³ÑÑÐ¿Ð¿Ñ âЧÑвиâ в гÑÑппе âÐомандаâ;
<li>добавиÑÑ Ð´ÐµÑекÑÐ¸Ð²Ñ âDENY: Enginesâ Ñ Ð³ÑÑÐ¿Ð¿Ñ âЧÑвиâ в гÑÑппе âÐнженеÑÑâ;
<li>ÑдалиÑÑ Ð§Ñви из гÑÑÐ¿Ð¿Ñ âÐнженеÑÑâ, Ñак как Хан вÑеÑавно не ÑÑиÑÐ°ÐµÑ ÐµÐ³Ð¾ доÑÑойнÑм инженеÑом.
</ul>
<p>Ха вÑбÑал поÑледний ваÑианÑ, он Ñдалил ЧÑви из гÑÑÐ¿Ð¿Ñ âÐнженеÑÑâ.
<h2>ÐбознаÑение обÑекÑов доÑÑÑпа</h2>
<p>phpGACL ÑникалÑно иденÑиÑиÑиÑÑÐµÑ ÐºÐ°Ð¶Ð´Ñй обÑÐµÐºÑ Ð´Ð¾ÑÑÑпа (ARO, AXO, ACO) комбинаÑией иÑ
двÑÑ
клÑÑевÑÑ
Ñлов и иÑ
Ñипа обÑекÑа доÑÑÑпа.
<p>ÐоÑÑеж â(Тип обÑекÑа доÑÑÑпа, Раздел, ÐнаÑение)â ÑникалÑно иденÑиÑиÑиÑÑÐµÑ Ð»Ñбой обÑÐµÐºÑ Ð´Ð¾ÑÑÑпа.
<p>ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÐºÐ¾ÑÑежа â Ñип обÑекÑа доÑÑÑпа (ARO, AXO, ACO).
<p>ÐÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÐºÐ¾ÑÑежа, названнÑй <strong>Разделом</strong>, ÑвлÑеÑÑÑ, заданной полÑзоваÑелем, ÑÑÑокой, коÑоÑÐ°Ñ Ð½Ð°Ð·ÑÐ²Ð°ÐµÑ Ð¾Ð±ÑÑÑ ÐºÐ°ÑегоÑÐ¸Ñ Ð¾Ð±ÑекÑа доÑÑÑпа. ÐбÑекÑÑ Ñ Ð½ÐµÑколÑкими доÑÑÑпами могÑÑ Ð¸Ð¼ÐµÑÑ Ñоже Ñамое название Раздела. Ðазвание Ñаздела должно бÑÑÑ ÐºÐ¾ÑоÑкое, но опиÑаÑелÑное (наглÑдное). ÐÑо иÑполÑзÑеÑÑÑ Ð² полÑзоваÑелÑÑком инÑеÑÑейÑе в ÑпиÑкаÑ
вÑбоÑа, поÑÑÐ¾Ð¼Ñ Ð»Ð¾Ð³Ð¸Ñно не делаÑÑ Ð¸Ñ
ÑлиÑком длиннÑми.
<p>Ð Ð°Ð·Ð´ÐµÐ»Ñ ÑоÑ
ÑанÑÑÑÑÑ Ð² ÑÑейке namespace. Ð Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ðµ имеÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº гÑÑппам или ARO / AXO-деÑевÑÑм â они пÑоÑÑо меÑ
анизм, Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ Ð±Ð¾Ð»ÑÑее колиÑеÑÑво обÑекÑов доÑÑÑпа.
<p>ТÑеÑий ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÐºÐ¾ÑÑежа â опÑеделенное полÑзоваÑелем, название Ð´Ð»Ñ Ð¾Ð±ÑекÑа доÑÑÑпа, и назÑваеÑÑÑ <strong>ÐнаÑение</strong>. <u>ÐнаÑение не Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¿ÑобелÑ</u> (однако, Раздел â можеÑ).
<p><u>ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ð Ð°Ð·Ð´ÐµÐ»Ð¾Ð² и ÐнаÑение ÑегиÑÑÑозавиÑимÑ.</u>
<p><strong>ÐÑимеÑание:</strong> обÑÑно ÑпÑаÑиваÑÑ, поÑÐµÐ¼Ñ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии обÑекÑов доÑÑÑпа иÑполÑзÑÑÑÑÑ ÑÑÑоки а не ÑелÑе ÑиÑла, коÑоÑÑе, ÑкобÑ, кажÑÑÑÑ Ð±ÑÑÑÑее. ÐÑÐ²ÐµÑ â Ð´Ð»Ñ ÑÑноÑÑи. Ðа много более легко понÑÑÑ:
<p>acl_check('system', 'login', 'user', 'john_doe');
Ñем:
<p>acl_check(10, 21004, 15, 20304);
<p>Так как из конÑекÑÑа ÑаÑÑо оÑевидно к ÐºÐ°ÐºÐ¾Ð¼Ñ ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑа доÑÑÑпа Ð¼Ñ Ð¾Ð±ÑаÑаемÑÑ, инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ phpGACL (и ÑÑа докÑменÑаÑиÑ) опÑÑÐºÐ°ÐµÑ Ñип обÑекÑа доÑÑÑпа и иÑполÑзÑÐµÑ ÑоÑÐ¼Ð°Ñ âРаздел -> ÐнаÑениеâ Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° обÑекÑа доÑÑÑпа. Ðднако, пÑогÑаммнÑй инÑеÑÑÐµÐ¹Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑÑебÑÐµÑ âРазделâ обÑекÑа доÑÑÑпа и âÐнаÑениеâ, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² оÑделÑнÑÑ
аÑгÑменÑаÑ
ÑÑнкÑии (Ñип обÑекÑа доÑÑÑпа обÑÑно неÑвен в опиÑании аÑгÑменÑа).
<p><strong>ÐÑÐ¸Ð¼ÐµÑ ACO âРаздел -> ÐнаÑениеâ:</strong>
<ul>
<li>âFloors -> 1stâ (âÐÑажи -> 1-йâ);
<li>âFloors -> 2ndâ (âÐÑажи -> 2-йâ);
<li>âRooms -> Enginesâ (âÐомнаÑÑ -> маÑиннÑй_залâ).
</ul>
<p><strong>ÐÑÐ¸Ð¼ÐµÑ ARO âРаздел -> ÐнаÑениеâ:</strong>
<ul>
<li>âPeople -> John_Smithâ (âÐÑди -> Ðжон_СмиÑâ);
<li>âPeople -> Cathy_Jonesâ (âÐÑди -> ÐÑÑи_ÐжонÑâ);
<li>âHosts -> sandbox.something.comâ (âХоÑÑÑ -> sandbox.something.comâ).
</ul>
<p><strong>ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ API:</strong>
<ul>
<li>acl_check(aro_section, aro_value, aco_section, aco_value);
<li>acl_check('People', 'John_Smith', 'Floor', '2nd');
</ul>
<p><strong>ÐÑимеÑÑ Ð¿ÑавилÑного именованиÑ:</strong>
<ul>
<li>âACO - Frob > Flergâ, âARO â Frob -> Flergâ (Раздел и ÐнаÑение ÑвлÑÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми, но ÑÑо Ñ
оÑоÑо, поÑколÑÐºÑ namespaces ÑазнÑе Ð´Ð»Ñ ÑазнÑÑ
Ñипов обÑекÑов доÑÑÑпа);
<li>âACO â Frob -> Flergâ, âACO â Frob -> Queegleâ (Ñип обÑекÑа доÑÑÑпа и название Раздела одинаковÑе, ÑÑо Ñ
оÑоÑо, поÑколÑÐºÑ Ñ Ð½Ð¸Ñ
ÑазнÑе ÐнаÑениÑ);
<li>âAXO â Frob Hrung -> Flergâ (Ð Ð°Ð·Ð´ÐµÐ»Ñ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ Ð¿ÑобелÑ).
</ul>
<p><strong>ÐÑÐ¸Ð¼ÐµÑ Ð½ÐµÐ¿ÑавилÑного именованиÑ:</strong>
<ul>
<li>âACO â Frob -> Flergâ, âACO â Frob -> Flergâ (Ñип обÑекÑа доÑÑÑпа â Раздел -> ÐнаÑение Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑникалÑнÑми);
<li>âACO â Frob -> Flerg Habitâ (ÐнаÑение не Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¿Ñобелов).
</ul>
<h2>Ðобавление Ñазделов</h2>
<p>ÐÑежде Ñем добавиÑÑ Ð½Ð¾Ð²Ñй обÑÐµÐºÑ Ð´Ð¾ÑÑÑпа Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоздаÑÑ Ð Ð°Ð·Ð´ÐµÐ». ÐÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñаздела иÑполÑзÑйÑе ÑÑнкÑÐ¸Ñ add_object_section().
<table align="center" cellpadding="5"><tr><td bgcolor="lightgrey">
<pre>
add_object_section(
string NAME, ÐоÑоÑкое опиÑание Ñого, Ð´Ð»Ñ Ñего ÑÑÐ¾Ñ Ð Ð°Ð·Ð´ÐµÐ»
иÑполÑзÑеÑÑÑ (пÑимеÑ, 'Levels in building'
(âÐÑажи в зданииâ)).
string VALUE, Ðазвание Раздела (пÑимеÑ, 'Floors' (âÐÑажиâ)).
int ORDER, ЦенноÑÑÑ Ñаздела, влиÑÐµÑ Ð½Ð° Ñо, каким по ÑÑеÑÑ Ð² ÑпиÑке
в инÑеÑÑейÑе полÑзоваÑÐµÐ»Ñ Ð¿Ð¾ÑвиÑÑÑ ÑÑÐ¾Ñ Ð Ð°Ð·Ð´ÐµÐ».
bool HIDDEN ÐоказÑваеÑ, должен ли ÑÑÐ¾Ñ Ñаздел бÑÑÑ Ð²Ð¸Ð´ÐµÐ½ в
полÑзоваÑелÑÑком инÑеÑÑейÑе.
string GROUP_TYPE); Тип обÑекÑа доÑÑÑпа (ACO, ARO, AXO).
</pre>
</td></tr></table>
<p>Хан Ñоздал 3 Ñаздела Ð´Ð»Ñ AROs âÐÑдиâ, âЧÑжиеâ и âÐндÑоидÑâ ÐавайÑе поÑмоÑÑим, как бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ AROs Ñ Ð¸Ñ
полнÑми названиÑми:
<pre>
ÐаÑÑажиÑÑ Ð¡Ð¾ÐºÐ¾Ð»Ð° ÑÑÑÑÑелеÑиÑ
ââÐоманда [ALLOW: ALL]
â ââ<strong>"ÐÑди > Хан"</strong>
â ââ<strong>"ЧÑжие > ЧÑви"</strong> [DENY: Engines]
â ââ<strong>"ÐÑди > Ðандо"</strong>
ââÐаÑÑажиÑÑ [ALLOW: Lounge]
â ââÐжедаи [ALLOW: Cockpit]
â â ââ<strong>"ÐÑди > Ðби-Ðан"</strong>
â â ââ<strong>"ÐÑди > ÐÑк"</strong> [ALLOW: Guns]
â ââ<strong>"ÐндÑÐ¾Ð¸Ð´Ñ > R2D2"</strong>
â ââ<strong>"ÐндÑÐ¾Ð¸Ð´Ñ > C3PO"</strong>
ââÐнженеÑÑ [ALLOW: Engines, Guns]
ââ<strong>"ÐÑди > Хан"</strong>
ââ<strong>"ÐндÑÐ¾Ð¸Ð´Ñ > R2D2"</strong>
ââ<strong>"ЧÑжие > ХанÑÑк"</strong>
</pre>
<p>Ð Ð°Ð·Ð´ÐµÐ»Ñ â ÑолÑко ÑпоÑоб каÑегоÑизиÑоваÑÑ Ð¾Ð±ÑекÑÑ Ð´Ð¾ÑÑÑпа, ÑделаÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий инÑеÑÑÐµÐ¹Ñ Ð±Ð¾Ð»ÐµÐµ пÑигоднÑм к иÑполÑзованиÑ, а Ñак же ÑделаÑÑ ÑÑнкÑÐ¸Ñ acl_check() более ÑиÑаемой. Ðни не заÑÑагиваÑÑ Ð¿ÑÑÑ phpGACL Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñав обÑекÑа доÑÑÑпа. Также, ÑÐ°Ð·Ð´ÐµÐ»Ñ Ð½Ðµ могÑÑ Ð±ÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми, Ñо еÑÑÑ Ð²Ñ Ð½Ðµ можеÑе ÑоздаÑÑ âÐÑжÑинâ внÑÑÑи âÐÑдейâ. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑдеÑе ÑоздаÑÑ Ñаздел âÐÑди мÑжÑкого полаâ или подобнÑй.
<h2>ÐножеÑÑво Ñелей</h2>
<p>Ðозможно, Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ phpGACL ÑÑÐ°Ð·Ñ Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
Ñелей, напÑимеÑ, огÑаниÑиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий доÑÑÑп к ÑÑÑаниÑам, а Ñак же ÑдаленнÑй доÑÑÑп к ÑÑÑаниÑам ваÑего ÑеÑвеÑа. ÐÑи две задаÑи не ÑвÑзанÑ.
<p>PhpGACL пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ ÑеализоваÑÑ ÑÑо ÑÑÐµÐ¼Ñ ÑазлиÑнÑми пÑÑÑми:
<ul>
<li>Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑиÑ
даннÑÑ
;
<li>Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑже ÑамÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
но Ñ Ð´ÑÑгими именами ÑÐ°Ð±Ð»Ð¸Ñ (вÑеже, ÑÑа возможноÑÑÑ Ð¿Ð¾ÐºÐ° не поддеÑживаеÑÑÑ);
<li>Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñ
ÑаниÑÑ Ð¾Ð±ÑекÑÑ Ð´Ð¾ÑÑÑпа в ÑеÑ
же ÑамÑÑ
ÑаблиÑаÑ
, и оÑÐµÐ½Ñ ÑÑаÑелÑно ÑпÑавлÑÑÑ Ð¸Ð¼Ð¸, Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ не вÑÑÑпали в пÑоÑивоÑеÑиÑ.
</ul>
<p>ЧÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ð¿ÐµÑвÑй или вÑоÑой ÑпоÑоб (когда он бÑÐ´ÐµÑ Ð´Ð¾ÑÑÑпен) иÑполÑзÑйÑе маÑÑив $gacl_options, когда ÑоздаеÑе новÑй клаÑÑ phpGACL. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ опÑеделиÑÑ Ð±Ð°Ð·Ñ Ð¸ пÑеÑÐ¸ÐºÑ Ð´Ð»Ñ ÑаблиÑ:
<table align="center" cellpadding="5"><tr><td bgcolor="lightgrey">
<pre>
$gacl_options = array(
'db_table_prefix' => 'gacl_',
'db_type' => 'mysql',
'db_host' => 'host1',
'db_user' => 'user',
'db_password' => 'passwd',
'db_name' => 'gacl');
$gacl_host1 = new gacl($gacl_options);
</pre>
</td></tr></table>
<p>ÐÑдÑÑе оÑÐµÐ½Ñ Ð¾ÑÑоÑожнÑ, еÑли Ð²Ñ Ð²ÑбеÑиÑе ÑÑеÑий ваÑианÑ, поÑколÑÐºÑ phpGACL ниÑего не Ð·Ð½Ð°ÐµÑ Ð¾Ð± оÑноÑениÑÑ
Ð¼ÐµÐ¶Ð´Ñ Ð²Ð°Ñими задаÑами, а, ÑледоваÑелÑно, не ÑÐ¼Ð¾Ð¶ÐµÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ ÑазлиÑнÑе беÑÑмÑÑленнÑе диÑекÑÐ¸Ð²Ñ Ð¿Ð¾Ð»Ð¸Ñики доÑÑÑпа.
<p>ÐапÑимеÑ, Хан Ð¼Ð¾Ð¶ÐµÑ ÑеÑиÑÑ Ð·Ð°Ð¿ÑеÑиÑÑ Ð´Ð¾ÑÑÑп коÑаблÑм, коÑоÑÑе вÑÑÑпаÑÑ Ð² конÑÐ°ÐºÑ Ñ ÐµÐ³Ð¾ компÑÑÑеÑом, к каким-либо комнаÑам на коÑабле. ÐÐ»Ñ ÑÑого он Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ âÐоÑÐ°Ð±Ð»Ñ ÐÑкаâ как внеÑний коÑÐ°Ð±Ð»Ñ ARO в ÑÑом же Ñамом ARO-деÑеве. Ð ÑезÑлÑÑаÑе Ñего, ÑÑÐ°Ð½ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм ÑоздаÑÑ APD (пÑавило авÑомаÑиÑеÑкой обÑабоÑки): âÐоÑабли -> ÐоÑÐ°Ð±Ð»Ñ ÐÑкаâ и назнаÑиÑÑ ÐµÐ¼Ñ Ð¿Ñава âALLOW (ÑазÑеÑиÑÑ): âÐомнаÑÑ -> паÑÑажиÑÑкий залâ. СоглаÑиÑеÑÑ, ÑÑо полноÑÑÑÑ Ð±ÐµÑÑмÑÑленно! ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð² ÑазÑеÑении ÑакиÑ
пÑоÑивоÑеÑий, давайÑе пÑавилÑное (инÑоÑмаÑивное) название Разделам, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ ÑеÑко давали понÑÑÑ, Ñем на Ñамом деле ÑвлÑеÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ð´Ð¾ÑÑÑпа и Ð´Ð»Ñ ÐºÐ°ÐºÐ¸Ñ
Ð·Ð°Ð´Ð°Ñ Ð¸ÑполÑзÑÑÑÑÑ. ÐÑо должно бÑÑÑ Ð¾Ñевидно Ð´Ð»Ñ Ð»Ñбого админиÑÑÑаÑоÑа, ÑÑо беÑÑмÑÑленно назнаÑаÑÑ ÑазÑеÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑаблÑм Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа в какÑÑ-либо комнаÑÑ.
<h2>ÐбÑекÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа (AXO)</h2>
<p>ÐбÑекÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа могÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÑÑеÑÑе измеÑение к ÑазÑеÑениÑм, коÑоÑÑе могÑÑ ÑоÑмиÑоваÑÑÑÑ Ð² phpGACL. ÐÑ Ñ Ð²Ð°Ð¼Ð¸ видели, как phpGACL позволÑÐµÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑоваÑÑ Ð¾Ð±ÑекÑÑ ARO и ACO (2 измеÑениÑ) Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ñики доÑÑÑпа. ÐÑо оÑÐµÐ½Ñ Ñ
оÑоÑо Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ
ÑазÑеÑений, напÑимеÑ:
<p>ÐÑк (ARO) пÑоÑÐ¸Ñ ÑазÑеÑение на доÑÑÑп к ÐÑÑÐ¶Ð¸Ñ (ACO).
<p>ÐÑли ÑÑо вÑе, Ñего Ð²Ñ Ñ
оÑиÑе, пÑекÑаÑно â AXO ÑвлÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм (Ñо еÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑÑÑÑÑвоваÑÑ).
<p>Ðо, поÑколÑÐºÑ Ð²Ñе ACOs ÑвлÑÑÑÑÑ ÑавнÑми, ÑÑо меÑÐ°ÐµÑ ÑпÑавлÑÑÑÑÑ Ñ Ð½Ð¸Ð¼Ð¸ еÑли иÑ
оÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾. ÐÑли ÑÑо Ñак, Ñо Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ измениÑÑ ÑпоÑоб, коÑоÑÑм Ð¼Ñ ÑмоÑÑим на обÑекÑÑ Ð´Ð¾ÑÑÑпа, Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ легкого ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ð¸.
<p>AXOs иденÑиÑÐ½Ñ AROs во многиÑ
оÑноÑениÑÑ
. ÐÑÑÑ Ð´ÐµÑево AXO (оÑделÑное Ð¾Ñ Ð´ÐµÑева ARO), Ñо Ñвоими ÑобÑÑвеннÑми ÐÑÑппами и AXOs. Ðогда Ð²Ñ Ð±ÑдеÑе имеÑÑ Ð´ÐµÐ»Ð¾ Ñ AXO, дÑмайÑе, ÑÑо AXO беÑÐµÑ Ð½Ð° ÑÐµÐ±Ñ ÑÑаÑÑÑ ÑÐ¾Ð»Ñ ACO (Ñо еÑÑÑ ÑвлÑеÑÑÑ âвеÑами, к коÑоÑÑм ÑÑебÑеÑÑÑ Ð´Ð¾ÑÑÑпâ), и изменÑÑÑ Ð¿ÑедÑÑавление ACOs Ñ âвеÑи, к коÑоÑÑм ÑÑебÑеÑÑÑ Ð´Ð¾ÑÑÑпâ на âдейÑÑвие, коÑоÑое ÑÑебÑеÑÑÑ ÑовеÑÑиÑÑâ.
<p><strong>ÐоÑмоÑÑим ÑолÑко на ARO и ACO:</strong>
<ul>
<li>ARO â веÑи, пÑоÑÑÑие доÑÑÑп;
<li>ACO â веÑи, к коÑоÑÑм нÑжен доÑÑÑп.
</ul>
<p><strong>ÐоÑмоÑÑим на ARO, ACO и AXO:</strong>
<ul>
<li>ARO â веÑи, коÑоÑÑе пÑоÑÑÑ Ð´Ð¾ÑÑÑп;
<li>ACO â дейÑÑвиÑ, коÑоÑÑе ÑÑебÑеÑÑÑ ÑовеÑÑиÑÑ
<li>AXO â веÑи, к коÑоÑÑм нÑжен доÑÑÑп.
</ul>
<p><strong>ÐÑимеÑ:</strong>
<p>ÐÐµÐ½ÐµÐ´Ð¶ÐµÑ ÑайÑа пÑÑаеÑÑÑ ÑпÑавлÑÑÑ Ð´Ð¾ÑÑÑпом к пÑоекÑам на вебÑайÑе. ÐеÑево ARO ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· вÑеÑ
полÑзоваÑелей:
<pre>
ÐебÑайÑ
ââÐдминиÑÑÑаÑоÑÑ
â ââÐлиÑ
â ââÐÑÑол
ââÐолÑзоваÑели
ââÐоб
ââÐлан
</pre>
<p>ÐÑоекÑÑ Ð¾ÑÐ³Ð°Ð½Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð¿Ð¾ пÑинÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑемой опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð² ÐÑÑппаÑ
AXO:
<pre>
ÐÑоекÑÑ
ââLinux
â ââSpamFilter2
â ââAutoLinusWorshipper
ââWindows
ââPaperclipKiller
ââPopupStopper
</pre>
<p>ÐейÑÑвиÑ, коÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑполнÑÑÑÑÑ Ð½Ð°Ð´ каждÑм обÑекÑом - âÐÑоÑмоÑÑâ и âРедакÑиÑованиеâ - ÑÑо ACOs.
<p>Ð Ñак, Ð¼Ñ Ñ
оÑим, ÑÑÐ¾Ð±Ñ Ðоб имел возможноÑÑÑ Ð¿ÑоÑмоÑÑа вÑеÑ
пÑоекÑов Linux. ÐÑо возможно пÑи помоÑи Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ADP (авÑомаÑиÑеÑкой обÑабоÑки) ÑвÑзки ARO Ðоба Ñ ACO âÐÑоÑмоÑÑâ и AXO Linux. ТепеÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ задаÑÑ Ð²Ð¾Ð¿ÑоÑ:
<p>âÐобâ (ARO) пÑоÑÐ¸Ñ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ âÐÑоÑмоÑÑâ (ACO) Ð´Ð»Ñ Ð¿ÑоекÑа âLinuxâ (AXO).
<p>ÐбÑаÑÐ°Ñ Ð²Ð°Ñе внимание на Ñо, ÑÑо AXO ÑвлÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм, еÑли Ð²Ñ Ð½Ðµ опÑеделиÑе AXO, вÑзÑÐ²Ð°Ñ acl_check(), Ñо ADP (авÑомаÑиÑеÑÐºÐ°Ñ Ð¾Ð±ÑабоÑка) оÑÑÑеÑÑвиÑÑÑ Ð±ÐµÐ· ÑÑеÑа AXO. Ðднако, еÑли APD (авÑомаÑиÑеÑÐºÐ°Ñ Ð¾Ð±ÑабоÑка) ÑÑÑеÑÑвÑÐµÑ ÑолÑко Ñ AXO, а Ð²Ñ Ð²ÑзовиÑе acl_check() без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ AXO, Ð²Ñ Ð¿Ð¾ÑеÑпиÑе неÑдаÑÑ.
<p>Ð Ñак, еÑли Ð²Ñ Ð¿Ñи вÑзове acl_check() опÑеделÑеÑе AXO, Ñо ÑÑа ÑÑнкÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑкаÑÑ Ð² ACL ÑолÑко ÑодеÑжание AXO. ÐÑли никакой AXO не опÑеделен, ÑолÑко бÑÐ´ÐµÑ ÑаÑÑмоÑÑÐµÐ½Ñ ÑолÑко ACL. ÐÑо (в ÑеоÑии) Ð´Ð°ÐµÑ Ð½Ð°Ð¼ неболÑÑое ÑвелиÑение ÑкоÑоÑÑи ÑабоÑÑ.
<h1>ÐнÑÑаллÑÑиÑ</h1>
<h2>ÐÐ°Ð·Ð¾Ð²Ð°Ñ Ð½Ð°ÑÑÑойка</h2>
<ol>
<li>РаÑпакÑйÑе аÑÑ
ив диÑÑÑибÑÑива в коÑÐµÐ½Ñ Ð¸Ð»Ð¸ нÑжнÑÑ Ð²Ð°Ð¼ Ð¿Ð°Ð¿ÐºÑ ÑайÑа. Ðозможно, Ð²Ñ Ð·Ð°Ñ
оÑиÑе пеÑеименоваÑÑ ÐµÐµ во ÑÑо-Ñо более подÑ
одÑÑее.
<br><img src="manual_html_m48c2db5c.png">
<li>РедакÑиÑÑйÑе Ñайл phpgacl/gacl.class.php. УÑÑановиÑе db_type, db_host, db_user, db_password и db_name, коÑоÑÑе Ð²Ñ Ð¿ÑедполагаеÑе иÑполÑзоваÑÑ.
<br><img src="manual_html_m6a630ca2.png">
<p>ТепеÑÑ Ð½ÐµÐ¾Ð±Ñ
одимо оÑÑедакÑиÑоваÑÑ phpgacl/admin/gacl_admin.inc.php, внеÑÑ Ð² него ÑÑже ÑамÑÑ Ð¸Ð½ÑоÑмаÑиÑ. ÐÑÐ¾Ñ Ñайл нÑжен Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑивной ÑаÑÑи ÑкÑипÑа.
<p>ÐÑиÑина, поÑÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ
одимо Ð´Ð²Ð°Ð¶Ð´Ñ Ð²Ð²ÐµÑÑи одинаковÑе даннÑе, заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо клаÑÑ gacl.calss.php намного менÑÑе по обÑемÑ, Ñем веÑÑ Ð¿ÑогÑаммнÑй инÑеÑÑейÑ. Ð Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи ÑÑнÑÑÑ Ð·Ð° Ñобой вÑе ÑкÑипÑÑ, еÑли вам вÑего лиÑÑ Ð½ÐµÐ¾Ð±Ñ
одимо вÑзваÑÑ ÑÑнкÑÐ¸Ñ acl_check().
<li>СоздайÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, коÑоÑое Ð²Ñ Ð·Ð°Ð´Ð°Ð»Ð¸ в db_name.
<li>ÐапÑÑÑиÑе http://your_site.net/phpgacl/setup.php. ÐÑÐ¾Ñ ÑкÑÐ¸Ð¿Ñ ÑоздаÑÑ Ð½ÐµÐ¾Ð±Ñ
одимÑе ÑаблиÑÑ. Ðе бойÑеÑÑ Ñложной инÑоÑмаÑии, ÑкÑÐ¸Ð¿Ñ Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ Ð²Ð°Ð¼ ÑолÑко ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± ÑÑпеÑной ÑабоÑе.
<br><img src="manual_html_7dced6ce.png">
<li>СледÑÑ Ð·Ð°Ð¼ÐµÑÐµÐ½Ð¸Ñ Ð½Ð° каÑÑинке (ÐеÑевод замеÑÐ°Ð½Ð¸Ñ Ð½Ð° каÑÑинке: ÐожалÑйÑÑа, ÑоздайÑе диÑекÑоÑÐ¸Ñ <phpGACL root>/admin/templates_c и ÑÑÑановиÑе на нее пÑава доÑÑÑпа. ÐажмиÑе âGo here!â Ð´Ð»Ñ Ð½Ð°Ñала ÑабоÑÑ), ÑоздайÑе необÑ
одимÑÑ Ð´Ð¸ÑекÑоÑиÑ. ÐÑава доÑÑÑпа Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² ÑÑÑ Ð´Ð¸ÑекÑоÑиÑ.
<li>ÐажмиÑе на âGo here!â и Ð²Ñ Ð¿ÐµÑенеÑеÑеÑÑ ÑÑда: http://your_site.net/admin/acl_admin.php.
</ol>
<h2>ÐополниÑелÑнÑе наÑÑÑойки</h2>
<p><strong>ÐÑли Ð²Ñ Ñже иÑполÑзÑеÑе ADOdb</strong> в ÑвоиÑ
ÑкÑипÑаÑ
, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑказаÑÑ phpGACL иÑполÑзоваÑÑ Ñже имеÑÑÑÑÑÑ ÑÑÑановкÑ:
<ol>
<li>ÐÑÑедакÑиÑÑйÑе phpgacl/gacl.class.php пеÑеменнÑÑ ADODB_DIR, Ñказав в ней пÑÑÑ Ðº ÑÑÑановленной библиоÑеке.
<li>ÐеÑеименÑйÑе диÑекÑоÑÐ¸Ñ phpgacl/adodb в какÑÑ-нибÑÐ´Ñ Ð´ÑÑгÑÑ, напÑÐ¸Ð¼ÐµÑ adodb_x и пеÑезапÑÑÑиÑе phpgacl/admin/acl_admin.php Ð´Ð»Ñ Ð¿ÑоÑмоÑÑа изменений.
<li>УдалиÑе диÑекÑоÑÐ¸Ñ adodb, ÑÑÑановленнÑÑ Ð²Ð¼ÐµÑÑе Ñ phpGACL.
</ol>
<p><strong>ÐÑли Ð²Ñ Ñже иÑполÑзÑеÑе Smarty</strong> в ÑвоиÑ
ÑкÑипÑаÑ
, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑказаÑÑ phpGACL иÑполÑзоваÑÑ Ñже имеÑÑÑÑÑÑ ÑÑÑановкÑ:
<ol>
<li>ÐÑÑедакÑиÑÑйÑе ÑкÑÐ¸Ð¿Ñ phpgacl/admin/gacl_admin.inc.php, ÑÑÑановив нем ÑледÑÑÑие пеÑеменнÑе: $smarty_dir и $smarty_compile_dir, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ ÑказÑвали на каÑалог, где Ñ Ð²Ð°Ñ Ñже ÑÑÑановлен Smarty. ÐеÑемеÑÑиÑе диÑекÑоÑÐ¸Ñ Ñ Ñаблонами phpGACL в дÑÑгÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ (напÑÐ¸Ð¼ÐµÑ Ð² ÑÑ, коÑоÑÑÑ Ð²Ñ Ð½Ð° даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñже иÑполÑзÑеÑе).
<li>ÐеÑеименÑйÑе Ð¿Ð°Ð¿ÐºÑ phpgacl/smarty в дÑÑгÑÑ, напÑÐ¸Ð¼ÐµÑ smarty_x. РпеÑезапÑÑÑиÑе phpgacl/admin/acl_admin.php Ð´Ð»Ñ Ð¿ÑоÑмоÑÑа изменений.
<li>УдалиÑе Ð¿Ð°Ð¿ÐºÑ smarty инÑÑаллÑÑии phpGACL.
</ol>
<p><strong>Ðак можно пеÑемеÑÑиÑÑ phpGACL ÑÐ°Ð¹Ð»Ñ Ð¸Ð· моего деÑева вебÑайÑа Ñ ÑоÑ
Ñанением ÑвÑзей Ñ Ð´ÐµÑевом Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑиÑованиÑ?</strong>
<ol>
<li>ÐеÑейдиÑе в коÑÐµÐ½Ñ Ð²Ð°Ñего вебÑайÑа.
<li>ÐеÑемеÑÑиÑе диÑекÑоÑÐ¸Ñ phpGACL в необÑ
одимÑÑ Ð²Ð°Ð¼ диÑекÑоÑÐ¸Ñ Ð¸ ÑоздайÑе Ñимлинк (ÑÑÑлкÑ) на админиÑÑÑаÑивнÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ Ñам, где Ð²Ñ Ñ
оÑиÑе его запÑÑкаÑÑ.
<table align="center" cellpadding="5"><tr><td bgcolor="lightgrey">
<pre>
mv phpgacl/ /www/includes_directory
ln -s /www/includes_directory/phpgacl/admin/ gacl
</pre>
</td></tr></table>
<li>ТепеÑÑ Ð¿Ð¾Ð¿ÑобÑйÑе запÑÑÑиÑÑ phpgacl. ÐÑли он не ÑÑал ÑабоÑаÑÑ, Ñо, возможно, Ð²Ð°Ñ ÑÐ°Ð¹Ñ Ð½Ðµ поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ñимлинки( ÑÑÑлки).
</ol>
<h1>ÐÑполÑзование phpGACL в ваÑей пÑогÑамме</h1>
<h2>Ðазовое иÑполÑзование</h2>
<p>ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð¾Ñновной ÑпоÑоб иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ phpGACL в ваÑей пÑогÑамме. Ðн Ñак же показÑÐ²Ð°ÐµÑ Ð¸ÑполÑзование абÑÑÑакÑного клаÑÑа Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к базам даннÑÑ
ADOdb. ÐÑÐ¸Ð¼ÐµÑ Ð¸Ð»Ð»ÑÑÑÑиÑÑÐµÑ Ð¿ÑоÑÑой ÑпоÑоб пÑовеÑки логина и паÑолÑ.
<table align="center" cellpadding="5"><tr><td bgcolor="lightgrey">
<pre>
// ÐодклÑÑаем базовÑй API
include('phpgacl/gacl.class.php');
$gacl = new gacl();
$username = $db->quote($_POST['username']);
$password = $db->quote(md5($_POST['password']));
$sql = 'SELECT name FROM users WHERE name=';
$sql .= $username.' AND password='.$password;
$row = $db->GetRow($sql);
if($gacl->acl_check('system','login','user',$row['name'])){
$_SESSION['username'] = $row['name'];
return true;
}
else
return false;
</pre>
</td></tr></table>
<p>ÐÑ Ð²Ð¸Ð´ÐµÑе ÑолÑко один вÑзов acl_check(), ÑÑо же он ознаÑаеÑ?
<ul>
<li>ÐÑовеÑÑÐµÑ ARO-обÑÐµÐºÑ $row['name'] в ARO-Ñазделе 'user'.
<li>Ð Ñакже ACO-обÑÐµÐºÑ 'login' в ACO-Ñазделе 'system'.
</ul>
<h2>ÐÑоÑеÑÑионалÑное иÑполÑзование</h2>
<h2>ÐÑполÑзование админиÑÑÑаÑивного инÑеÑÑейÑа</h2>
<p>ÐÑÑÑÑÑÑвÑÐµÑ Ð² оÑигиналÑной докÑменÑаÑии
<h2>ÐпиÑание API</h2>
<h2>ACL</h2>
<strong>add_acl()</strong>
<p>ÐобавлÑÐµÑ Ð¿Ñава доÑÑÑпа в лиÑÑ ÐºÐ¾Ð½ÑÑолÑ.
<pre>
add_acl(
array ACO Ids,
array ARO_IDs,
array ARO_GROUP_IDs,
array AXO_IDs,
array AXO_GROUP_IDs,
bool ALLOW,
bool ENABLED
[, int ACL_ID])
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int ACL_ID, еÑли вÑе пÑоÑло Ñ
оÑоÑо и FALSE, в ÑлÑÑае неÑдаÑи.
<br><br><br><strong>edit_acl()</strong>
<p>РедакÑиÑÑÐµÑ Ð¿Ñава доÑÑÑпа, коÑоÑÑе Ñже ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² лиÑÑе конÑÑолÑ.
<pre>
edit_acl (
array ACO IDs,
array ARO_IDs,
array ARO_GROUP_IDs,
array AXO_IDs,
array AXO_GROUP_IDs,
bool ALLOW,
bool ENABLED
[, int ACL_ID] )
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int ACL_ID еÑли вÑе пÑоÑло Ñ
оÑоÑо и FALSE, в ÑлÑÑае неÑдаÑи.
<br><br><strong>del_acl()</strong>
<p>УдалÑÐµÑ Ð¿Ñава доÑÑÑпа, коÑоÑÑе Ñже Ð·Ð°Ð´Ð°Ð½Ñ Ð² лиÑÑе конÑÑолÑ.
<pre>
del_acl (
int ACL ID)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>TRUE еÑли вÑе пÑоÑло ÑÑпеÑно, FALSE, в ÑлÑÑае неÑдаÑи.
<h2>Groups (ÐÑÑппÑ)</h2>
<strong>get_group_id()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ ID гÑÑппÑ.
<pre>
get_group_id (
string GROUP NAME) Тип обÑекÑа доÑÑÑпа (ARO, ACO, AXO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int GROUP_ID в ÑлÑÑае ÑÑпеÑ
а, FALSE, еÑли неÑдаÑа.
<br><br><strong>get_group_parent_id()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ ID непоÑÑедÑÑвенного ÑодиÑÐµÐ»Ñ Ð³ÑÑппÑ.
<pre>
get_group_parent_id (
int GROUP_ID)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int GROUP_PARENT_ID еÑли ÑдаÑа, FALSE â еÑли неÑдаÑа.
<br><br><strong>add_group()</strong>
<p>ÐобавлÑÐµÑ Ð³ÑÑÐ¿Ð¿Ñ Ð² деÑево гÑÑпп.
<pre>
add_group (
string NAME
[, int GROUP_PARENT_ID]
[, string OBJECT_TYPE])
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int GROUP_ID еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>get_group_objects()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ Ð²Ð¿Ð¸Ñок вÑеÑ
обÑекÑов оÑнеÑеннÑÑ
к гÑÑппе.
<pre>
get_group_aro (
int GROUP_ID,
string GROUP_TYPE)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>array SECTION_VALUE, VALUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>add_group_object()</strong>
<p>СооÑноÑÐ¸Ñ ARO Ñ Ð³ÑÑппой.
<pre>
add_group_aro (
int GROUP_ID,
string OBJECT_SECTION_VALUE,
string OBJECT_VALUE,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>del_group_object()</strong>
<p>УдалÑÐµÑ ARO из гÑÑппÑ.
<pre>
del_group_aro (
int GROUP_ID,
string OBJECT_SECTION_VALUE,
string OBJECT_VALUE,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>edit_group()</strong>
<p>РедакÑиÑÑÐµÑ Ð³ÑÑппÑ
<pre>
edit_group (
int GROUP_ID,
string NAME,
int GROUP_PARENT_ID,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>del_group()</strong>
<p>УдалÑÐµÑ Ð³ÑÑппÑ, пеÑеÑаÑпÑеделÑÐµÑ Ð´ÐµÑей (еÑли еÑÑÑ) или ÑдалÑÐµÑ Ð¸Ñ
.
<pre>
del_group (
int GROUP_ID,
bool REPARENT_CHILDREN,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<h2>Access Objects (ARO/ACO/AXO)</h2>
<p>ÐÑÐ¾Ñ Ñаздел API ÑпÑавлÑÐµÑ Ð¾Ð±ÑекÑами доÑÑÑпа, Ñакими как ACO, ARO, AXO.
<br><br><strong>get_object()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив инÑоÑмаÑии обо вÑеÑ
обÑекÑаÑ
Ñказанного Ñипа.
<pre>
get_object (
[string SECTION_VALUE], ÐеобÑзаÑелÑнÑй, название Раздела (как ÑилÑÑÑ)
bool RETURN_HIDDEN, ÐозвÑаÑаÑÑ Ð»Ð¸ обÑекÑÑ Ñ Ñипом âÑкÑÑÑÑйâ
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>array OBJECT_ID еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>get_object_data()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив инÑоÑмаÑии об обÑекÑе доÑÑÑпа Ñ ÐºÐ¾Ð½ÐºÑеÑнÑм ID.
<pre>
get_object_data (
int OBJECT_ID,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>array (section_value, value, order_value, name) еÑли ÑдаÑа, FALSE еÑди неÑдаÑа.
<br><br><strong>get_object_id()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ ID обÑекÑа.
<pre>
get_object_id (
string OBJECT_SECTION_VALUE,
string OBJECT_VALUE,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int OBJECT_ID еÑди ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>get_object_section_value()</strong>
ÐозвÑаÑÐ°ÐµÑ ID Ñаздела к коÑоÑÐ¾Ð¼Ñ Ð¿ÑипиÑан обÑекÑ.
<pre>
get_object_section_value (
int OBJECT_ID,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int SECTION_VALUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>add_object()</strong>
<p>ÐобавлÑÐµÑ Ð¾Ð±ÑекÑ.
<pre>
add_object (
string SECTION_VALUE,
string NAME,
string VALUE,
int ORDER,
bool HIDDEN,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>array OBJECT_ID еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>edit_object()</strong>
<p>РедакÑиÑование обÑекÑа.
<pre>
edit_object (
string SECTION_VALUE,
string NAME,
string VALUE,
int ORDER,
bool HIDDEN,
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>array OBJECT_ID еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>del_object()</strong>
<p>УдалÑÐµÑ Ð¾Ð±ÑекÑ.
<pre>
del_object (
int OBJECT_ID,
string GROUP_TYPE, Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
bool ERASE)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<h2>Access Object Sections (Ð Ð°Ð·Ð´ÐµÐ»Ñ Ð¾Ð±ÑекÑов доÑÑÑпа)</h2>
<p>ÐÑÐ¾Ñ Ñаздел API позволÑÐµÑ ÑпÑавлÑÑÑ Ð Ð°Ð·Ð´ÐµÐ»Ð°Ð¼Ð¸, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑникалÑного Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑа доÑÑÑпа (Ñм. âРазделÑâ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии).
<br><br><strong>get_object_section_section_id()</strong>
<p>ÐозвÑаÑÐ°ÐµÑ ID ÑÑÑеÑÑвÑÑÑего Раздела. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑказаÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Раздела или его знаÑение, или оба паÑамеÑÑа.
<p>ÐÑли Ð²Ñ Ð¾Ð¿ÑеделиÑе ÑолÑко название, Ñо Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑнÑе ÑезÑлÑÑаÑÑ (Ñак как название не обÑзано бÑÑÑ ÑникалÑнÑм). Ð ÑÑом ÑлÑÑае Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе ÑообÑение об оÑибке.
<pre>
get_object_section_section_id (
string NAME, ÐоÑоÑкое опиÑание Ñого, Ð´Ð»Ñ Ñего пÑедназнаÑин Раздел
(напÑимеÑ, ÐÑажи в зданииâ)
string VALUE, Ðазвание Раздела (напÑимеÑ, âÐÑажâ)
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int SECTION_ID еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>add_object_section()</strong>
<p>ÐобавлÑÐµÑ Ð½Ð¾Ð²Ñй Раздел обÑекÑов.
<pre>
add_object_section(
string NAME, ÐоÑоÑкое опиÑание Ñого, Ð´Ð»Ñ Ñего пÑедназнаÑин Раздел
(напÑимеÑ, ÐÑажи в зданииâ)
string VALUE, Ðазвание Раздела (напÑимеÑ, âÐÑажâ)
int ORDER, ЦенноÑÑÑ Ð Ð°Ð·Ð´ÐµÐ»Ð°. УÑиÑÑваеÑÑÑ Ð² полÑзоваÑелÑÑком инÑеÑÑейÑе пÑи вÑводе ÑпиÑка вÑбоÑа.
bool HIDDEN, TRUE â Раздел бÑÐ´ÐµÑ ÑкÑÑÑ Ð¸Ð· ÑпиÑка в полÑзоваÑелÑÑком инÑеÑÑейÑе.
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>int SECTION_ID еÑли ÑдаÑно, FALSE еÑли неÑдаÑно.
<br><br><strong>edit_object_section()</strong>
<p>ÐзменÑÐµÑ Ð°ÑÑибÑÑÑ Ð Ð°Ð·Ð´ÐµÐ»Ð°. ФÑнкÑÐ¸Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ñип обÑекÑа доÑÑÑпа (Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÑмоÑÑиÑе add_object_section).
<pre>
edit_object_section (
int OBJECT_SECTION_ID, ID Ñаздела (Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ ÐµÐ³Ð¾ пÑи помоÑи
ÑÑнкÑии get_object_section_section_id).
string NAME, Ðовое название Раздела.
string VALUE, Ðовое знаÑение Раздела.
int ORDER, ÐÐ¾Ð²Ð°Ñ ÑенноÑÑÑ Ñаздела.
bool HIDDEN, ÐовÑй ÑÑаÑÑÑ Ñаздела (ÑкÑÑÑ Ð¸Ð»Ð¸ неÑ)
string GROUP_TYPE) Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
</pre>
<p>ÐозвÑаÑаеÑ:
<p>TRUE еÑли ÑдаÑа, FALSE еÑли неÑдаÑа.
<br><br><strong>del_object_section()</strong>
<p>УдалÑÐµÑ Ð Ð°Ð·Ð´ÐµÐ». ÐÑе обÑекÑÑ Ð Ð°Ð·Ð´ÐµÐ»Ð° Ñакже бÑдÑÑ ÑдаленÑ!!!
<pre>
del_object_section (
int SECTION_ID, ID Раздела
string GROUP_TYPE, Тип обÑекÑа доÑÑÑпа (ARO, AXO, ACO)
bool ERASE) ÐÑли TRUE - вÑе обÑекÑÑ Ð Ð°Ð·Ð´ÐµÐ»Ð° бÑдÑÑ ÑдаленÑ.
ÐÑли FALSE, Ñо Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе ÑообÑение об оÑибке в ÑлÑÑае,
еÑли Раздел ÑодеÑÐ¶Ð¸Ñ Ð¾Ð±ÑекÑÑ, Раздел Ñдален не бÑдеÑ,
еÑли Раздел не ÑодеÑÐ¶Ð¸Ñ Ð¾Ð±ÑекÑов, он бÑÐ´ÐµÑ Ñдален.
</pre>
<p>ÐозвÑаÑаеÑ:
<p>TRUE еÑли ÑдаÑа, FALSE еÑди неÑдаÑа.
<hr>
</body>
</html>