본문 바로가기
운영체제(OS)/Linux

Ubuntu 24.04 AppImage SUID sandbox 실행 오류 해결

by JLearn 2026. 7. 18.
반응형

Ubuntu 24.04에서 Electron 또는 Chromium 기반 AppImage를 실행하면 chrome-sandbox 권한과 관련된 오류가 발생할 수 있습니다.

예를 들어 다음과 같이 AppImage를 실행했다고 가정합니다.

chmod +x SomeApp-x86_64.AppImage
./SomeApp-x86_64.AppImage

실행 과정에서 아래와 같은 오류가 출력될 수 있습니다.

[FATAL:sandbox/linux/suid/client/setuid_sandbox_host.cc:166]
The SUID sandbox helper binary was found, but is not configured correctly.
Rather than run without sandboxing I'm aborting now.
You need to make sure that
/tmp/.mount_SomeApp-XXXXXX/chrome-sandbox
is owned by root and has mode 4755.

trace trap (core dumped)

이 오류는 AppImage 자체의 실행 권한 문제가 아니라, AppImage 내부에 포함된 Chromium의 chrome-sandbox 실행 조건을 충족하지 못해 발생합니다.


오류가 발생하는 이유

Electron은 Chromium을 포함하고 있으며, Linux에서 렌더러와 보조 프로세스를 격리하기 위해 Chromium sandbox를 사용합니다.

오류 메시지에 표시되는 chrome-sandbox는 Linux SUID sandbox helper입니다. 이 파일을 SUID 방식으로 사용하려면 일반적으로 다음 조건을 충족해야 합니다.

  • 파일 소유자가 root여야 합니다.
  • 파일 그룹이 root여야 합니다.
  • 파일 권한이 4755여야 합니다.
  • 파일이 위치한 파일시스템에서 SUID 실행을 허용해야 합니다.

4755 권한은 일반적인 755 실행 권한에 SUID 비트를 추가한 값입니다. 정상적으로 설정되면 ls -l 결과의 소유자 실행 권한 부분에 s가 표시됩니다.

-rwsr-xr-x 1 root root ... chrome-sandbox

AppImage를 실행하면 내부 파일시스템이 /tmp/.mount_* 형태의 임시 경로에 마운트됩니다.

/tmp/.mount_SomeApp-XXXXXX/chrome-sandbox

이 경로는 AppImage를 실행할 때 만들어지고 프로그램을 종료하면 해제되는 임시 마운트 경로입니다. 따라서 오류 메시지에 나온 /tmp/.mount_* 안의 파일을 직접 수정하는 방식은 적절한 해결 방법이 아닙니다.

Ubuntu 24.04에서는 AppArmor를 이용한 unprivileged user namespace 제한도 적용됩니다. AppImage 제작 방식이나 포함된 Electron 버전에 따라 user namespace sandbox를 사용하지 못하고 SUID sandbox로 전환하려다가 이 오류가 발생할 수 있습니다.


먼저 확인할 항목

현재 파일이 있는 경로와 파일시스템을 확인합니다.

pwd
findmnt -T .

findmnt 결과에서 FSTYPEOPTIONS를 확인합니다.

다음과 같은 환경에서는 Linux 소유권, SUID 비트 또는 실행 권한 설정이 제한될 수 있습니다.

  • NTFS, exFAT, FAT 계열 파일시스템
  • WSL의 /mnt/c, /mnt/d 같은 Windows 드라이브 경로
  • 일부 네트워크 또는 공유 파일시스템
  • nosuid 옵션으로 마운트된 파일시스템

현재 디렉터리의 마운트 옵션만 간단히 확인하려면 다음 명령을 사용할 수 있습니다.

findmnt -no TARGET,FSTYPE,OPTIONS -T .

출력에 nosuid가 포함되어 있다면 해당 위치에서는 chmod 4755를 실행해도 SUID 기능이 동작하지 않습니다.


임시로 실행 여부 확인하기

Electron은 --no-sandbox 옵션을 지원합니다.

./SomeApp-x86_64.AppImage --no-sandbox

이 명령으로 정상 실행된다면 AppImage 파일 자체가 손상된 것이 아니라 Chromium sandbox 구성 때문에 실행되지 않은 것으로 판단할 수 있습니다.

--no-sandbox는 Chromium의 sandbox를 전체적으로 비활성화합니다. Electron 공식 문서에서도 테스트 용도로만 사용하도록 안내하므로, 지속적인 실행 방법으로 사용하는 것은 권장하지 않습니다.

실행 권한이 없다면 먼저 다음과 같이 설정합니다.

chmod +x SomeApp-x86_64.AppImage
./SomeApp-x86_64.AppImage --no-sandbox

AppImage를 압축 해제하여 실행하기

