Разбор разрешений для функции FileMode в Go
Функция os.FileMode преобразует разрешения из различных форматов перед установкой флагов. Эти форматы включают целые числа, восьмеричные представления и, возможно, другие формы.
При преобразовании целых чисел в os.FileMode функция не определяет явно, представлено ли целое число в восьмеричном или десятичном формате. Десятичное представление интерпретируется как обычное целое число.
Восьмеричное представление числа обычно используется для представления прав доступа к файлам в Unix-подобных системах. Чтобы явно указать восьмеричное число в Go, перед литералом ставится начальный ноль. Например, 0700 представляет восьмеричное число 700.
Одним важным аспектом, на который следует обратить внимание, является то, что os.FileMode представляет разрешения как 32-битное целое число без знака. Девять младших битов этого целого числа соответствуют стандартной структуре разрешений файлов Unix. Остальные 12 старших бит зарезервированы для указания специальных функций файла.
В вашем примере вызов os.FileMode(700) должен привести к получению двоичного значения 1-010-111-100, которое преобразуется в восьмеричное число. представление 274. Однако вы заметили, что права доступа к созданному файлу вместо этого были 254, что соответствует двоичному представлению. --w-r-xr--.
Это несоответствие можно объяснить тем, что в вашем двоичном представлении установлен один ведущий бит в десятой позиции. Этот бит расположен на неиспользуемой территории представления os.FileMode.
Для дальнейшего уточнения давайте разберем двоичное представление разрешений:
Поэтому при преобразовании целых чисел в os.FileMode крайне важно убедиться, что целочисленное представление представляет собой либо десятичное число, либо явно указанное восьмеричное число. Это позволит избежать непреднамеренных преобразований, которые могут привести к установке неправильных разрешений для файла.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3