gitech
1// Copyright 2022 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4//go:build !windows
5
6package util7
8import (9"os"10
11"golang.org/x/sys/unix"12)
13
14var defaultUmask int15
16func init() {17// at the moment, the umask could only be gotten by calling unix.Umask(newUmask)18// use 0o077 as temp new umask to reduce the risks if this umask is used anywhere else before the correct umask is recovered19tempUmask := 0o07720defaultUmask = unix.Umask(tempUmask)21unix.Umask(defaultUmask)22}
23
24func ApplyUmask(f string, newMode os.FileMode) error {25mod := newMode & ^os.FileMode(defaultUmask)26return os.Chmod(f, mod)27}
28