Что я должен передать для аргумента `perm` ioutil.WriteFile? - PullRequest
0 голосов
/ 08 мая 2019

ioutil.WriteFile принимает аргумент perm - если файл для записи еще не существует, он создается с разрешениями perm:

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

В общем случае есть ли рекомендуемое значение для аргумента perm?

Более конкретно, я пишу файл, который является преобразованием существующего файла. Рекомендуется ли прочитать разрешения для входного файла (используя os.Stat) и использовать те же разрешения для выходного файла?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Нет стандартного разрешения, которое "обычно рекомендуется".Это больше вопрос ОС, чем вопрос Go.

  • Хотите ли вы, чтобы ваш файл был исполняемым?
  • Хотите, чтобы он был доступен для записи?
  • Хотите ли вы, чтобы другие учетные записи имели к нему доступ и с какими разрешениями

Если вы берете существующий файл и преобразуете его в выходной файл, и для вашего приложения логически нормально иметь обафайлы с одинаковыми разрешениями, тогда копирование разрешений звучит как разумная идея (если только вы не предвидите проблемы безопасности).

0 голосов
/ 08 мая 2019

В общем случае есть ли рекомендуемое значение для аргумента perm?

0666.Это значение, используемое Go * os.Create, а также значение MODE_RW_UGO, используемое при создании файла такими инструментами, как touch.

Более конкретно, я пишу файл, который является преобразованием существующего файла.Рекомендуется ли читать разрешения входного файла (используя os.Stat) и использовать те же разрешения для выходного файла?

Кроме чистых cp, инструментыкажется, не делают этого.Как и выше, инструменты, которые создают новые файлы, обычно просто используют 0666.

...