util_unix.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright (C) 2019-2023 Nicola Murino
  2. //
  3. // This program is free software: you can redistribute it and/or modify
  4. // it under the terms of the GNU Affero General Public License as published
  5. // by the Free Software Foundation, version 3.
  6. //
  7. // This program is distributed in the hope that it will be useful,
  8. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. // GNU Affero General Public License for more details.
  11. //
  12. // You should have received a copy of the GNU Affero General Public License
  13. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  14. //go:build unix
  15. package util
  16. import (
  17. "strconv"
  18. "syscall"
  19. "github.com/drakkan/sftpgo/v2/internal/logger"
  20. )
  21. // SetUmask sets the specified umask
  22. func SetUmask(val string) {
  23. if val == "" {
  24. return
  25. }
  26. umask, err := strconv.ParseUint(val, 8, 31)
  27. if err != nil {
  28. logger.Error(logSender, "", "invalid umask %q: %v", val, err)
  29. return
  30. }
  31. logger.Debug(logSender, "", "set umask to: %d, configured value: %q", umask, val)
  32. syscall.Umask(int(umask))
  33. }