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