yassy's note

なんかかきます

Puppetにおけるディレクトリ作成時の権限仕様

※過去にまとめたwikiからの移行記事

puppetでは、fileリソースタイプを使用してディレクトリを作成すると、 読み取り許可が設定されている場合に実行権限が付加される仕様がある。

具体例

/tmp直下にtestディレクトリを作成。 root:wheelの644で設定する。

file {'/tmp/test':
        ensure => directory,
        owner => 'root',
        group => 'wheel',
        mode => '0644',
}

実行する。

[vagrant@localhost ~]$ sudo puppet apply directory.pp
Notice: Compiled catalog for localhost.localdomain in environment production in 0.07 seconds
Notice: /Stage[main]/Main/File[/tmp/test]/ensure: created
Notice: Applied catalog in 0.02 seconds
[vagrant@localhost ~]$
[vagrant@localhost ~]$
[vagrant@localhost ~]$ ls -l /tmp/
total 40
drwxr-xr-x. 2 root wheel  4096 Nov 30 13:19 test   #rwxr-xr-x(655)
-rw-r--r--. 1 root root  22256 Nov 24 07:27 vboxguest-Module.symvers
-rw-------. 1 root root    286 Nov 23 10:29 yum_save_tx-2018-11-23-10-29tO5wVu.yumtx
-rw-------. 1 root root    286 Nov 23 10:33 yum_save_tx-2018-11-23-10-33Zm7Doq.yumtx
-rw-------. 1 root root    286 Nov 24 09:47 yum_save_tx-2018-11-24-09-47zwLb4x.yumtx

testディレクトリのmodeは644に指定しているにもかかわらず、実際は655で作成されている。
これは仕様であり、puppetでは読み取り許可が設定されている場所に実行許可を設定する。

リソースタイプドキュメントより引用

When specifying numeric permissions for directories, Puppet sets the search permission wherever the read permission is set.

ディレクトリに対する数値アクセス権を指定する場合、Puppetは読み取り許可が設定されている場所で検索許可を設定します。