AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-13993

HTTP500's questions

Martin Hope
HTTP500
Asked: 2013-12-12 13:08:33 +0800 CST

使用 FreeIPA 进行集中式 sudo - 使用 SSSD 进行 sudoers

  • 6

我已经为集中式 sudo 设置了 FreeIPA,除了能够将 SSSD 用于 sudoers 之外,一切都运行良好。

如果我的客户端 /etc/nsswitch.conf 中有以下内容:

sudoers: files ldap

当 FreeIPA 服务器可用时,sudo 命令会根据需要工作。但是,我想使用 SSSD,以便在 FreeIPA 服务器不可用的情况下,sudo 仍然可以工作。

当我在客户端 /etc/nsswitch.conf 中有以下内容时:

sudoers: files sss

我的 /etc/sssd/sssd.conf 如下:

[domain/example.com]

cache_credentials = True
ipa_domain = example.com
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = host3.example.com
chpass_provider = ipa
ipa_server = _srv_, ipa.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
[sssd]
services = nss, pam, ssh, sudo
config_file_version = 2
domains = example.com
ldap_sudo_search_base = ou=SUDOers,dc=example,dc=com
.
.
.
[snip]

并尝试运行 sudo 我会得到:

不允许 user1 在 host3 上运行 sudo。将报告此事件。

这是一个不同的错误:

user1 不在 sudoers 文件中。将报告此事件。

这让我相信 SSSD 实际上已经从 FreeIPA 中检索了一些东西,但它得到的东西在某种程度上是错误的。我在 FreeIPA 服务器上的唯一 sudorule 是:

[root@ipa ~]# ipa sudorule-find
-------------------
1 Sudo Rule matched
-------------------
  Rule name: All
  Enabled: TRUE
  Host category: all
  Command category: all
  RunAs User category: all
  User Groups: admins
----------------------------
Number of entries returned 1
----------------------------

并且我发出 sudo 的用户在 admins 组中(当在 nsswitch.conf 中指定 ldap 时,它再次起作用)。

我错过了什么?

更新 1:

相信我的 sssd.conf 不正确,已更新为包括:

sudo_provider = ldap
ldap_uri = ldap://ipa.example.com
ldap_sudo_search_base = ou=SUDOers,dc=example,dc=com
ldap_sasl_mech = GSSAPI
ldap_sasl_authid = host/host3.example.com
ldap_sasl_realm = EXAMPLE.COM
krb5_server = ipa.example.com
[sssd]
services = nss, pam, ssh, sudo
config_file_version = 2
domains = example.com
.
.
.
[snip]

虽然得到相同的消息,即:

不允许 user1 在 host3 上运行 sudo。将报告此事件。

更新 2:

我打开了 SSSD 的调试,即编辑 /etc/sssd/sssd.conf 并添加:

debug_level = 5

然后我检查了 /var/log/sssd/sssd_example.com.log。在这里,我注意到 SSSD 不喜欢 CAPITALS 的值ldap_sudo_search_base,即当我有

ldap_sudo_search_base = ou=SUDOers,dc=example,dc=com

我注意到在日志中根本没有条目ldap_sudo_search_base。当我更改为小写时,ou=sudoers我看到了日志中的条目,例如:

(Thu Dec 12 18:58:31 2013) [sssd[be[example.com]]] [common_parse_search_base] (0x0100): Search base added: [SUDO][ou=sudoers,dc=example,dc=com][SUBTREE][]

我仍然得到相同的user1 is not allowed to run sudo on host3.结果,所以它仍然没有解决。

更新 3