AppImage의 임시 마운트 경로는 직접 수정할 수 없으므로, Type 2 AppImage라면 내용을 일반 디렉터리로 압축 해제한 뒤 chrome-sandbox의 소유권과 권한을 설정할 수 있습니다.

먼저 Linux 기본 파일시스템에 작업 디렉터리를 만듭니다.

mkdir -p ~/Applications/SomeApp
cp SomeApp-x86_64.AppImage ~/Applications/SomeApp/
cd ~/Applications/SomeApp

AppImage에 실행 권한을 부여합니다.

chmod +x SomeApp-x86_64.AppImage

기존 압축 해제 디렉터리가 있다면 삭제합니다.

rm -rf squashfs-root

AppImage를 압축 해제합니다.

./SomeApp-x86_64.AppImage --appimage-extract

정상적으로 완료되면 현재 디렉터리에 squashfs-root가 생성됩니다.

ls -ld squashfs-root

chrome-sandbox 파일 위치를 확인합니다.

find squashfs-root -name chrome-sandbox -type f

일반적인 Electron AppImage에서는 다음 경로에 있습니다.

squashfs-root/chrome-sandbox

소유권과 권한을 설정합니다.

sudo chown root:root squashfs-root/chrome-sandbox
sudo chmod 4755 squashfs-root/chrome-sandbox

설정 결과를 확인합니다.

ls -l squashfs-root/chrome-sandbox
stat -c '%U:%G %a %A %n' squashfs-root/chrome-sandbox

정상적인 결과는 다음과 비슷합니다.

root:root 4755 -rwsr-xr-x squashfs-root/chrome-sandbox

이제 압축 해제된 AppImage의 진입점인 AppRun을 실행합니다.

./squashfs-root/AppRun

Operation not permitted 오류가 발생하는 경우

다음 명령을 일반 사용자 권한으로 실행하면 파일 소유자나 파일시스템 상태에 따라 실패할 수 있습니다.

chmod 4755 squashfs-root/chrome-sandbox

오류 예시는 다음과 같습니다.

chmod: changing permissions of 'squashfs-root/chrome-sandbox': Operation not permitted

먼저 sudo를 사용해 소유권과 권한을 순서대로 설정합니다.

sudo chown root:root squashfs-root/chrome-sandbox
sudo chmod 4755 squashfs-root/chrome-sandbox

sudo를 사용해도 같은 오류가 발생한다면 다음 항목을 확인합니다.

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS -T squashfs-root/chrome-sandbox
lsattr squashfs-root/chrome-sandbox

주요 원인은 다음과 같습니다.

원인 확인 내용 해결 방향
일반 사용자 권한으로 실행 id, ls -l sudo chown, sudo chmod 사용
NTFS·exFAT·Windows 공유 경로 findmnt -T . AppImage를 ~/Applications로 복사 후 다시 압축 해제
nosuid 마운트 옵션 findmntOPTIONS nosuid가 없는 Linux 파일시스템 사용
읽기 전용 마운트 ro 옵션 확인 쓰기 가능한 위치로 복사
immutable 속성 lsattri 표시 필요성을 확인한 뒤 sudo chattr -i 파일
컨테이너·제한된 실행 환경 권한과 mount 정책 확인 일반 Ubuntu 호스트의 홈 디렉터리에서 실행

현재 경로가 /mnt/c 또는 외장 NTFS 드라이브라면 AppImage 파일만 홈 디렉터리로 복사하는 것으로 끝내지 말고, 홈 디렉터리에서 다시 압축을 해제해야 합니다.

mkdir -p ~/Applications/SomeApp
cp /현재/경로/SomeApp-x86_64.AppImage ~/Applications/SomeApp/
cd ~/Applications/SomeApp

chmod +x SomeApp-x86_64.AppImage
./SomeApp-x86_64.AppImage --appimage-extract

sudo chown root:root squashfs-root/chrome-sandbox
sudo chmod 4755 squashfs-root/chrome-sandbox
./squashfs-root/AppRun

압축 해제된 squashfs-root 디렉터리를 NTFS 등에서 홈 디렉터리로 단순 복사하면 원래 설정하지 못한 소유권과 권한 상태가 함께 이어질 수 있습니다. 따라서 Linux 파일시스템 안에서 새로 압축을 해제하는 것이 명확합니다.


/opt에 배치하여 실행하기

압축 해제한 AppImage가 정상적으로 실행된다면 /opt 아래에 배치할 수 있습니다.

기존 설치 경로가 있다면 먼저 확인합니다.

ls -ld /opt/someapp 2>/dev/null

문제가 없다면 이동합니다.

sudo rm -rf /opt/someapp
sudo mv squashfs-root /opt/someapp

