in cookbooks/aws-parallelcluster-test/libraries/helpers.rb [83:110]
def check_sudoers_permissions(sudoers_file, user, run_as, command_alias, *commands)
bash "check user #{user} can sudo as user #{run_as} on commands #{commands.join(',')}" do
cwd Chef::Config[:file_cache_path]
code <<-TEST
if [[ ! -f "#{sudoers_file}" ]]; then
>&2 echo "Expected sudoers file does not exist: #{sudoers_file}"
exit 1
fi
expected_user_line="#{user} ALL = (#{run_as}) NOPASSWD: #{command_alias}"
actual_user_line=$(grep "^#{user} .* #{command_alias}" "#{sudoers_file}")
if [[ "$actual_user_line" != "$expected_user_line" ]]; then
>&2 echo "Expected user line in #{sudoers_file}: $expected_user_line"
>&2 echo "Actual user line in #{sudoers_file}: $actual_user_line"
exit 1
fi
expected_commands_line="Cmnd_Alias #{command_alias} = #{commands.join(',')}"
actual_commands_line=$(grep "Cmnd_Alias #{command_alias}" "#{sudoers_file}")
if [[ "$actual_commands_line" != "$expected_commands_line" ]]; then
>&2 echo "Expected commands line in #{sudoers_file}: $expected_commands_line"
>&2 echo "Actual commands line in #{sudoers_file}: $actual_commands_line"
exit 1
fi
TEST
end
end