убрана лишняя зависимость bindfs и избыточное использование дополнительного пользователя alr
This commit is contained in:
		| @@ -16,8 +16,44 @@ | ||||
|  | ||||
| package utils | ||||
|  | ||||
| import "golang.org/x/sys/unix" | ||||
| import ( | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"strings" | ||||
|  | ||||
| 	"golang.org/x/sys/unix" | ||||
| ) | ||||
|  | ||||
| func NoNewPrivs() error { | ||||
| 	return unix.Prctl(unix.PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) | ||||
| } | ||||
|  | ||||
| // EnsureTempDirWithRootOwner создает каталог в /tmp/alr с правами для группы wheel | ||||
| // Все каталоги в /tmp/alr принадлежат root:wheel с правами 775 | ||||
| // Для других каталогов использует стандартные права | ||||
| func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error { | ||||
| 	if strings.HasPrefix(path, "/tmp/alr") { | ||||
| 		// Сначала создаем директорию обычным способом | ||||
| 		err := os.MkdirAll(path, mode) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		 | ||||
| 		// Все каталоги в /tmp/alr доступны для группы wheel | ||||
| 		// Устанавливаем setgid бит (2775), чтобы новые файлы наследовали группу | ||||
| 		permissions := "2775" | ||||
| 		group := "wheel" | ||||
| 		 | ||||
| 		// Устанавливаем права с setgid битом | ||||
| 		err = exec.Command("sudo", "chmod", permissions, path).Run() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		 | ||||
| 		// Устанавливаем владельца root:wheel | ||||
| 		return exec.Command("sudo", "chown", "root:"+group, path).Run() | ||||
| 	} | ||||
| 	 | ||||
| 	// Для остальных каталогов обычное создание | ||||
| 	return os.MkdirAll(path, mode) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user