英语法语西班牙文

OnWorks 网站图标

dacscheck - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 dacscheck

这是 dacscheck 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


dacscheck - 授权检查

概要


数据检查 [-行政[-app 应用名称[-语境 文件[-D名称=值]
[-F 字段_间隔[-fd [-fh 主机[-缩略词 姓名[-fn 联邦名称]
[-倾倒[-组 组_vfs[-h[-i IDENT[-他 IDENT]
[-伊尔格 IDENT[-ieuid[-ieuidg[-iuid[-iuidg[-lg[-二 LOG_LEVEL]
[-名称比较 方法[-q]
[-重定向[-角色 角色_vfs[-规则 规则_vfs[-v[-变量 名称=值]
[-vfs vfs_uri[--] 对象

商品描述


该程序是 DACS 套房。 这是一个独立的程序,既不接受
通常 DACS 命令行选项(选项) 也不访问任何 DACS 配置
文件。

简单地说, 数据检查 查看访问控制规则以测试给定用户是否获得授权
做某事或访问某事。 命令的退出状态给出了结果
测试,除非 -q 给定标志,将一行打印到标准输出,指示
结果。 它提供了对 DACS的访问控制规则
评估引擎,即使对于 Web 服务以外的程序,它也适用于
细粒度的访问控制决策。

进一步来说, 数据检查 检查是否应根据以下内容授予对象请求
指定的访问控制规则和给定的评估上下文。 为了完成它的工作, 数据检查
只需要知道几件事:

1. 在哪里可以找到要应用的访问控制规则;

2. 被访问对象的名称; 和

3. 可选的,一个评估上下文,它指定了一个访问的身份
测试和可以被规则引用的变量。

该命令不执行任何身份验证; 它假定调用者(或
执行环境)已经建立了访问控制的身份
决定是必需的。 它可以像任何其他命令一样使用:从命令行运行或
shell 脚本,由编译程序执行,或从脚本语言调用,例如
as Perl的[1] PHP[2]。 Python [3] 红宝石[4],和 Tcl/Tk[5]。

一些简单的例子将说明如何 数据检查 可以使用。

备注
为了便于阅读,本文档中的示例已经过简化; 在实际使用中,
应该出现绝对路径名,应该执行错误检查,等等。 还,
数据检查 程序及其所需的规则必须设置文件权限
适当。

第一个示例显示了 shell 脚本如何调用 数据检查 测试用户是否
运行它是允许这样做的。 从操作系统获取用户身份;
它假定用户已从命令行调用脚本,因此
已经登录系统。 在示例中, 数据检查 通过身份获得
系统调用,但脚本可能会选择传递 日志名称 or USER
环境变量。

shell 脚本只是询问 数据检查 如果有效的uid(见 盖特伊德(2)[6]) 是
允许访问 /myapp。 的退出状态 数据检查 ($?) 给出结果。 这
pathname /myapp 本质上是一个标签,用于查找访问控制规则
申请; 在这个例子中,它只代表程序的名称。 它可能是
程序的文件名,但不必如此。

#! / bin / sh的

dacscheck -q -ieuid -rules /usr/local/myapp/rules /myapp
st="$?"
如果测试 "${st}" != 0
然后
echo "访问被拒绝"
退出“${st}”
fi

echo "访问被授予"

# 做一些事情

退出0

目录 /usr/local/myapp/rules 可能包含一个名为 acl-app.0 的文件,该文件授予
只能访问鲍勃和爱丽丝:








用户(“:bob”)或用户(“:alice”)




备注
访问控制规则在 dacs文件(5)[7]。 与 dacs_acs(8)[8],这些
规则必须被索引 达克赛克(1)[9]。 例如,在一个常见的用例中, DACS
未使用配置文件,规则集由 数据检查 可能是
使用如下命令索引:

% dacsacl -un -vfs "[acls]file:///users/bobo/my-rules" -vfs "[dacsacls]:file:///dev/null"

If 达克赛克 在上面的例子中成功,一个名为 INDEX 的文件将被创建或
在 /users/bobo/my-rules 目录中更新,其中包含规则的文件
也被发现。 如果 INDEX 看起来正确,则通常可以忽略警告消息。

CGI 程序可以从调用它的用户的身份 REMOTE_USER
环境变量和调用 数据检查,如以下 shell 脚本所示,
它使用与上面相同的规则:

#! / bin / sh的

如果测试 "${REMOTE_USER}x" = "x"
然后
idarg=""
其他
idarg="-i ${REMOTE_USER}"
fi

回声“上下文类型:文本/纯文本”
扔出去 ””

# 注意:将 2>&1 追加到下一行的末尾以捕获错误信息
dacscheck -q ${idarg} -rules /usr/local/myapp/rules /myapp

st="$?"
如果测试“${st}”= 0
然后
echo "访问被授予"
其他
echo "访问被拒绝"
fi

退出0

这个例子可以很容易地翻译成任何允许外部
要调用的程序并检查其退出状态。 这是 PHP 中的一个类似示例:

$user = $_SERVER["REMOTE_USER"];
putenv("REMOTE_USER=$user");
system("/usr/local/dacs/bin/dacscheck -q -fn DEMO -icgi
-rules /usr/local/myapp/rules /myapp", $st);
如果($st != 0){
// 访问被拒绝,退出
退出($st);
}

// 访问被授予,继续

备注
有些人可能会质疑进行程序调用的意义 数据检查 测试用户是否
调用它只允许运行程序。 乍一看,似乎
一个人可以通过简单地设置文件权限来获得相同的结果,这样只有
bob 和 alice 可以运行该程序。 如果可以的话,粗粒度测试
做完了 数据检查 在示例中将是不必要的。 事实证明,有
不止于此。

在传统的 Unix 类型系统上设置文件权限以实现此目的需要
在中创建一个新组 / etc / group,通常只能由一个人完成的事情
系统管理员。 因此,普通用户必须要么打扰系统
管理员每次必须创建或修改这样的组,或者找一些其他的
实现相同结果的方法(例如,通过加密,使用特殊的 setuid 或 setgid
提供密码保护访问的命令,或其他一些笨拙且可能的命令
不安全的解决方案)。

为了解决这个限制和其他限制,许多 Unix 类型的操作系统现在包括
使用基于 ACL 的文件系统扩展传统的 Unix 文件权限
机制(例如,提供 获取方法(1)[10]和 Setfacl(1)[11] 命令,以及
ACL(3)[12] ACL 安全 API)。

数据检查 提供类似的功能,但对于 随意 名称, 不仅对于对象
在文件系统中,以及关于 随意 身份,不仅对于那些已知的
到操作系统。 例如,一个 CGI 脚本可以调用 数据检查 测试访问
代表 Web 服务器已知的用户(例如,通过使用创建的帐户)
密码(1)[13]) 但在底层系统上没有帐户。 所以,
除了跨平台可移植和在没有 ACL 类型文件的系统上可用
权限, 数据检查 是比大多数操作更通用的解决方案
系统提供。 然而,与系统提供的基于 ACL 的机制相比,
数据检查 is 而不去 透明地调用(即,它不是由
访问文件等资源时的操作系统)。 另外,关于
测试是否允许用户运行程序,该程序通常会
执行测试本身,因此必须开始执行。

有关其他信息:

· 运用 FreeBSD 的 访问控制列表[14],德鲁·拉维尼, 电灯网[15],22 年 05 月 XNUMX 日。

· POSIX 访问控制列表 in Linux[16],迈克·彼得斯, linux.com[17],2 年 04 月 XNUMX 日。

· 对于 Solaris, 的Solaris 10 ACL(2)[18] 星期天 [19]和 运用 的Solaris
访问控制列表[20] 由 部门 of 电脑 科学 公爵 大学[21]。

因为授权检查由 数据检查 是完全分开的
由操作系统为系统调用执行,一个 Unix的 root 等身份没有
特殊权利或能力 数据检查 担心,除非规则已经
写给他们。 这同样适用于应用 Unix的 组。

下一个示例演示了一些典型的 Perl的 代码可以通过以下方式改进 数据检查。 该
代码片段:

如果($logged_in_as_root || $logged_in_as_current_admin){
# 做一些特权...
}

这取决于根据值正确初始化的两个变量
$ username, 可以替换为:

# 判断 $username 是否有管理员权限
$output = `dacscheck -q -i $username -app myapp /myapp/admin`;
$is_admin = ($?>> 8) == 0;

如果($is_admin){
# 做一些特权...
}

# 之后...
如果($is_admin){
# 做一些其他的特权...
}

新的授权测试取决于运行程序的身份($ username)
以及确定是否应授予该身份访问权限的单独规则集
/myapp/admin,它只是一个规则的标签,可能如下所示:








用户(“%:管理员”)




此规则授予访问权限当且仅当 $ username 是的一个部件 DACS 名为 admin 的组
或与之相关 DACS 角色。 该组中的成员可以动态更改,
甚至可以减少到零。

重要的观察是 条件 确定 是否 用户 运行
Free Introduction Perl的 具有 行政 权限 旨在 定义 学校以外 of 程序 能够 be
也完全不需要 修改 经常 也完全不需要 甚至 修改 ACCESS 控制 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。.

本文档中使用的一些概念在别处进行了描述。 变量,变量
在访问控制规则中使用的命名空间和表达式在
dacs.表达式(5)[22]。 命名 DACS 讨论在 达克(1)[23],和 DACS 组和角色
涵盖在 dacs.groups(5)[24]。

安全性
明确地 数据检查、它的调用者和相关资源必须与
代表的用户 数据检查 正在运行,否则用户可以访问
资源直接或颠覆访问控制测试。 所以, 数据检查 以及
调用者必须比代表其运行的用户具有更高的特权,或者
这两个程序都必须在安全的上下文中运行。 这通常意味着两者 数据检查
并且它的调用者应该与用户隔离运行(如在远程服务器上)或作为
与用户不同的有效用户 ID。

为什么选择
执行授权测试的程序通常包含如下代码:

·》如果当前用户提供了合适的密码,则执行以下
代码,否则不要”,或

·“如果当前用户是管理员,请执行以下操作”,或

·》如果当前用户被允许执行更新操作,则显示这些菜单
项目,否则不显示它们”

复杂的应用程序可能充斥着这些类型的测试,使它们容易受到
错误和安全问题。 更改安全策略可能涉及修改
整个应用程序或应用程序套件。 此外,密码处理通常是
纳入此类计划; 因为密码管理可能需要大量
实施工作并且很难安全地完成,尝试利用
现有的实现。

与自定义编码的解决方案相比, 数据检查 有很多优点:

数据驱动的政策
与专门编写的访问控制逻辑相反,数据驱动(基于规则)
功能优越,因为:

· 访问控制规则与代码分离,因此更改为一组规则
自动应用于整个应用程序或集合中这些规则的所有使用
应用程序; 如果策略更改,则无需修改代码。

· 错误修复和规则改进自动提供给程序
使用 数据检查; 无需重新编译应用程序。

· 管理规则的人不必是应用程序的人
程序员(甚至是懂代码的人),所以委派
责任要容易得多。 这减少了所需的编程量
当需要更改时,减少代码维护工作,并减少
出错的机会。

· 通常更容易理解(和表达)描述一个事物的一组规则。
访问控制策略; 实现相同策略的代码会更复杂
并且难以理解,增加了出错的机会。

编程效率

· 简化了应用程序,减少了编程时间和精力,因为
现有的访问控制代码(即 数据检查) 被重用。

· 无需编写任何代码即可构建复杂的规则。 DACS
功能可用,例如角色和组,并可用于构建
比可能的更简单和更具表现力的授权策略
手工编码。

便携性
规则独立于平台,可以从使用的应用程序远程存储
它们,并且可以进行远程评估。 数据检查 可用于多种
的平台。

增加分享
规则可以在不同情况下由不同程序共享和使用。

灵活性

· 因为它不依赖于网络服务器,所以几乎任何人都可以使用它
基于 CGI 的程序。

· 关于 DACS,它可以在以下情况下使用 mod_auth_dacs[25]
模块不能与 阿帕奇,或在哪里 阿帕奇 根本无法使用。

· 因为是作为普通命令实现的, 数据检查 可以从
命令行或从几乎任何脚本或程序调用。

· 对于基于 CGI 的程序, 数据检查 可以在没有任何系统帮助的情况下使用
行政人员; 例如,它不需要配置 Web 服务器来提供
CGI 程序的授权,因为所有访问控制功能都是
程序内执行。

提高安全性
数据检查 既不执行身份验证也不依赖任何特定的身份验证
方法,因此可以在不影响身份验证的情况下更改身份验证方法
应用程序的使用 数据检查. 可以使用任何受支持的身份验证方式,而不是
只有典型的基于密码的方法。

虽然表现 数据检查 不应该成为许多应用程序的一个因素,
C/C++ API 可以在有问题的地方使用。 此 API 可用于合并 数据检查
编译程序和可扩展语言的功能,例如 Perl的, Python ,
Tcl/TkPHP.

身份
要测试访问的身份由程序提供或由
程序从其执行环境。 这个身份被转换成 DACS的 内部
表示。

可以指定多个身份; 支票是代表所有人的工会进行的
身份。 例如,如果指定了身份 bob 和 alice,则规则
满足任一身份可以授予访问权限。

如果未提供身份,则代表未经身份验证的用户进行检查。

身份可以是:

· 一个登录名 数据检查 映射到程序的真实或有效 uid
(即运行程序的用户);

· 一种 DACS 用户身份(例如:carol、DSS:bob 或EXAMPLE-COM::DEMO:alice,请参阅
达克(1)[26]);

· 一个简单的名字(bob 相当于:bob); 或者

· 用英文表达的名字 简洁 句法[27],它给出了一个用户名,并且可选地,
身份的角色和属性。 不使用任何已过期的身份。

笔记
· 数据检查 验证给定的身份的语法,转换和扩展它
如有必要,转换为简洁的语法,然后将其转换为内部
代表凭证。 这些凭据在程序执行时被销毁
终止。

不管它是如何指定的,每个身份都必须满足句法
的要求 DACS 此转换和扩展后的用户身份(请参阅
达克(1)[26])。 例如,如果将登录名指定为身份,则它必须是
作为一个组件有效 DACS 用户身份; 因此,它不能包含任何
无效字符。

· 如果没有为某个身份提供 IP 地址,则从 REMOTE_ADDR
环境变量可用时,否则使用默认值 127.0.0.1。 这
与凭证关联的 IP 地址使用 用户() 谓词。

· 如果正在测试的身份包括联合名称,由于默认
联盟名称不太可能是正确的,可能有必要告诉
数据检查 使用哪个联合名称进行比较 -fn 旗。

以下是一些可能遵循的身份示例 -i 旗:

粮食
:鲍勃
DSS:鲍勃
{u = 鲍勃}
{u="鲍勃"}
{u="alice",g="admin"}
{u="DSS:bob",g="guest"}
{u="bob",a="a", g="guest"}

备注
这个字符串可能需要在命令行上适当地引用,因为大括号
字符对某些 shell 很重要; 例如,

-i '{u="鲍勃"}'

阿帕奇 和其他网络服务器设置环境变量 REMOTE_USER 到经过认证的
调用 Web 服务的身份。 只要它的语法合适,这个身份就可以是
传递给 数据检查。 对于 DACS- 包装的网络服务, DACS 身份在此可用
变量。

默认情况下,与规则关联的联盟、管辖区和主机名是
派生自系统的主机名,由返回 获取主机名(3)[28]。 如果那个名字是
不合适,因为它不是 FQDN(即,它不是完全限定的域名,因为
它不包含句点),检查每个别名(使用
的gethostbyname(3)[29]) 直到找到 FQDN。 司法管辖区名称来自
所选 FQDN 的最左侧组件以及联合域和名称来自
剩余成分。 如果没有找到 FQDN,系统的主机名将被选为
辖区名称和默认值将用作联合域和名称(EXAMPLE.COM
和EXAMPLE-COM,分别)。

如果发现系统的主机名是(或明确指定为)demo.example.com,对于
例如,将按照规则评估期间的指示设置以下变量:

· ${会议::FEDERATION_NAME}${DACS::联邦} 都设置为EXAMPLE-COM(点是
映射到破折号以形成有效名称)

· ${会议::FEDERATION_DOMAIN} 设置为EXAMPLE.COM

· ${Conf::JURISDICTION_NAME}${DACS::司法管辖区} 设置为辖区名称,
演示

· ${DACS::HTTP_HOST} 设置为 demo.example.com:80

通常,可以表示规则和身份,以便为联邦选择的名称
和管辖权并不重要。 但是,如果情况并非如此,并且默认值
被选择 数据检查 不正确,它们可以在命令行上设置。 在一些
在某些情况下,司法管辖区名称可能适合作为
应用程序,例如。

无论其起源如何,联邦和管辖区名称必须始终为
语法有效(见 达克(1)[26])。

对象
虽然对象通常是实际的东西,例如文件、菜单或变量,但它可以
也可以是一个抽象,比如一个操作。 数据检查 与名称一起工作 - 以
URIs - 而不是对象 se. It 而不去 关联 任何 特别 -
名字, it 仅仅 使用 他们 定位 an 相应 ACCESS 控制 排除。 因此,
如果规则编写者和参考规则的应用程序就命名达成一致
方案,所选择的名称在很大程度上是无关紧要的。

应用程序将名称分配给每个需要添加的对象或对象类
由访问控制规则引用。 最简单的,只需要一个名称(名称
的应用程序,例如)。 在更复杂的情况下,各种各样的对象
需要命名。 名称的选择和命名层次结构的细节取决于
特定的应用程序,很像软件包运行时的组织
文件和目录组织取决于特定的包。

这款 对象 参数是与访问中指定的服务匹配的名称
控制规则。 它可以是 URI 或绝对路径名(以
斜线字符),并且可以附加一个可选的查询字符串组件。 一个
绝对路径名 在内部映射到 URI 为 file://; 例如,/myapp 是
解释为 file:///myapp(见 RFC 1738[30])。

命名对象的 URI 的各种组件可用作 DACS 变量
和环境变量(见下文)。 如果给出查询字符串,则对其进行解析并
各个参数通过 参数 命名空间,就像对于
DACS- 包装的网络服务。

备注
只有 URI 的组成部分在以下情况下被考虑 DACS 匹配对象的名称
针对访问控制规则的 url_pattern。 目前,对象名称不是
自动规范化或解决(见 RFC 3986[31]),通常由
Web 服务器,因此相对路径组件,例如“.” 和“..”应该避免。

违反的规则 评价 语境
在可能影响表达式计算的执行上下文中计算规则
隐式地或可以通过变量显式地检查。

建立 数据检查 不咨询 DACS 配置文件, CONF 命名空间是
用几个变量实例化。 目前,其中只有 VFS 指令可用。

这款 参数 命名空间被实例化,如果 对象 参数有一个查询字符串组件。

这款 DACS 命名空间使用一些标准变量(例如
${DACS::司法管辖区}) 但也可以从命令行以各种方式实例化
和从文件。

这款 环保 命名空间是从环境中实例化的。 语法无效的变量
名字被默默地忽略。

许多通常由 Web 服务器设置的变量由 数据检查 基于该
对象名称。 这些变量在 环保DACS 命名空间。 例如,如果
对象名称为 https://example.com:8443/myapp/edit-menu?entry=item1,如下
变量将按指示设置:

${Env::HTTPS}=开启
${Env::SERVER_NAME}=example.com
${Env::SERVER_ADDR}=142.179.101.118
${Env::HTTP_HOST}=example.com:8443
${Env::SERVER_PORT}=8443
${Env::REQUEST_URI}=/myapp/edit-menu
${Env::DOCUMENT_ROOT}=/
${Env::REQUEST_METHOD}=GET
${Env::SERVER_SOFTWARE}=dacscheck-1.4.8b
${Env::QUERY_STRING}=条目=item1
${环境::ARG_COUNT}=1
${Env::CURRENT_URI}=/myapp/edit-menu?entry=item1
${Env::CURRENT_URI_NO_QUERY}=/myapp/edit-menu

同名变量也将被设置在 DACS 命名空间并导出为
环境变量。 的价值 ${参数::条目} 将是 item1。 请求方法
默认为 GET。 变量 ${环境::REMOTE_USER} (因此 ${DACS::REMOTE_USER}
环境变量 REMOTE_USER) 将根据上指定的第一个身份进行设置
命令行; 如果没有指定身份,这个变量将是未定义的。

An 例如: 应用程序
为了说明这些部分如何组合在一起,让我们考虑一个假设的(但现实的)
日历应用程序命名 石灰 写在 Perl的 并作为 CGI 程序调用。 好
仅允许已通过 Web 服务器身份验证的用户读取、创建或更新
她自己的日历,除非日历的所有者允许她执行阅读
或更新日历上的操作。 每个所有者都可以指定哪些用户可以访问她
自己的日历和允许的访问类型。

可以很容易地指定此授权策略。 一种方法是使用:

· 一个主要规则,它委派为每个人指定安全策略的责任。
用户的日历给该用户。

· 每用户、每日历规则,说明哪些用户可以访问日历以及在什么
方式或方式。

程序的管理员可能会收集应用程序的所有运行时文件
目录/usr/local/cal及其子目录,组织如下:

/usr/local/cal/rules/{acl-rule.0,acl-rule.1,...}
申请的一般规则

/usr/local/cal/用户/用户名
拥有的日历的根目录 用户名

/usr/local/cal/用户/用户名/cal-1/数据/*
每个日历数据文件

/usr/local/cal/用户/用户名/规则/{acl-cal1.0,acl-cal2.0,...}
按日历 DACS 访问控制文件

/usr/local/cal/用户/用户名/组/*
每用户 DACS 组列表,每个文件一个

鉴于这些命名约定:

· 为了测试它是否应该执行一个特定的操作,应用程序会调用
数据检查,告诉它使用它在 /usr/local/cal/rules 中找到的规则。

· 应用程序的一般规则将授权访问控制决策
名称与 /users/ 匹配的对象用户名/* 访问控制规则
目录 /usr/local/cal/users/用户名/ 规则。 这些规则将描述哪些用户,
如果有的话,将被允许在日历上执行给定的操作。

· 应用程序将使用 /users/ 形式的对象名称用户名/cal-1?OP=操作
作为论据 数据检查. cal-1 的规则集将确定给定的
允许身份执行请求 操作 在日历上。 例如,
alice(所有者)可能会被授予访问权限,而不管 OP 论据,
而 bob 可能只有在 OP=read 时才被授予访问权限,而所有其他人可能会被拒绝
使用权。 之后,alice 可能会定义一组她命名为 family 的用户并更改
规则以允许该组的任何成员读取和更新访问权限。

用户的访问控制规则本身可以受到访问控制。 命令行、GUI、
或 Web 界面将使管理员和用户能够管理规则。

查看 示例[32] 节示例规则。

这绝不是组织日历的唯一方法,基于委托的
不需要方法。 管理员可能会改为将所有规则放在一个
公共目录,如 /usr/local/cal/rules/acl-用户名.0/{acl-cal1.0,acl-cal2.0,...},或
让他们更接近他们控制的日历,比如
/usr/local/cal/用户/用户名/cal-1/acl-cal1.0。

可以编写规则来返回一个操作,而不是测试是否允许操作
约束字符串,告诉调用者允许哪种(或多种)访问。 这
程序的输出行将包含引号内的约束字符串。

比较 数据检查 - dacs_acs
dacs_acs(8)[8] 是 DACS 被调用的组件 阿帕奇 (由 DACS
mod_auth_dacs[25]模块,实际上)对Web服务进行访问控制处理
要求。 它的操作通常对 Web 服务不可见; dacs_acs 它的所有
在执行 Web 服务或返回网页之前工作。

数据检查 执行类似于 -仅检查 的运作方式 dacs_acs in
它只是返回一个访问控制决定。 之间有重要区别
然而,这两个程序。

数据检查:

· 不是 CGI 程序(尽管它可以从一个程序中调用);

· 不需要 mod_auth_dacs[25];

· 不使用任何 DACS 配置文件;

· 不直接与网络服务器或任何其他交互 DACS 程式; 和

· 在调用它的用户的权限级别运行,而不是在调用它的用户的权限级别运行
阿帕奇.

数据检查 使用普通 DACS 访问控制规则(dacs文件(5)[7]),不像大多数
DACS 命令它不咨询任何 DACS 配置文件。 评价环境
访问控制规则是 类似 到 Web 服务测试,但它不是
相同,因为图片中不需要网络服务器。 除了属性
与约束相关,pass_credentials 等属性没有意义 数据检查.

使用和配置 DACS by 数据检查 被大大简化,因为没有真正的
定义了联邦或司法管辖区; 一个完全独立的环境是
创建以便单个程序或一组相关程序可以同时执行
粗粒度和细粒度的访问控制测试。 没有联邦或管辖权
使用了加密密钥,并没有真正的 DACS 凭据已创建。 联邦和
辖区名称是实例化的,但那些编写规则的人通常不需要
知道他们。

配置


参数在检查时被处理(从左到右),它们的顺序可以是
重大; 例如,由 -fh 标志可能会影响选项
遵循它,例如使用字符串插值的那些。 正好一个 对象 论点是
必需的。

-行政
命令行后面的所有身份都是 DACS 满足的身份
dacs_admin() 功能。 参考 ADMIN_IDENTITY 配置指令
配置文件(5)[33] 和身份的“a”属性。

-app 应用名称
指定用于构建默认路径的应用程序名称(请参阅 -规则
-组 标志)。

-语境 文件
变量定义 DACS 命名空间被读取,每行一个,格式
姓名=折扣值 (在周围有可选的引号 折扣值)。 该 姓名 必须在语法上
有效的。 如果 文件 is -,读取标准输入。 例如,如果 文件 包含两个
行数:

FOO=一
BAZ=二

然后在访问控制规则内 ${DACS::FOO} 将具有值“一”和
${DACS::BAZ} 将具有值“二”。 这个标志可以重复,尽管
标准输入只能读取一次。

-D名称=值
这相当于 -变量 名称=值.

-倾倒
执行所有初始化,显示评估上下文,然后退出。

-F 字段_间隔
查找角色时,使用字符 字段_间隔 作为字段分隔符
而不是默认值。 详细请参考中 VFS 指令的描述
配置文件(5)[34]。

备注
请注意,只有第一次出现的字符(从左到右)是
作为分隔符处理。

-fd
使用 VHDL 语言编写 作为联盟的域名。 它必须在语法上有效。

-fh 主机
使用 VHDL 语言编写 主机,一个完全限定的域名,作为系统的主机名并派生
联邦和管辖区名称。 它必须在语法上有效。

-缩略词 姓名
使用 VHDL 语言编写 姓名 作为司法管辖区名称。 它必须在语法上有效。

-fn 联邦名称
使用 VHDL 语言编写 联邦名称 作为联盟名称。 它必须在语法上有效。

-组 组_vfs
默认情况下, 数据检查 希望找到 DACS 以目录为根的组定义
dacscheck/groups 相对于 DACS_HOME(例如,/usr/local/dacs/dacscheck/groups),或者如果
-app 应用名称 给出,根目录下 dacscheck/应用名称/组相对于
DACS_HOME(例如,/usr/local/dacs/dacscheck/myapp/groups)此标志指定
不同的位置。 它可以是一个绝对路径名(它将被字符串插入
-看 配置文件(5)[35]) 或语法中的 URI VFS[34] 配置指令。
例子:

-groups "[groups]dacs-fs:/local/groups"
-组/home/bob/mygroups

默认情况下,对 %FOO:people 组的引用将映射到名为
目录 FOO 中的 people.grp 相对于 DACS 组目录。

-h
打印使用说明。

-i IDENT
在检查期间,给定的身份被添加到有效的身份集中。 这个
身份不一定在系统上有帐户。 如果 IDENT 是空的
字符串,但是,该标志无效; 当标志为
用过 -i ${Env::REMOTE_USER:-""},例如 REMOTE_USER 可能不是
设置。

-icgi
如果环境变量 REMOTE_USER 设置为有效的简单名称或 DACS
身份,它被添加到检查期间有效的身份集中。 如果
变量未设置或无效,此标志无效。

-icgig
-icgi 标志,除了将添加与用户名关联的任何角色。

-他 IDENT
给定的身份是“本地的”,必须与系统上的一个帐户相对应; 如果
-组 标志有效,帐户的组成员身份将作为角色添加到
IDENT.

-伊尔格 IDENT
-伊尔格 标志,除了帐户的组成员身份将作为角色添加到
IDENT 无论是否 -组 标志有效。

-ieuid
程序的有效 uid 被添加到身份集合中。 如果 -组
标志有效,帐户的组成员身份将作为角色添加到 IDENT.

-ieuidg
程序的有效 uid 被添加到身份集合中。 该帐户的
组成员身份将作为角色添加到 IDENT 无论是否 -组
标志有效。

-iuid
程序的真实 uid 被添加到身份集中。 如果 -组 标志是
实际上,帐户的组成员身份将作为角色添加到 IDENT.

-iuidg
程序的真实 uid 被添加到身份集中。 帐户组
成员资格将作为角色添加到 IDENT 无论是否 -组 标志是
有效。

-lg
对于命令行中的每个本地身份,使用其 Unix 组
身份角色的成员资格。

-二 LOG_LEVEL
将调试输出级别设置为 LOG_LEVEL (见 达克(1)[23])。 默认级别是
警告,以及 -v 标志会提高调试或跟踪的级别。

-名称比较 方法
完全像 名称_比较[36] 指令,设置用于比较的默认方法
各种上下文中的 DACS 名称 方法,这可能是(不区分大小写)大小写,
nocase,或默认。

-q
保持安静,除了错误信息; 结果不会打印到标准输出。 这 -v
-二 标志与此无关。

-重定向
如果访问被拒绝并且适用的规则调用 重定向()[37] 与
BY_SIMPLE_REDIRECT 参数,然后将指定的 URL 打印到 stdout。 这旗
启用 -q 旗。

-角色 角色_vfs
将使用以下命令查找命令行上每个身份的角色
角色_vfs. 它可以是绝对路径名(这将是字符串插值 - 请参阅
配置文件(5)[35]) 或语法中的 URI VFS[34] 配置指令。 如果
找到任何角色,它们将被添加到为用户指定的任何其他角色
(无论是明确列出的还是从 Unix 组成员身份获得的)。 例如,如果
/usr/local/myapp/roles 包含:

bobo:用户
奥吉:管理员,用户
哈雷:客人

然后命令行:

% dacscheck -roles /usr/local/myapp/roles -i auggie /myapp/admin

将测试身份 {u="auggie",g="admin,users"} 的访问权限。

-规则 规则_vfs
默认情况下, 数据检查 期望使用以目录 dacscheck/acls 为根的规则集
相对于 DACS_HOME(例如,/usr/local/dacs/dacscheck/acls),或者如果标志 -app
应用名称 给出,根目录下 dacscheck/应用名称/acls 相对于 DACS_HOME
(例如,/usr/local/dacs/dacscheck/myapp/acls)。 此标志指定不同的规则集
要使用的。 它可以是绝对路径名(这将是字符串插值 - 请参阅
配置文件(5)[35]) 或语法中的 URI VFS[34] 配置指令。
例子:

-rules "[acls1]dacs-fs:/local/acls"
-规则/usr/local/myrules

这个标志可以重复; 规则集将按照它们的顺序进行检查
在命令行中指定。

-v
提高调试输出的级别。 标志可以重复。

-变量 名称=值
-语境 标志,这将一个变量定义添加到 DACS 命名空间。 这
变量 DACS::名称 将被分配字符串 折扣值。 该 姓名 必须在语法上
有效的。 该标志可以重复。

-vfs vfs_uri
添加 vfs_uri 作为一个 VFS[34] 配置指令。 这个标志可以重复,用
后来的事件比之前的事件具有更高的“优先级”(就好像它们
后来出现在 dacs.conf 中; 看 配置文件(5)[33])。

--
这标志着标志参数的结束。

示例


为了说明如何 数据检查 可能与实际应用程序一起使用,这里有一些示例。
前几个继续前面描述的假设日历应用程序。

1. 文件 /usr/local/cal/rules/acl-rule.0 可能如下所示:



<委托 url_pattern="/users/alice/*"
rule_uri="/usr/local/cal/users/alice/rules/>
<委托 url_pattern="/users/bob/*"
rule_uri="/usr/local/cal/users/bob/rules/>





用户(“身份验证”)




此规则将对特定用户的日历的请求重定向到该用户的访问权限
控制规则。 它还表示对应用程序二进制文件的访问仅限于
经过身份验证的用户。 应用程序可能会发出如下命令:

% dacscheck -i $REMOTE_USER -rules /usr/local/cal/rules 对象

这将返回 0 的退出状态,如果 REMOTE_USER 被授予访问权限 对象;
否则将返回退出状态 1。 更好的选择是使用以下命令:

% dacscheck -icgi -rules /usr/local/cal/rules 对象

这将使用户未经身份验证,如果 REMOTE_USER 未设置或无效。

2. 文件/usr/local/cal/users/alice/rules/acl-cal1.0 包含用户的规则
alice 的“日历 1”,可能看起来像:








用户(“:爱丽丝”)


回报(1)





${Args::OP} eq“读取”


用户(“:鲍勃”)





此规则表示允许 alice 完全访问日历(没有
操作限制),但 bob 只有读访问权限。 数据检查
调用 /users/alice/cal-1?OP=create, /users/alice/cal-1?OP=update, 或
/users/alice/cal-1?OP=read 测试授权以执行创建、更新或
分别对日历进行读取操作。

3. 如果 alice 定义了一个 DACS 她称之为家庭的组,并添加了名字 julia 和
auggie 到该组,她可能会通过添加以下内容来修改上述规则:



${Args::OP} 等式“读取”
或 ${Args::OP} eq “更新”


用户(“%:爱丽丝家庭”)



此规则表示允许 alice-family 组的任何成员读取和更新
访问此日历。 命令:

% dacscheck -i julia /users/alice/cal-1?OP=更新

将报告授予访问权限。

4. alice 的组成员 alice-family 可能会在文件中指定
/usr/local/cal/users/alice/groups/family








用户(“:爱丽丝”)


回报(1)




此规则仅允许 alice 管理该组的成员资格,但她是自由的
修改规则以允许其他人管理她的组。

5. 作为这个应用程序的最后一个例子,alice 的规则也可能被访问
控制:








用户(“:爱丽丝”)


回报(1)




此规则仅允许 alice 管理该组的成员资格,但她是自由的
修改规则以允许其他人管理她的组。

6. 一个流行的开源 Web 日志分析器程序,用 Perl 编写,可以作为
CGI 程序。 该程序包括安全规定,可以限制访问
通过用户名(使用 REMOTE_USER作为
由网络服务器导出),或基于用户的 IP 地址(使用 REMOTE_ADDR).
实现了大约 40 行代码(加上各种初始化)
这个安全策略基本上可以用几行代码代替:

我的 $exit_value = 0;
系统“/usr/local/dacs/bin/dacscheck”、“-q”、“-icgi”、“-rules”、
"/usr/local/webstats/acls", "/webstats";
$exit_value = $? >> 8;
# print "dacscheck 为用户\"$remote_user\"\n" 返回了 $exit_value;
如果($exit_value != 0){
# dacscheck 拒绝访问; 打印消息并退出
退出 1;
}

# dacscheck 授予访问权限,所以继续

Tips:
这款 DACS 发行版包括一个 Perl 模块
(/usr/local/dacs/lib/perl/DACScheck.pm) 使 数据检查 使用起来更容易一些。
上面的例子可以写成:

使用 DACScheck.pm;
dacscheck_rules("/usr/local/webstats/acls");

我的 $result = dacscheck_cgi("/webstats");
如果($结果!= 1){
# dacscheck 拒绝访问; 打印消息并退出
退出 1;
}

# dacscheck 授予访问权限,所以继续

一个简单的 DACS 可以编写访问控制规则来复制程序的安全性
功能(使用 用户()从() 谓词,见 dacs.表达式(5)[22]),但是
可以轻松添加更复杂的策略,无需修改 Perl
再次编程。

诊断


如果访问被授予,程序退出 0,如果访问被拒绝,则退出 1。 任何其他退出状态
表示发生错误。

使用 onworks.net 服务在线使用 dacscheck


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    安装后F
    安装后F
    PostInstallerF 将安装所有
    Fedora Linux 和其他软件
    默认不包括,之后
    第一次运行 Fedora。 它的
    容易...
    下载 PostInstallerF
  • 2
    痕迹
    痕迹
    strace 项目已移至
    https://strace.io. strace is a
    诊断、调试和指导
    Linux 的用户空间跟踪器。 它被使用
    监控一个...
    下载跟踪
  • 3
    gMKV 提取 GUI
    gMKV 提取 GUI
    mkvextract 实用程序的 GUI(部分
    MKVToolNix),其中包含大多数(如果
    不是全部) mkvextract 的功能和
    mkvinfo 实用程序。 用 C#NET 4.0 编写,...
    下载 gMKVExtractGUI
  • 4
    JasperReports 库
    JasperReports 库
    JasperReports 库是
    世界上最流行的开源
    商业智能和报告
    引擎。 它完全是用 Java 编写的
    它能够......
    下载 JasperReports 库
  • 5
    冰沙书籍
    冰沙书籍
    Frappe Books 是免费和开源的
    桌面记账软件
    简单且经过精心设计的用户可以使用
    小企业和自由职业者。 它'...
    下载冰沙书籍
  • 6
    数字 Python
    数字 Python
    新闻:NumPy 1.11.2 是最后一个版本
    这将在 sourceforge 上制作。 轮子
    适用于 Windows、Mac 和 Linux 以及
    存档的源分发可以是四个...
    下载数值 Python
  • 更多 ”

Linux 命令

Ad