Heim >Backend-Entwicklung >Golang >Wie instanziiere ich os.FileMode in Go mit UID-, GID- und Oktalberechtigungen?
So instanziieren Sie os.FileMode ordnungsgemäß
In Go stellt der Typ os.FileMode die Dateimodusbits dar, die die Berechtigungen der Datei angeben. Mehrere Beispiele und Tutorials veranschaulichen die Dateierstellung, aber viele umgehen die ordnungsgemäße Instanziierung von os.FileMode und verlassen sich stattdessen auf das direkte Setzen von Berechtigungsbits.
Herausforderung
Man sucht nach einer Methode um os.FileMode korrekt zu instanziieren, indem die bereitgestellten UID-, GID- und Berechtigungswerte verwendet werden, die als Oktal dargestellt werden Ziffern.
Lösung
Anstatt sich auf vordefinierte Konstanten zu verlassen, kann Folgendes verwendet werden:
const ( OS_READ = 04 OS_WRITE = 02 OS_EX = 01 OS_USER_SHIFT = 6 OS_GROUP_SHIFT = 3 OS_OTH_SHIFT = 0 OS_USER_R = OS_READ << OS_USER_SHIFT OS_USER_W = OS_WRITE << OS_USER_SHIFT OS_USER_X = OS_EX << OS_USER_SHIFT OS_USER_RW = OS_USER_R | OS_USER_W OS_USER_RWX = OS_USER_RW | OS_USER_X OS_GROUP_R = OS_READ << OS_GROUP_SHIFT OS_GROUP_W = OS_WRITE << OS_GROUP_SHIFT OS_GROUP_X = OS_EX << OS_GROUP_SHIFT OS_GROUP_RW = OS_GROUP_R | OS_GROUP_W OS_GROUP_RWX = OS_GROUP_RW | OS_GROUP_X OS_OTH_R = OS_READ << OS_OTH_SHIFT OS_OTH_W = OS_WRITE << OS_OTH_SHIFT OS_OTH_X = OS_EX << OS_OTH_SHIFT OS_OTH_RW = OS_OTH_R | OS_OTH_W OS_OTH_RWX = OS_OTH_RW | OS_OTH_X OS_ALL_R = OS_USER_R | OS_GROUP_R | OS_OTH_R OS_ALL_W = OS_USER_W | OS_GROUP_W | OS_OTH_W OS_ALL_X = OS_USER_X | OS_GROUP_X | OS_OTH_X OS_ALL_RW = OS_ALL_R | OS_ALL_W OS_ALL_RWX = OS_ALL_RW | OS_GROUP_X )
Mit diesen Konstanten können Berechtigungen explizit angegeben werden:
dir_file_mode := os.ModeDir | (OS_USER_RWX | OS_ALL_R) os.MkdirAll(dir_str, dir_file_mode)
Diese Methode ermöglicht eine präzise Kontrolle über Dateiberechtigungen und macht gleichzeitig die Notwendigkeit einer manuellen Festlegung von Berechtigungen überflüssig Bits.
Das obige ist der detaillierte Inhalt vonWie instanziiere ich os.FileMode in Go mit UID-, GID- und Oktalberechtigungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!