Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Bug] Set file mode explicitly for regular files (#1323)
Set file mode explicitly for regular files * 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](https://pkg.go.dev/os#Create), which, by default, creates files with mode 0666 (before applying `umask`). See the [source code](https://github.com/golang/go/blob/de5b418bea70aaf27de1f47e9b5813940d1e15a4/src/os/file.go#L357-L364) 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](https://github.com/nginxinc/nginx-gateway-fabric/assets/20109646/b621c7de-2465-4c5a-988b-4cf625e5dca7) * Solution: This PR sets the file mode explicitly.
- Loading branch information