이동 후에도 chrome-sandbox의 소유권과 권한을 다시 확인합니다.

sudo chown root:root /opt/someapp/chrome-sandbox
sudo chmod 4755 /opt/someapp/chrome-sandbox

stat -c '%U:%G %a %A %n' /opt/someapp/chrome-sandbox

명령어로 실행할 수 있도록 심볼릭 링크를 만듭니다.

sudo ln -sfn /opt/someapp/AppRun /usr/local/bin/someapp

이후에는 다음과 같이 실행할 수 있습니다.

someapp

/opt가 별도 파티션이라면 nosuid 옵션 여부도 확인해야 합니다.

findmnt -no TARGET,FSTYPE,OPTIONS -T /opt/someapp/chrome-sandbox

nosuid가 표시되면 권한 값이 4755로 보여도 SUID가 적용되지 않습니다. 이 경우 nosuid가 없는 위치를 사용하거나 애플리케이션 제작사가 제공하는 .deb, APT 저장소, Snap 또는 Flatpak 설치 방식을 확인하는 것이 좋습니다.


AppImage 원본을 그대로 실행하고 싶은 경우

AppImage는 내부 파일을 읽기 전용 파일시스템 이미지로 묶고, 실행할 때 임시 경로에 마운트하는 방식입니다. 일반 사용자가 원본 AppImage 내부의 chrome-sandbox 소유자를 root로 바꾸고 SUID 권한을 영구 적용하는 것은 일반적인 파일 권한 변경만으로 처리하기 어렵습니다.

따라서 원본 AppImage를 그대로 실행하면서 오류가 발생한다면 다음 순서로 판단하는 것이 좋습니다.

  1. 제작사에서 최신 AppImage를 제공하는지 확인합니다.
  2. 제작사에서 .deb나 공식 APT 저장소를 제공한다면 해당 방식을 우선 사용합니다.
  3. AppImage를 Linux 파일시스템의 홈 디렉터리에서 실행합니다.
  4. 테스트 목적으로만 --no-sandbox 실행을 확인합니다.
  5. 필요한 경우 압축 해제 후 chrome-sandbox 권한을 설정해 실행합니다.

제작사가 잘못된 권한이나 구형 Electron 구성을 포함한 AppImage를 배포했다면, 사용자 환경에서 우회하는 것보다 제작사가 패키징을 수정한 최신 버전을 제공하는 것이 근본적인 해결 방법입니다.


문제 확인 명령 모음

AppImage 실행 권한 확인:

ls -l SomeApp-x86_64.AppImage

CPU 아키텍처 확인:

uname -m

SomeApp-x86_64.AppImage는 일반적으로 x86_64 시스템용입니다.

현재 경로의 파일시스템 확인:

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS -T .

압축 해제:

./SomeApp-x86_64.AppImage --appimage-extract

sandbox 파일 검색:

find squashfs-root -name chrome-sandbox -type f

소유권과 권한 설정:

sudo chown root:root squashfs-root/chrome-sandbox
sudo chmod 4755 squashfs-root/chrome-sandbox

설정 확인:

stat -c '%U:%G %a %A %n' squashfs-root/chrome-sandbox

압축 해제된 애플리케이션 실행:

./squashfs-root/AppRun

테스트 목적의 sandbox 비활성화 실행:

./SomeApp-x86_64.AppImage --no-sandbox

정리

The SUID sandbox helper binary was found, but is not configured correctly 오류는 AppImage의 실행 권한만으로 해결되는 문제가 아닙니다.

핵심은 AppImage 내부의 chrome-sandbox가 Chromium sandbox에서 요구하는 소유권과 권한 조건을 충족하지 못했다는 것입니다.

오류 메시지에 표시되는 /tmp/.mount_*는 임시 마운트 경로이므로 직접 수정하지 않습니다. AppImage를 Linux 기본 파일시스템에 압축 해제한 뒤 chrome-sandboxroot:root, 4755로 설정하고 AppRun을 실행하는 방법을 사용할 수 있습니다.

./SomeApp-x86_64.AppImage --appimage-extract
sudo chown root:root squashfs-root/chrome-sandbox
sudo chmod 4755 squashfs-root/chrome-sandbox
./squashfs-root/AppRun

sudo chmod 4755에서도 Operation not permitted가 발생한다면 현재 작업 위치가 NTFS, exFAT, WSL Windows 드라이브, 읽기 전용 또는 nosuid 파일시스템인지 먼저 확인해야 합니다.

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS -T .

--no-sandbox는 실행 가능 여부를 확인하는 임시 방법이며, 보안 sandbox가 비활성화되므로 상시 실행 방식으로 사용하는 것은 피하는 것이 좋습니다.


참고 자료

반응형

댓글