Maison  >  Article  >  développement back-end  >  Comment instancier os.FileMode dans Go avec les autorisations UID, GID et Octal ?

Comment instancier os.FileMode dans Go avec les autorisations UID, GID et Octal ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-22 10:28:10924parcourir

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

Comment instancier correctement os.FileMode

Dans Go, le type os.FileMode représente les bits du mode fichier qui spécifient les autorisations du fichier. Plusieurs exemples et tutoriels illustrent la création de fichiers, mais beaucoup contournent l'instanciation appropriée de os.FileMode, s'appuyant plutôt sur la définition directe des bits d'autorisation.

Défi

On cherche une méthode pour instancier correctement os.FileMode, en utilisant les valeurs UID, GID et autorisation fournies représentées en octal chiffres.

Solution

Au lieu de s'appuyer sur des constantes prédéfinies, les éléments suivants peuvent être utilisés :

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
)

Avec ces constantes, les autorisations peuvent être spécifié explicitement :

dir_file_mode := os.ModeDir | (OS_USER_RWX | OS_ALL_R)
os.MkdirAll(dir_str, dir_file_mode)

Cette méthode permet un contrôle précis sur les autorisations des fichiers tout en éliminant le besoin de définir manuellement l'autorisation morceaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn