Search code examples
gofile-iofile-permissions

What should I pass for the `perm` argument to ioutil.WriteFile?


ioutil.WriteFile takes a perm argument - if the file to write doesn't already exist, it is created with permissions perm:

func WriteFile(filename string, data []byte, perm os.FileMode) error

In the general case, is there a recommended value to pass for the perm argument?

More specifically, I am writing a file which is a transformation of an existing file. Is it recommended to read the permissions of the input file (using os.Stat) and use the same permissions for the output file?


Solution

  • In the general case, is there a recommended value to pass for the perm argument?

    0666. This is the value used by Go's os.Create, and is also the value of MODE_RW_UGO, used when a file is created by tools such as touch.

    More specifically, I am writing a file which is a transformation of an existing file. Is it recommended to read the permissions of the input file (using os.Stat) and use the same permissions for the output file?

    Other than pure cp, tools don't seem to do this. As above, tools that create new files generally just use 0666.