Puppet - 2.7.x - 设置 SGID

Puppet - 2.7.x - 设置 SGID

我正在尝试将一个模块傀儡化,以确保我在服务器上具有相同的路径来存储自定义 Web 应用程序的本地日志文件。因此,我想设置 SGID 以确保即使文件/目录归 apache 所有,属于文件管理器组的任何人仍然可以对相同资产进行 rwx。但是我在设置模式时遇到了问题,我尝试了数字 (2775) 和符号 (u+rwx、g+rwxs、o+rw),但似乎都不起作用。以下是我看到的结果:

  • 数字:看起来表现得像 775(完全忽略第一个值)。尽管根据文档,puppet 指出支持 2775,我怀疑它不支持 2.7.x。

  • 象征性:它有点工作,但我最终得到以下内容(注意小写的 t):drwxrwsrwt

还有其他方法吗?我是否应该只运行 Exec 并运行 shell 命令来执行 chmod g+s?

---更新 1.23.2014---

很奇怪,所以我进行了与 Zoredache 相同的测试,结果如下:

root@dev-a-1 /tmp/puppet # -> puppet --version
2.7.24

root@dev-a-1 /tmp/puppet # -> cat test.pp
file { '/tmp/puppet/test_dir': ensure => directory, mode => 2755 }

root@dev-a-1 /tmp/puppet # -> ls
total 24
drwxr-xr-x. 3 root root  4096 Jan 23 22:03 .
drwxrwxrwx. 8 root root 12288 Jan 23 22:00 ..
drwxr-sr-x. 2 root root  4096 Jan 23 22:03 test_dir
-rw-r--r--. 1 root root    67 Jan 23 22:03 test.pp

---更新 1.23.2014 #2---

我在上文中没有提到模式是在 hiera 配置文件中设置的。我没有提到这一点是因为我认为它不会导致问题。但是,当我在 hiera 配置中为模式(“2755”)加上引号后,一切都开始按预期运行。

答案1

对我来说似乎有用

root@srv:~# puppet --version
2.7.23

root@srv:~# cat test.pp
file {'/root/test.pp':
  mode => 2775
}

root@srv:~# puppet apply test.pp
notice: Finished catalog run in 0.06 seconds

root@srv:~# ls -al test.pp
-rwxrwsr-x 1 root root 40 Jan 22 22:54 test.pp

愚蠢的问题,但底层文件系统支持 sgid 对吧?尝试简化您的规则,也许在您的 puppet 运行中进行 strace,看看权限是否被设置,然后被您意想不到的东西恢复。

答案2

文件系统(在您的情况下是 /tmp)可能使用 nosuid 选项挂载。

相关内容