LoginSignup
0
0

More than 1 year has passed since last update.

【ルール説明・safety】risky-octal

Last updated at Posted at 2022-12-18

こちらの記事はAnsible lint Advent Calendar 2022 18日目の記事になります。

今回はルールrisky-octalについて説明します。

risky-octal

risky-octalはファイルやディレクトリのパーミッションが8進数で記載された場合先頭の0を含むもしくはu+rwxやu=rw,g=r,o=rなどの記号モードで書かれているかを検証します。

YAMLで整数または8進数の値を使用すると、予期しない動作になることがあります。たとえば、YAMLローダーは0644を10進数の420として解釈しますが、644と記載すると意図した結果にならない時があります。

以下はパーミッションを設定する機能があるモジュールです。(他にもあるかもしれません)

また上記のそれぞれのAnsibleモジュールのパーミッションの設定項目の説明を見る限り8進数で指定した方が良いみたいです。

禁止事項として記載はされてはないのですが、u+rwxやu=rw,g=r,o=rなどの記号モードは採用しない方が良いような雰囲気はそれぞれのモジュールの説明からは読み取れます。

問題のあるコード

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Unsafe example of declaring Numeric file permissions
      ansible.builtin.file:
        path: /etc/foo.conf
        owner: foo
        group: foo
        mode: 644

修正されたコードその1

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Safe example of declaring Numeric file permissions (1st solution)
      ansible.builtin.file:
        path: /etc/foo.conf
        owner: foo
        group: foo
        mode: 0644 # <- 先頭に「0」を付与する

修正されたコードその2

---
- name: Example playbook
  hosts: localhost
  tasks:
    - name: Safe example of declaring Numeric file permissions (2nd solution)
      ansible.builtin.file:
        path: /etc/foo.conf
        owner: foo
        group: foo
        mode: "0644" # <- ダブルクウォートで囲み文字列に変換する

パーミッションを設定しないとどのような権限でファイルやディレクトリが作成されるのか

しっかり調べてないですがおそらくシステムのunmaskの設定によると思われます。CentOSだとファイル作成時のパーミッションは644、ディレクトリ作成時は775です。これは大きすぎる権限かもしれません。

しかしAnsible lintを採用すればこれらは解決されます。Ansible lintではファイルやディレクトリの作成時はパーミションが付与されていないとエラーになりますがこれはrisky-file-permissionsにより検証されます。

Ansibleでファイルやディレクトリを作成する際は常にパーミッションに注意を払います。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0