使用Chef在Ubuntu 12.04上设置ACL

时间:2013-07-11 21:43:34

标签: ubuntu acl chef

我一直在试图弄清楚如何编写一个安装ACL包的配方,然后在启用它的情况下重新安装文件系统root:

  1. apt-get install acl
  2. 将“acl”添加到fstab
  3. 中的选项
  4. mount -o remount /
  5. 我对食谱的尝试是:

    case node[:platform]
    when "debian","ubuntu"
        package "acl" do
            action :install
        end
    
        mount "/" do
            options "acl"
            action [:remount, :enable]
        end
    end
    

    不幸的是(并不奇怪)厨师不知道如何读取/的现有fstab条目并在不改变任何其他内容的情况下添加acl,因此它会消除挂载点上的现有选项。关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:4)

找到了与Augeas合作的方法:

# Install ACL and remount the root volume with ACL enabled
case node[:platform]
when "debian","ubuntu"
    %w{acl augeas-tools}.each do |pkg|
        package pkg
    end

    execute "update_fstab" do
        command <<-EOF
            echo 'ins opt after /files/etc/fstab/*[file="/"]/opt[last()]
            set /files/etc/fstab/*[file="/"]/opt[last()] acl
            save' | augtool
            mount -o remount /
        EOF
        not_if "augtool match '/files/etc/fstab/*[file=\"/\"]/opt' | grep acl"
    end
end

我真的不喜欢这个解决方案,但似乎有效。不过必须有更好的方法,对吗?