Parsing-Berechtigungen für die FileMode-Funktion in Go
Die os.FileMode-Funktion konvertiert Berechtigungen aus verschiedenen Formaten, bevor die Flags gesetzt werden. Zu diesen Formaten gehören Ganzzahlen, Oktaldarstellungen und möglicherweise andere Formen.
Bei der Konvertierung von Ganzzahlen in os.FileMode erkennt die Funktion nicht explizit, ob die Ganzzahl oktal oder dezimal dargestellt wird. Die dezimale Darstellung wird als reguläre Ganzzahl interpretiert.
Die oktale Darstellung einer Zahl wird üblicherweise zur Darstellung von Dateiberechtigungen in Unix-ähnlichen Systemen verwendet. Um in Go explizit eine Oktalzahl anzugeben, wird dem Literal eine führende Null vorangestellt. Beispielsweise stellt 0700 die Oktalzahl 700 dar.
Ein wichtiger Aspekt, den es zu beachten gilt, ist, dass os.FileMode Berechtigungen als 32-Bit-Ganzzahl ohne Vorzeichen darstellt. Die neun niedrigstwertigen Bits dieser Ganzzahl entsprechen der Standard-Unix-Dateiberechtigungsstruktur. Die verbleibenden 12 höchstwertigen Bits sind für die Angabe spezieller Dateifunktionen reserviert.
In Ihrem Beispiel sollte der Aufruf von os.FileMode(700) zum Binärwert 1-010-111-100 führen, der in das Oktal übersetzt wird Darstellung 274. Sie haben jedoch festgestellt, dass die Berechtigungen für die erstellte Datei stattdessen 254 waren, was der binären Darstellung --w-r-xr-- entspricht.
Diese Diskrepanz kann auf die Tatsache zurückgeführt werden, dass ein führendes Bit an der zehnten Stelle wird in Ihrer Binärdarstellung gesetzt. Dieses Bit befindet sich im ungenutzten Bereich der os.FileMode-Darstellung.
Zur weiteren Verdeutlichung schlüsseln wir die binäre Darstellung der Berechtigungen auf:
Daher ist es bei der Konvertierung von Ganzzahlen in os.FileMode wichtig, sicherzustellen, dass die Die Ganzzahldarstellung ist entweder eine Dezimalzahl oder eine explizit angegebene Oktalzahl. Dadurch werden unbeabsichtigte Konvertierungen vermieden, die dazu führen könnten, dass falsche Berechtigungen für die Datei festgelegt werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3