github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/terraform/parser/resolvers/writable.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package resolvers 5 6 import ( 7 "os" 8 "syscall" 9 ) 10 11 func isWritable(path string) bool { 12 info, err := os.Stat(path) 13 if err != nil { 14 return false 15 } 16 17 if !info.IsDir() { 18 return false 19 } 20 21 // Check if the user bit is enabled in file permission 22 if info.Mode().Perm()&(1<<(uint(7))) == 0 { 23 return false 24 } 25 26 var stat syscall.Stat_t 27 if err = syscall.Stat(path, &stat); err != nil { 28 return false 29 } 30 31 if uint32(os.Geteuid()) != stat.Uid { 32 return false 33 } 34 35 return true 36 }