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

@@ -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

View File

@@ -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

View File

@@ -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
} }
} }