首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为主厨Infra 'sudo‘资源编写厨师Inspec测试?

如何为主厨Infra 'sudo‘资源编写厨师Inspec测试?
EN

Stack Overflow用户
提问于 2022-11-08 22:58:20
回答 1查看 22关注 0票数 1

版本

  • 厨师工作站版本: 22.7.1006
  • 厨师InSpec版: 4.56.20
  • 厨师CLI版本: 5.6.1
  • 厨师生境版: 1.6.420
  • 测试厨房版本: 3.3.1
  • 烹饪风格版本: 7.32.1
  • 厨师Infra客户版: 17.10.0

我使用Kitchen提供3台虚拟机:

  • Ubuntu 16.04
  • Ubuntu 20.04
  • Ubuntu 22.04

通过在我的kitchen.yml中指定这一点:

代码语言:javascript
复制
platforms:
  - name: ubuntu-16.04
  - name: ubuntu-20.04
  - name: ubuntu-20.04

注意:我只提到上述情况,以防“sudo”在不同版本的Ubuntu上有不同的行为。

目标

编写Chef食谱,使用户能够执行“sudo”命令,并编写相应的Chef测试来验证它。

我试过的

基于https://docs.chef.io/resources/sudo/,我在菜谱中添加了以下内容:

代码语言:javascript
复制
sudo 'admin' do
  user 'user'
end

这将创建具有适当内容的/etc/sudoers.d/admin

代码语言:javascript
复制
# This file is managed by Chef Infra Client. Changes will be overwritten.

user ALL=(ALL) ALL

但没有在“sudo”组中添加“user”。

现在,当我试图编写基于https://docs.chef.io/inspec/resources/user/的Inspec测试时

代码语言:javascript
复制
describe user('user') do
  its('groups') { should include('sudo') }
end

测试失败,因为“用户”没有添加到“sudo”组中。

当我以“用户”身份登录时,我可以执行sudo命令。

我看到了2017年的如何利用厨师使新创建的用户成为sudo用户这个老问题,我确实尝试了以下几个问题:

代码语言:javascript
复制
group 'sudo' do
  group_name 'sudo'
  members 'user'
  action :modify
  append true
end

所以我的考试通过了。

但是现在,似乎有两种方法可以将'sudo‘特权给'user’,我不确定它们是否都是等价的。

我知道我可以编写一个测试来验证/etc/sudoers.d/admin的内容,但这似乎不是实现这个目标的最佳方法,特别是当不同版本的Ubuntu生成不同的文件时。

问题:

  1. 考虑到我想支持的Ubuntu版本,主厨Infra 'sudo‘资源是否执行所有必要的命令,Ubuntu需要将'sudo’特权给'user'?
  2. 是否有相应的Inspec 'sudo‘审计资源?
  3. 如果没有,我应该如何编写Chef测试来验证“用户”是否具有“sudo”特权?
EN

回答 1

Stack Overflow用户

发布于 2022-11-30 15:29:04

考虑到我想支持的Ubuntu版本,主厨Infra 'sudo‘资源是否执行所有必要的命令,Ubuntu需要将'sudo’特权给'user'?

sudo资源仅用于编辑sudoers.d文件,它不将用户添加到sudo组。见这个先前提出的问题。,以理解使用sudoers.d与向sudo组添加用户之间的区别。

是否有相应的Inspec 'sudo‘审计资源?如果没有,我应该如何编写Chef测试来验证“用户”是否具有“sudo”特权?

没有sudoers资源,但是您可以使用文件资源来验证sudoers文件的内容。

代码语言:javascript
复制
describe file('/etc/sudoers.d/admin') do
  its('content') { should match(%r{user ALL=\(ALL\) ALL}) }
end

总之,如果计划通过sudo资源向用户提供sudo权限,请使用inspec文件资源测试代码。如果您计划通过group资源授予sudo权限,那么您当前的inspec测试就可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74368094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档