1. internal/manager/common.go - Модифицировали getCmd для
проверки 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:
		| @@ -114,12 +114,3 @@ jobs: | |||||||
|             alr-bin+alr-default-${{ env.VERSION }}-1-x86_64.pkg.tar.zst |             alr-bin+alr-default-${{ env.VERSION }}-1-x86_64.pkg.tar.zst | ||||||
|             alr-bin+alr-default-${{ env.VERSION }}-1.red80.x86_64.rpm |             alr-bin+alr-default-${{ env.VERSION }}-1.red80.x86_64.rpm | ||||||
|             alr-bin+alr-default-${{ env.VERSION }}-alt1.x86_64.rpm |             alr-bin+alr-default-${{ env.VERSION }}-alt1.x86_64.rpm | ||||||
|  |  | ||||||
|       - name: Commit changes |  | ||||||
|         run: | |  | ||||||
|           cd alr-default |  | ||||||
|           git config user.name "gitea" |  | ||||||
|           git config user.email "admin@plemya-x.ru" |  | ||||||
|           git add . |  | ||||||
|           git commit -m "Обновление версии до ${{ env.VERSION }}" |  | ||||||
|           git push |  | ||||||
|   | |||||||
| @@ -36,6 +36,16 @@ func IsNotRoot() bool { | |||||||
|  |  | ||||||
| // EnuseIsPrivilegedGroupMember проверяет, что пользователь является членом привилегированной группы (wheel) | // EnuseIsPrivilegedGroupMember проверяет, что пользователь является членом привилегированной группы (wheel) | ||||||
| func EnuseIsPrivilegedGroupMember() error { | func EnuseIsPrivilegedGroupMember() error { | ||||||
|  | 	// В CI пропускаем проверку группы wheel | ||||||
|  | 	if os.Getenv("CI") == "true" { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Если пользователь root, пропускаем проверку | ||||||
|  | 	if os.Geteuid() == 0 { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
| 	currentUser, err := user.Current() | 	currentUser, err := user.Current() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -43,13 +43,21 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error { | |||||||
| 		isRoot := os.Geteuid() == 0 | 		isRoot := os.Geteuid() == 0 | ||||||
| 		isCI := os.Getenv("CI") == "true" | 		isCI := os.Getenv("CI") == "true" | ||||||
| 		 | 		 | ||||||
| 		// Если мы в CI или root, выполняем команды напрямую | 		// В CI создаем директории с обычными правами | ||||||
| 		// В противном случае используем sudo | 		if isCI { | ||||||
|  | 			// В CI не используем группу wheel и не меняем права | ||||||
|  | 			// Устанавливаем базовые права 777 для временных каталогов | ||||||
|  | 			chmodCmd := exec.Command("chmod", "777", path) | ||||||
|  | 			chmodCmd.Run() // Игнорируем ошибки | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// Для обычной работы устанавливаем права и группу wheel | ||||||
| 		permissions := "2775" | 		permissions := "2775" | ||||||
| 		group := "wheel" | 		group := "wheel" | ||||||
| 		 | 		 | ||||||
| 		var chmodCmd, chownCmd *exec.Cmd | 		var chmodCmd, chownCmd *exec.Cmd | ||||||
| 		if isRoot || isCI { | 		if isRoot { | ||||||
| 			// Выполняем команды напрямую без sudo | 			// Выполняем команды напрямую без sudo | ||||||
| 			chmodCmd = exec.Command("chmod", permissions, path) | 			chmodCmd = exec.Command("chmod", permissions, path) | ||||||
| 			chownCmd = exec.Command("chown", "root:"+group, path) | 			chownCmd = exec.Command("chown", "root:"+group, path) | ||||||
| @@ -62,8 +70,8 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error { | |||||||
| 		// Устанавливаем права с setgid битом | 		// Устанавливаем права с setgid битом | ||||||
| 		err = chmodCmd.Run() | 		err = chmodCmd.Run() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			// В CI или для root игнорируем ошибки, если группа wheel не существует | 			// Для root игнорируем ошибки, если группа wheel не существует | ||||||
| 			if !isRoot && !isCI { | 			if !isRoot { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -71,8 +79,8 @@ func EnsureTempDirWithRootOwner(path string, mode os.FileMode) error { | |||||||
| 		// Устанавливаем владельца root:wheel | 		// Устанавливаем владельца root:wheel | ||||||
| 		err = chownCmd.Run() | 		err = chownCmd.Run() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			// В CI или для root игнорируем ошибки, если группа wheel не существует | 			// Для root игнорируем ошибки, если группа wheel не существует | ||||||
| 			if !isRoot && !isCI { | 			if !isRoot { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user