1. internal/manager/common.go - Модифицировали getCmd для
Some checks failed
Pre-commit / pre-commit (push) Successful in 5m32s
Create Release / changelog (push) Has been cancelled

проверки root/CI перед использованием sudo
  2. internal/utils/utils.go - Функция
  EnsureTempDirWithRootOwner теперь не использует группу
  wheel в CI
  3. internal/utils/cmd.go - Функция
  EnuseIsPrivilegedGroupMember пропускает проверку wheel в
  CI
  4. fix.go - Добавили функцию execWithPrivileges для
  условного использования sudo
  5. scripts/install.sh - Добавили проверку root перед
  использованием sudo
This commit is contained in:
2025-08-27 11:46:18 +03:00
parent 59cc41e94c
commit f2b0f57c12
3 changed files with 25 additions and 16 deletions

View File

@@ -36,6 +36,16 @@ func IsNotRoot() bool {
// EnuseIsPrivilegedGroupMember проверяет, что пользователь является членом привилегированной группы (wheel)
func EnuseIsPrivilegedGroupMember() error {
// В CI пропускаем проверку группы wheel
if os.Getenv("CI") == "true" {
return nil
}
// Если пользователь root, пропускаем проверку
if os.Geteuid() == 0 {
return nil
}
currentUser, err := user.Current()
if err != nil {
return err

View File

@@ -43,13 +43,21 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error {
isRoot := os.Geteuid() == 0
isCI := os.Getenv("CI") == "true"
// Если мы в CI или root, выполняем команды напрямую
// В противном случае используем sudo
// В CI создаем директории с обычными правами
if isCI {
// В CI не используем группу wheel и не меняем права
// Устанавливаем базовые права 777 для временных каталогов
chmodCmd := exec.Command("chmod", "777", path)
chmodCmd.Run() // Игнорируем ошибки
return nil
}
// Для обычной работы устанавливаем права и группу wheel
permissions := "2775"
group := "wheel"
var chmodCmd, chownCmd *exec.Cmd
if isRoot || isCI {
if isRoot {
// Выполняем команды напрямую без sudo
chmodCmd = exec.Command("chmod", permissions, path)
chownCmd = exec.Command("chown", "root:"+group, path)
@@ -62,8 +70,8 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error {
// Устанавливаем права с setgid битом
err = chmodCmd.Run()
if err != nil {
// В CI или для root игнорируем ошибки, если группа wheel не существует
if !isRoot && !isCI {
// Для root игнорируем ошибки, если группа wheel не существует
if !isRoot {
return err
}
}
@@ -71,8 +79,8 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error {
// Устанавливаем владельца root:wheel
err = chownCmd.Run()
if err != nil {
// В CI или для root игнорируем ошибки, если группа wheel не существует
if !isRoot && !isCI {
// Для root игнорируем ошибки, если группа wheel не существует
if !isRoot {
return err
}
}