(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [accept_fd_handler] (0x0400): Client connected!
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_cmd_get_version] (0x0200): Received client version [1].
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_cmd_get_version] (0x0200): Offered version [1].
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): name 'user1' matched without domain, user is user1
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): using default domain [(null)]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): name 'user1' matched without domain, user is user1
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): using default domain [(null)]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_cmd_parse_query_done] (0x0200): Requesting default options for [user1] from [<ALL>]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_user] (0x0200): Requesting info about [[email protected]]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_user] (0x0400): Returning info for user [[email protected]]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_rules] (0x0400): Retrieving default options for [user1] from [example.com]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)(name=defaults)(sudoUser=user1)(sudoUser=#1219400005)(sudoUser=%apache)(sudoUser=%superadmins)(sudoUser=%user1)(sudoUser=+*))(&(dataExpireTimestamp<=1387476127)))]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_rules] (0x2000): About to get sudo rules from cache
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(name=defaults)))]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_from_cache] (0x0400): Returning 0 rules for [<default options>@example.com]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): name 'user1' matched without domain, user is user1
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): using default domain [(null)]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): name 'user1' matched without domain, user is user1
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sss_parse_name_for_domains] (0x0200): using default domain [(null)]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_cmd_parse_query_done] (0x0200): Requesting rules for [user1] from [<ALL>]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_user] (0x0200): Requesting info about [[email protected]]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_user] (0x0400): Returning info for user [[email protected]]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_rules] (0x0400): Retrieving rules for [user1] from [example.com]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)(name=defaults)(sudoUser=user1)(sudoUser=#1219400005)(sudoUser=%apache)(sudoUser=%superadmins)(sudoUser=%user1)(sudoUser=+*))(&(dataExpireTimestamp<=1387476127)))]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_rules] (0x2000): About to get sudo rules from cache
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)(sudoUser=user1)(sudoUser=#1219400005)(sudoUser=%apache)(sudoUser=%superadmins)(sudoUser=%user1)(sudoUser=+*)))]
(Thu Dec 19 18:02:07 2013) [sssd[sudo]] [sudosrv_get_sudorules_from_cache] (0x0400): Returning 0 rules for [[email protected]]
(Thu Dec 19 18:02:11 2013) [sssd[sudo]] [client_recv] (0x0200): Client disconnected!
(Thu Dec 19 18:02:11 2013) [sssd[sudo]] [client_destructor] (0x2000): Terminated client [0x2095c60][18]
sudo
  • 1 个回答
  • 17301 Views
Martin Hope
HTTP500
Asked: 2013-12-10 15:54:02 +0800 CST

使用 FreeIPA 进行集中式 sudo - 如何指定所有命令?

  • 13

我很难理解 FreeIPA 的模型。FreeIPA手册指出:

FreeIPA 使用 sudo 命令组添加了一个额外的控制措施,它允许定义一组命令,然后将其作为一个命令应用于 sudo 配置。

但是他们的示例基本上是关于创建一个 sudo 命令组并将特定的sudo 命令添加到“文件”sudo 命令组中。vimless

例如从命令行:

ipa sudocmdgroup-add --desc 'File editing commands' files

ipa sudocmd-add --desc 'For editing files' '/usr/bin/vim'

ipa sudocmdgroup-add-member --sudocmds '/usr/bin/vim' files

但是你如何ALL像在 /etc/sudoers 中那样指定呢?这可以通配符(例如*)吗?

sudo
  • 2 个回答
  • 26561 Views
Martin Hope
HTTP500
Asked: 2013-10-01 14:24:32 +0800 CST

Red Hat Software Collections 1 Beta 频道有 0 个软件包?

  • -1

我想在 RHEL 6.x 机器上安装 PHP 5.4,如 Red Hat blog post中所述。

我有一个有效的订阅并已添加频道,但yum repolist显示频道的状态为 0。

rhel-x86_64-server-6-rhscl-1-beta Red Hat Software Collections 1 Beta (RHEL 6 Server x86_64) 0

我错过了什么?

更新:看起来即使我可以订阅频道,我也必须提出特殊要求。

那或者它是一个不同的渠道。在本文中它似乎也被称为“rhel-server-rhscl-6-beta-rpms”,但是当我尝试添加该频道时,我得到了愚蠢的异常错误,我认为这意味着该频道不存在.

Red Hat 在提供此功能方面确实做得很差。我想知道是不是故意的?

redhat
  • 2 个回答
  • 712 Views
Martin Hope
HTTP500
Asked: 2009-10-14 12:54:48 +0800 CST

帮助我理解 mk-heartbeat

  • 2

Seconds_Behind_Master来自 SHOW SLAVE STATUS 被认为是从属滞后的不可靠度量。mk-heartbeat 通常作为可靠的替代方案提供。

现在 mk-heartbeat 甚至不需要 Slave 运行。

http://www.maatkit.org/doc/mk-heartbeat.html

摘抄:

mk-heartbeat 是一个由 MySQL 和 PostgreSQL 两部分组成的复制延迟监控系统,它不需要 slave 工作(换句话说,它不依赖于 MySQL 上的 SHOW SLAVE STATUS)。

所以我的理解是你在主服务器上创建一个数据库/表,使用 --update 运行 mk-heartbeat,如下所示:

./mk-heartbeat -D heart --table beat -u heartbeat -p XXXXXXXXX --update -h 192.168.2.80

然后在从站上,您将 mk-heartbeat 指向主站上的数据库/表(即,您在主站上执行 GRANT 语句以授予从站权限)并使用 --monitor 运行,如下所示:

./mk-heartbeat -D heart --table beat -u heartbeat_slave -p XXXXXXXXX --monitor -h 192.168.2.80

我已经做到了这一点,即使在 MySQL 示例员工薪水表中一遍又一遍地更新 280 万+行(这会产生 Slave 滞后,至少根据不可靠的 Seconds_Behind_Master 而言),我从来没有看到 mk-heartbeat --monitor 的变化来自:

0s [  0.00s,  0.00s,  0.00s ]

也许是我没有产生足够的延迟,并且根据 mk-heartbeat 文档,复制事件在不到半秒的时间内传播,我可以期待看到零秒的延迟:

mk-heartbeat 的分辨率为一秒。这取决于通过 NTP 密切同步的主服务器和从服务器上的时钟。--update 检查发生在秒的边缘,而 --monitor 检查发生在秒之间。只要服务器的时钟没有太大偏差并且复制事件在不到半秒的时间内传播,mk-heartbeat 将报告零秒延迟。

(我的服务器时钟使用 NTP 并且同步。)

但是Seconds_Behind_Master落后了数百秒,所以我认为它们不会在不到半秒的时间内传播,所以我仍然不确定我是否能准确了解 mk-heartbeat 实用程序。

很想听听任何部署了这个工具来监控他们的 MySQL 复制的人。

提前致谢。

干杯

monitoring
  • 2 个回答
  • 2883 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve