如何使用Itamae setuid

时间:2016-10-14 12:02:45

标签: ruby itamae

我想使用Itamae更改文件属性,所以我写了这个:

file '/usr/local/bin/jobber' do
  action :edit
  owner 'jobber_client'
  group 'root'
  mode '04755'
end

ownergroup属性已按预期更改,但mode仅更改为755而未对文件执行setuid

如何使用setuid执行Itamae

2 个答案:

答案 0 :(得分:2)

类似问题有一个bug filed against Chef,似乎已修复here

如果Itamae也受到同样问题的影响,那么先创建文件然后再修改它似乎是最好的解决方法。

答案 1 :(得分:1)

Itamae不会忽略' 4xxx',但它先调用chmod然后再调用chmod。问题是:chown删除chmod设置的suid。

你可以用

看到它
itamae local recipe.rb --log-level=debug

交换两个ifs的位置:

        if attributes.mode
          run_specinfra(:change_file_mode, change_target, attributes.mode)
        end

        if attributes.owner || attributes.group
          run_specinfra(:change_file_owner, change_target, attributes.owner, attributes.group)
        end
def action_create(options)中的

https://github.com/itamae-kitchen/itamae/blob/master/lib/itamae/resource/file.rb的def action_edit(选项)可以解决问题

我会提交补丁。

与此同时,这似乎有效:

jobber = '/usr/local/bin/jobber'

file jobber do
  action :edit
  owner 'jobber_client'
  group 'root'
  mode '0755'
end

execute "setuid #{jobber}" do
  command "chmod u+s \"#{jobber}\""
end