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
    • 最新
    • 标签
主页 / server / 问题 / 455008
Accepted
gozu
gozu
Asked: 2012-12-05 09:51:30 +0800 CST2012-12-05 09:51:30 +0800 CST 2012-12-05 09:51:30 +0800 CST

如何根据部署到的环境在 puppet 中生成自定义的 sudoers 文件?

  • 772

系统管理员存在于所有环境的 sudoers 文件中,但其他 sudoers 不存在。不同的环境都有略微不同的 sudoers。大多数时候,90% 的用户是相同的,10% 是不同的,所以我们不能只有一个 sudoers 文件来处理所有的事情。

现在,我们使用带有 10 个不同文件的 puppet,这些文件的名称如 sudoers.production1、sudoers.production2、sudoers.production3、sudoers.testing1、sudoers.staging1 等等。

Puppet 然后根据服务器的 $domain(例如:dbserver.staging1.acme.com)或 $hardwaremodel 选择要部署的文件。它工作正常,但维护这么多文件是一场噩梦。

我想根据服务器的域自动生成 sudoers 文件,并且只有一个大文件具有所有用户和所有环境的所有 sudoers 权限。看起来像的东西:

User_Alias ADMINS = abe, bob, carol, dave

case $domain {
 "staging1.acme.com" {
    #add dev1,dev2,tester1,tester2 to sudoers file 
  }
 "testing2.acme.com" {
    #add tester1, tester3, tester4 to sudoers file
  }    

最好的方法是什么?欢迎提出替代方案的建议。我将不胜感激任何提示。

更新 1:

出于安全原因,我们宁愿不连接位于 puppet 客户端上的文件夹中的一堆文件,以防有人将文件放在那里(恶意或非恶意)并破坏组合文件或在其中插入内容。

最重要的是,为了可用性,我们希望将 puppet 服务器上与 sudoers 相关的文件(片段或完整)的数量保持在 3(prod/stage/test)或最好是 1 个文件。该文件会(以某种方式)在 Puppet 服务器上生成 sudoers 文件,并向每个 Puppet 客户端发送一个自定义文件。

这样做的目的只是在单个文件中搜索用户名并比在 11 个文件中搜索更快地删除它。将用户添加到一堆环境中时,速度不会那么快,但只需要打开一个文件并查看,大大减少了遗漏的机会。

我们的 Sudo 版本是 1.6.9p8 所以我们不能使用 /sudoers.d 文件夹,只有一个 sudoers 文件。

更新2:

我一直在谷歌上搜索一些,我刚刚发现了这个,我在过去的一个小时里一直在看:

https://github.com/saz/puppet-sudo#readme

我不确定,但看起来它可能会成功。有人用过或听说过吗?

linux
  • 3 3 个回答
  • 7261 Views

3 个回答

  • Voted
  1. Best Answer
    Zoredache
    2012-12-05T09:59:46+08:002012-12-05T09:59:46+08:00

    什么版本的须藤?您的 sudo 版本是否支持使用#includedir选项将内容分解到片段目录中/etc/sudoers.d/?

    如果是这样,那么我建议您使用该功能来构建您的配置。

    将您的主配置文件传送到/etc/sudoers其中,其中包括您控制的每个主机共有的所有设置。然后将特定于角色的配置放入/etc/sudoers.d/.

    每个类或木偶部分负责更新与该类直接相关的 sudo 配置的一小部分。

    • 9
  2. silviud
    2012-12-05T15:11:48+08:002012-12-05T15:11:48+08:00

    您可以查看虚拟资源并了解:https ://puppet.com/docs/puppet/latest/lang_virtual.html 。

    这正是这样做的:在某些系统上,您“意识到”资源,而在某些系统上则没有。

    • 3
  3. ewwhite
    2012-12-05T09:59:39+08:002012-12-05T09:59:39+08:00

    您可以使用 Puppet 模板来完成...特定于站点的配置,为您需要的用户提供一个小的 ruby​​ 代码段/变量。(我稍后会发布一个例子)

    处理此问题的传统方法是在您的/etc/sudoers. 管理起来可能不那么麻烦。

    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

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