Heim > Backend-Entwicklung > Golang > Wie instanziiere ich os.FileMode in Go mit UID-, GID- und Oktalberechtigungen?

Wie instanziiere ich os.FileMode in Go mit UID-, GID- und Oktalberechtigungen?

Linda Hamilton
Freigeben: 2024-11-22 10:28:10
Original
979 Leute haben es durchsucht

How to Instantiate os.FileMode in Go with UID, GID, and Octal Permissions?

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
)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage