2016-04-19 10 views
0

ディレクトリ内のすべてのファイル(たとえば、foo/bin/)を実行可能にするにはどうしたらいいですか?塩:すべてのファイルをfoo/bin/*に実行可能にする

塩のマスターがslsファイルを評価するとき、ミニオンのファイルがまだ作成されていない可能性があるので、これは簡単ではないと思います。

答えて

1

あなたが言及したフォルダにファイルを置くユーザーのために実行可能ファイルをumaskに与えるのはどうですか?

ディレクトリで作業するには、file.director.recurseを使用して内部のすべてを変更できます。 https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.recurse

/srv/stuff/substuf: 
    file.directory: 
    - user: fooapp 
    - group: users 
    - mode: 755 
    - makedirs: True 
    - recurse: 
     - user 
     - group 
     - mode 

追加のファイルのために作成するには、明示的に、その特定のユーザーとファイルを書き込むアプリケーションを割り当て、特定のumaskで(例えば。fooapp)を使用するを作成する必要があります。 しかし、私はsalt.states.userでumaskを設定する方法を見つけることができません。 suコマンドを自分で実行する必要があるかもしれません。

UPDATE: ​​

注:多くのオペレーティングシステムが許可していない ファイルを作成するには、実行権限を。これらの環境では、新しく作成されたファイル は、すべてのユーザーが の実行権限を常に無効にします。

恐らく、フォルダ内のすべてのファイルに対してchmod 500(u + rx)を実行するcrontabジョブを作成する必要があるかもしれません。しかし、特定のファイルについては、saltはコピーや管理プロセス中にあなたの許可を変更することができます。

+0

はい、実行可能ビットが設定されたumaskは動作しますが、これは他の多くのファイルに影響します。これが他の場所で混乱を招く恐れがあります。通常のファイル(実行されないファイル)に実行可能ビットが設定されていれば、奇妙に見えます。 – guettli

+0

特定のumaskを使用してユーザーを作成し、そのユーザーに特定のフォルダ、つまり「foo/bin /」の所有権を与えることができます。 Use umask + chown(salt.states.file.managed) – mootmoot

+0

私はまだそれを取得しません。ある特定のファイルに対してstates.file.managedを使用する方法を知っています。それは問題ありません。しかし、私はちょうどディレクトリ 'bin'にあるすべてのファイルのアドレス指定方法を知らない。シェル上では​​globingで簡単です: 'bin/*'、しかしstates.file.managed ...私は分かりません。ここにはドキュメントがあります:https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.managed – guettli

関連する問題