版本
我使用Kitchen提供3台虚拟机:
通过在我的kitchen.yml中指定这一点:
platforms:
- name: ubuntu-16.04
- name: ubuntu-20.04
- name: ubuntu-20.04注意:我只提到上述情况,以防“sudo”在不同版本的Ubuntu上有不同的行为。
目标
编写Chef食谱,使用户能够执行“sudo”命令,并编写相应的Chef测试来验证它。
我试过的
基于https://docs.chef.io/resources/sudo/,我在菜谱中添加了以下内容:
sudo 'admin' do
user 'user'
end这将创建具有适当内容的/etc/sudoers.d/admin:
# 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测试时
describe user('user') do
its('groups') { should include('sudo') }
end测试失败,因为“用户”没有添加到“sudo”组中。
当我以“用户”身份登录时,我可以执行sudo命令。
我看到了2017年的如何利用厨师使新创建的用户成为sudo用户这个老问题,我确实尝试了以下几个问题:
group 'sudo' do
group_name 'sudo'
members 'user'
action :modify
append true
end所以我的考试通过了。
但是现在,似乎有两种方法可以将'sudo‘特权给'user’,我不确定它们是否都是等价的。
我知道我可以编写一个测试来验证/etc/sudoers.d/admin的内容,但这似乎不是实现这个目标的最佳方法,特别是当不同版本的Ubuntu生成不同的文件时。
问题:
发布于 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文件的内容。
describe file('/etc/sudoers.d/admin') do
its('content') { should match(%r{user ALL=\(ALL\) ALL}) }
end总之,如果计划通过sudo资源向用户提供sudo权限,请使用inspec文件资源测试代码。如果您计划通过group资源授予sudo权限,那么您当前的inspec测试就可以工作了。
https://stackoverflow.com/questions/74368094
复制相似问题