我应该为ioutil.WriteFile的`perm`参数传递什么?

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?

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.

There is no standard permission that's "generally recommended". This is more of an OS question than a Go question.

  • Do you want your file to be executable?
  • Do you want it to be writable?
  • Do you want other accounts to be able to access it and with which permissions

If you're taking an existing file and transforming it to the output file, and it's logically OK for your application to have both files with the same permissions, then copying permissions sounds like a reasonable idea (unless you foresee security issues).