Maison >développement back-end >Golang >Comment définir avec précision les autorisations de fichiers dans Go à l'aide de « os.FileMode » ?

Comment définir avec précision les autorisations de fichiers dans Go à l'aide de « os.FileMode » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 17:57:01599parcourir

How to Precisely Set File Permissions in Go using `os.FileMode`?

Instanciation de os.FileMode pour la création/mise à jour de fichiers

L'instanciation de os.FileMode garantit correctement les paramètres d'autorisation appropriés pour les fichiers lors de la création ou de la mise à jour. De nombreux didacticiels recourent à la définition directe des bits d'autorisation, mais une approche plus précise consiste à utiliser le type os.FileMode.

Constantes personnalisées pour la définition des autorisations

En l'absence de paramètres prédéfinis constantes dans os ou syscall, vous pouvez déclarer les vôtres :

const (
    OS_READ = 04
    OS_WRITE = 02
    OS_EX = 01
    ...
    OS_ALL_RWX = OS_ALL_RW | OS_ALL_X
)

Exemple de paramètre d'autorisation de précision

Voici un exemple illustrant l'utilisation de constantes personnalisées :

func FileWrite(path string, r io.Reader, uid, gid int, perms string) (int64, error) {
    fileMode := os.FileMode(0)
    if perms[0] == '6' {
        fileMode |= OS_USER_RW
    } else if perms[0] == '7' {
        fileMode |= OS_USER_RWX
    }
    ...
    // Continue setting file mode based on the remaining characters of `perms`
    ...
    w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, fileMode)
    ...
}

Avantages de l'approche constante personnalisée

Les constantes personnalisées fournissent :

  • Mécanisme de définition des autorisations clair et portable
  • Élimination des nombres magiques et de la confusion potentielle
  • Flexibilité pour manipuler les autorisations en fonction des scénarios souhaités

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