Skip to content

[Bug] File mode tests for regular files pass only with specific umask values #1328

Closed
@kevin85421

Description

@kevin85421

Describe the bug

  • As shown in the following code snippet, the function ensureFiles checks the file mode for both regular files and secret files.
    https://github.com/nginxinc/nginx-gateway-fabric/blob/6d4cfd7f0de32e9f98dae358cb6cec93529109a5/internal/mode/static/nginx/file/manager_test.go#L43-L47

  • The function ReplaceFiles in nginx/file/manager.go creates files by internally calling os.Create, which, by default, creates files with mode 0666 (before applying umask). See the source code of os.Create for more details.

  • The function writeFile changes the mode of secret files to 0640 by calling chmod, but does nothing for regular files. Hence, the check Expect(info.Mode()).To(Equal(os.FileMode(0o644))) in nginx/file/manager_test.go only passes for umask with specific values.

  • In my environment, the umask value is 002. Therefore, the mode for regular files will be 0666 - 0002 = 0664, causing the unit test to fail. In the following screenshot, 420 is 0o644, and 436 is 0o664.
    Screen Shot 2023-12-02 at 6 05 36 PM

To Reproduce

  • Step 1: Set umask to 002.
  • Step 2: Run make unit-test.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions