์คํ node_modules/.bin/electron --version
๋ฅผ ์ถ๋ ฅํฉ๋๋ค v5.0.0
.
๋ถ๋ช
ํ ํ๊ธฐ ์ํด ๋ชจ๋ ๋ช
๋ น์ด ์ด ์ค๋ฅ๋ฅผ ์์ฑํ์ง๋ง ๋จ์ํ๋ฅผ ์ํด --version
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
$ node_modules/.bin/electron --version
[2720:0425/142001.775056:FATAL:setuid_sandbox_host.cc(157)] 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 /home/christianbundy/src/ssbc/patchwork/node_modules/electron/dist/chrome-sandbox is owned by root and has mode 4755.
$ stat /home/christianbundy/src/ssbc/patchwork/node_modules/electron/dist/chrome-sandbox
Size: 5185424 Blocks: 10128 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1465270 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 1000/christianbundy) Gid: ( 1000/christianbundy)
Access: 2019-04-25 14:15:10.609279524 -0700
Modify: 2019-04-25 14:15:10.659278929 -0700
Change: 2019-04-25 14:15:10.659278929 -0700
Birth: 2019-04-25 14:15:10.609279524 -0700
๋ด๊ฐ chown
๋ฐ chmod
ํ์ผ์ด๋ฉด ์ ๋๋ก ์๋ํ์ง๋ง ๋ด ์ง๊ด์ npm install electron@latest
์ด ๋ช
๋ น ์์ด๋ ์๋ํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์์๋ ๋์์
๋๊น?
์ ๊ฐ์ค๋ฝ๊ฒ๋ ์ด๋ฅผ ์๋์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ ์ ํ ๊ถํ์ ์ค์ ํ๋ ค๋ฉด ๋ฃจํธ ๊ถํ์ด ํ์ํ๊ณ npm install
๋์ ๋ฃจํธ ์ํธ๋ฅผ ๋ฌป๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด์์ ์ผ๋ก Arch๋ ๊ถํ ์๋ CLONE_NEWUSER ์ปค๋ ์ง์์ ๊ตฌ์ฑํ๊ณ Chromium(๋ฐ Electron)์ ์ด์ setuid ์๋๋ฐ์ค์ ์์กดํ๋ ๋์ ๋ค์์คํ์ด์ค ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Linux์ ๋ฐฐํฌ๋๋ ์ฑ์ ์ด๋ฅผ ์ค์น ํ๋ก์ธ์ค์ ํตํฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด https://github.com/electron-userland/electron-installer-debian/pull/184 ๋ฐ https://github.com/electron-userland/electron-installer-redhat/pull/112 ๋ฅผ ์ฐธ์กฐ ํ์ธ์ .
๊ฐ๋ฐ ์ค์ ๋ค์์คํ์ด์ค ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ ์ ์์์ ๊ฐ์งํ๋ฉด ์ง์นจ๊ณผ ํจ๊ป npm install
์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๋ ฅํด์ผ ํฉ๋๋ค.
ํคํค ์ ๋ง ๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!
๊ถํ์ด ์๋ CLONE_NEWUSER๊ฐ CONFIG_USER_NS=y
์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ๊ตฌ์ฑ ์ด์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ๋์ธ ์ ์๋ ์ผ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ๋๋ ์ด๊ฒ์ด Arch์์ ์์๋๋ ์ถ๋ ฅ์ด๋ผ๋ฉด ๊ธฐ๊บผ์ด ๋ซ๊ฒ ์ต๋๋ค -- ์ต์ฒจ๋จ ๋ฐฐํฌํ์ ์คํํ ๋ ์์๋๋ ๋ฒ๋ฒ
๊ฑฐ๋ฆผ์ด ์๋ค๋ ๊ฒ์ ์ดํดํ๊ณ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. npm์์ ๋ฐ๋ก ์๋ฒฝํ๊ฒ ์๋ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ธฐ ๋ณด๋ค๋ PKGBUILD
์์ ์ด๊ฒ์ ํด๊ฒฐํ์ญ์์ค. ๊ฑด๋ฐฐ!
CONFIG_USER_NS=y
๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ฑํํ์ง๋ง ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ฉ๋๋ค. ์ด ์ ์ sysctl kernel.unprivileged_userns_clone=1
๋ชจ๋ Linux ๋ฐฐํฌํ์ด ํด๋น ๊ธฐ๋ฅ์ ํ์ฑํํ ๋๊น์ง ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@kitingChris setuid ์๋๋ฐ์ค๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ์ ์ฑ์ ๊ฐ๋ฐ/์ถ์ํ ๋ ๊ฐ๋ฐ์/ํจํค์ง ์คํฌ๋ฆฝํธ๊ฐ ์์ ๋งํฌ๋ @nornagon ๊ณผ ๊ฐ์ด ์๋๋ฐ์ค ๋์ฐ๋ฏธ์ ๊ถํ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋์ง ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ชจ๋ Linux ๋ฐฐํฌํ์ด ํด๋น ๊ธฐ๋ฅ์ ํ์ฑํํ ๋๊น์ง ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋ณธ ๋ฉ์์ง ๋ณด๊ธฐ:
ํ์ผ์ chown ๋ฐ chmodํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค.
๋ํ https://github.com/electron/electron/issues/16631#issuecomment -476082063์ ์ฐธ์กฐํ์ญ์์ค. ๋ฐ๋ผ์ suid ์๋๋ฐ์ค๊ฐ ์๋ํ๋๋ก ํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก chrome-sandbox
๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์กฐ์ ํด์ผ ํฉ๋๋ค.
sudo chown root chrome-sandbox
chmod 4755 chrome-sandbox
appimage/snap ํจํค์ง๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ฒฝ์ฐ์ ๋ํ ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ง ๊ณต๊ฐํ์ง ์์์ง๋ง ๋ฌธ์ ๋ ๋ ์ฌ๊ฐํฉ๋๋ค. --no-sandbox
argumentmnt๋ก appimage๋ฅผ ์คํํ๋ฉด ์๋ํ์ง๋ง ์ด๊ฒ์ ํดํน์
๋๋ค.
@nornagon
์ ์ ํ ๊ถํ์ ์ค์ ํ๋ ค๋ฉด ๋ฃจํธ ๊ถํ์ด ํ์ํ๊ณ npm ์ค์น ์ค์ ๋ฃจํธ ์ํธ๋ฅผ ๋ฌป๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
chmod 4755 node_modules/electron/dist/chrome-sandbox
์คํ์๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ์ง ์์ผ๋ฉฐ ์ด๋ฌํ ํจํค์ง๊ฐ ์ ์์ ์ผ๋ก chrome-sandbox
ํฌํจํ ๋ชจ๋ ํ์ผ์ ์ค์นํ ๋ deb/pacman/etc ํจํค์ง์ ์ฑ์ ๋ํํ๋ ๋ช
๋ น์ ์คํํ๊ธฐ์ ์ถฉ๋ถํด์ผ ํฉ๋๋ค. ๋ฃจํธ ์์ . ๋ฐ๋ผ์ ์ค์น ๊ณผ์ ์์ ์ ์๊ฐ ์๋์ผ๋ก chmod 4755 node_modules/electron/dist/chrome-sandbox
์ํํ๋ฉด ์ฌ๊ธฐ์ ์ธ๊ธ๋ ๊ฒ์ฒ๋ผ ์๋์ผ๋ก ์ด ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.
CONFIG_USER_NS=y๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ฑํํ์ง๋ง ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ฉ๋๋ค. ์ด๊ฒ์ sysctl kernel.unprivileged_userns_clone=1์ ์ ์ํฉ๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
์ด ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ๊ด๋ จ ์ฃผ์ ์์ ํ์ธํฉ๋๋ค.
@vladimiry ๋จผ์ chownํ ๋ค์ chmod๋ฅผ ์ํํด์ผ ํ์ต๋๋ค. ๋ฐ๋๋ก ์๋ํ์ง ์์์ต๋๋ค.
@burningTyger ๋น์ ์ด ์ณ์ต๋๋ค . ๋ฐฉ๊ธ ์๋ณธ ๋ฉ์์ง๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
@nornagon CI์ ๋ํด chmod 4755 out/Release/chrome-sandbox
ํ๋ฉด ํด๋น ๊ถํ์ด zip
๋ก ์ ์ง๋๊ฑฐ๋ DL์ ๋ํ ๊ถํ์ ์์ ํ๊ธฐ ์ํด electron-download
์์ ๋ณ๊ฒฝํด์ผ ํฉ๋๊น?
๋ณ๊ฒฝํด์ผ ํ ํญ๋ชฉ์ ๋ํ ๋์ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ฌ๊ธฐ์ ๋์ผํฉ๋๋ค... :(
@MarshallOfSound zip์ ๊ถํ์ ์ง์ํ์ง ์์ง๋ง ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ chmod ๊ถํ์ด ์๋๋ผ ์์ ์์ ๋๋ค. setuid ์๋๋ฐ์ค ๋์ฐ๋ฏธ๋ ๋ฃจํธ์๋ง ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ suid _to root_์ ๋๋ค. ๋ฃจํธ ๊ถํ์ ๋จผ์ ์ป์ง ์๊ณ ์ ์ ํ ๊ถํ์ ์ค์ ํ ์ ์๋ค๋ฉด ์ด๋ Linux์์ ๋งค์ฐ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ๋ ๊ฒ์ ๋๋ค. Linux์๊ฒ๋ ๋คํ์ค๋ฝ๊ฒ๋ ์ฐ๋ฆฌ์๊ฒ๋ ๋ถํํ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
๋ด๊ฐ ๋ณด๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋ (2) ์ชฝ์ผ๋ก ๊ธฐ์ธ๊ณ ์๋ค. ๋ฐฐํฌ๋ ์ฑ์ ๋ณด์์ ์์์ํค์ง ์์ผ๋ฉด์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์ค๋ /ํ๋ซํฉ์ ์๋ ๋ฐฉ์์ ์ต์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ /ํ๋ซํฉ์ ๋ํด ์ด๋ป๊ฒ ํด์ผ ํ ์ง ์์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Mac App Store ๋ฒ์ ์ Electron์ ๊ตฌ์ถํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋น ์ํฉ์์ ์๋๋ฐ์ฑ์ ์์ ํ ๋นํ์ฑํํ ์ ์์ ์ ๋๋ก ์ด๋ฏธ ์ฑ์ ์๋๋ฐ์ค ์ฒ๋ฆฌํ์ ์ ์์ต๋๋ค.
ํ์ฌ๋ก์๋ ์ฒซ ๋ฒ์งธ ์ต์ ์ด ๋ ๋ง์์ ๋ญ๋๋ค.
- ํจํค์ง๋์ง ์์ ์ฑ์ ๋ถํ ํ ๋๋ง ์ฌ์ฉํ ์ ์๋ ์๋๋ฐ์ฑ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ ์๋๋ฐ์ค ์์ด ๋ถํ ํฉ๋๋ค. Electron์ด ํจํค์ง ์ฑ์ ๋ถํ ํ๋ ๊ฒฝ์ฐ ์๋๋ฐ์ค ์์ด ๋ถํ ์ ๊ฑฐ๋ถํฉ๋๋ค.
๊ทธ๋ฌํ ์๋๋ฆฌ์ค๋ ์ด๋ป๊ฒ ๋ ์คํด์ ์์ง๊ฐ ์์ต๋๋ค. ์๋๋ฐ์ฑ ์์ด ํจํค์ง๋์ง ์์ ์ฑ์ ์ฑ๊ณต์ ์ผ๋ก ์คํํ ์ ์์ง๋ง ์๋๋ฐ์ฑ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ํจํค์ง๋ ์ฑ์ด ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด remote
์ธํฐํ์ด์ค๊ฐ ์๋ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์ ๋ฉ์ธ ํ๋ก์ธ์ค์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ต๋๋ค. ๋๋ ์ฑ์ AppImage / Snap / Flatpak ํจํค์ง๋ก ๋ํํ๋ ๊ฒฝ์ฐ.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ ์๋๋ฐ์ฑ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์๋๋ฐ์ฑ ์์ด ๋ถํ ํ๊ณ ๊ฒฝ๊ณ ๋ฅผ ์ธ์ํฉ๋๋ค.
๋ฐ๋ผ์ ์๋๋ฐ์ค๋ก ์ค๊ณ ๋ฐ ๊ฐ๋ฐ๋ ํจํค์ง ์ฑ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋๋ฐ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์๋๋ฐ์ค ์์ด ์คํ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋์๊ฒ ์ข์ ์๋ฆฌ๊ฐ ์๋๋ค.
- Linux์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋๋ฐ์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
์ ํํ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์๋๋ฐ์ฑ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ฑ์ด ์์๋๊ฑฐ๋ ์คํจํ๋ ๋ฐฉ์์ผ๋ก Linux์์ ์๋๋ฐ์ฑ์ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น(ํ์ฌ ์ํฉ, ๊ฐ์ ์๋๋ฐ์ฑ).
(1)๋ ์ข์ง๋ง (2)๋ฅผ ์กฐ๊ธ ๋ฐฉ์ดํ๊ธฐ ์ํด ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํด๋ ์ฑ์ ๋ ธ์ถ๋๋ API๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๋นํ์ฑํํ ์ ์ผํ ๊ฒ์ OS ์์ค ์๋๋ฐ์ค์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฑ์ ๋ก๋ํ์ง๋ง OS์ ์ํด ๋ณดํธ๋์ง ์์ ๋ฟ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ์ ํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฑ์ ๋ก๋ํ์ง๋ง OS์ ์ํด ๋ณดํธ๋์ง ์์ ๋ฟ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋์๊ฒ๋ ์ข๊ฒ ๋ค๋ฆฐ๋ค. ์ค๋ช ๊ฐ์ฌํฉ๋๋ค.
๋๋ 2๋ฅผ ์ข์ํ์ง ์๋๋ค. ์๋ํ๋ฉด ์ ํ์ ๋ณด์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋๋ค์ด ๋ณด์์ ๋นํ์ฑํํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ "๋ฐ๋ณด ์ฌ์ฉ์" ์ ๋ฐ๋ก ๋ค์ด์๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก Electron์ด ์๋ํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๊ฒ์ด ๋งค์ฐ ์ค์ํ ๋ณด์ ์กฐ์น๋ผ๋ฉด ๊ฒฝ๊ณ ์ ๋ด๊ฐ ์ถ๊ฐ ์์ ์ ํด์ผ ํ๋ ์ด์ ์ ๋ํ ์ข์ ์ค๋ช ์ ์ฃผ์ญ์์ค. ๊ทธ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์๋ค๋ฉด ๋์๊ฒ ๋์ "์๋ํ์ง ์๋" ๋ง์ ์ฃผ์ง ๋ง์ญ์์ค.
์ด ๋๋ฌธ์ ๋๋ 1. (์ง๊ธ์ฒ๋ผ ๊ฐ์ ์ข ๋ฃ) ๋๋ 4๋ฅผ ์ข์ํฉ๋๋ค.
:x: chown root:root chrome-sandbox && chmod 4755 chrome-sandbox
์(๋) ์ผ๋ถ ์ํ ์ ํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
๊ทธ๊ฒ์ด ํ๋ ์ผ์ ์์ฃผ ๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด: chrome-sandbox
์ SUID ๋นํธ๋ฅผ ์ค์ ํ์ฌ _๋ชจ๋ ์ฌ์ฉ์_๊ฐ _๋ฃจํธ_๋ก ํ์ผ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ฆ, chrome-sandbox
์
์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ฑฐ๋ ์ฝํ
์ธ ๊ฐ ์
์ฑ์ด ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ฃจํธ๊ฐ ๋ ์ ์์ต๋๋ค. chrome-sandbox
๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ณต๊ฒฉ ๋์์ด ๋ ๊ฒ์
๋๋ค.
npm install
์ ๋ํด ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. sudo
(์ฌ์ฉ์๊ฐ ์ํธ๋ฅผ ์์ฑํด์ผ ํจ)๊ฐ ํ์ํ๊ณ ์นจ์
์ ์ด๋ฉฐ ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ณด์ ๊ฒฐ๊ณผ๋ฅผ ์ดํดํ์ง ๋ชปํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
chown root:root chrome-sandbox && chmod 4755 chrome-sandbox๋ ๋๋ฅผ ์ํด ๋ช ๊ฐ์ง ์ํ ์ ํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
๋ฌผ๋ก ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ฒด sudo sysctl kernel.unprivileged_userns_clone=1
๋ก User Namespace ์๋๋ฐ์ฑ์ ํ์ฑํํ ์ ์์ต๋๋ค(Ubuntu์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ง๋ง Arch์์๋ ํ์ฑํ๋์ง ์์).
๊ทธ๊ฒ์ด ํ๋ ์ผ์ ๋ํด ์์ฃผ ๋ช ํํ๊ฒ ์ค๋ช ํ์๋ฉด:
chrome-sandbox
์ SUID ๋นํธ๋ฅผ ์ค์ ํ์ฌ _๋ชจ๋ ์ฌ์ฉ์_๊ฐ _๋ฃจํธ_๋ก ํ์ผ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ฆ,chrome-sandbox
์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ฑฐ๋ ์ฝํ ์ธ ๊ฐ ์ ์์ ์ด๋ฉด ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ฃจํธ๊ฐ ๋ ์ ์์ต๋๋ค.chrome-sandbox
๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ณต๊ฒฉ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์, ํ์ง๋ง ์ด ๋ฐ์ด๋๋ฆฌ๋ Chrome๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒ๊ณผ ์ ํํ ๋์ผํ๋ฏ๋ก ์ด๊ฒ์ด ๊ฑฑ์ ๋๋ค๋ฉด Chrome๋ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. :)
์๋๋ฐ์ค ์์ด ์คํํ๊ฑฐ๋ "์๋๋ฐ์ค ๋์ฐ๋ฏธ" ์์ด ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ฒ์์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ถ๋ง์ ํ์ํ์ต๋๋ค ๐
๋ด๊ฐ ์์ ์ด ์๋ ๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ๋ง, ์ฌ์ ํ ์ป์ The SUID sandbox helper binary was found, but is not configured correctly
์ค๋ฅ์
๋๋ค.
๋๋ ์ ์ 4.x๋ก ๋กค๋ฐฑํ๊ณ ์ถ์ง ์๋ค ๐คจ
chrome-sandbox
์ suid ํ๋๊ทธ๊ฐ ์๋ ์ค๋
์ ์
๋ก๋ํ๋ ค๊ณ ์๋ํ์ง๋ง snapcraft์ ๊ฒํ ํ๋ก์ธ์ค์์ suid ํ๋๊ทธ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค.
The store was unable to accept this snap.
- checksums do not match. Please ensure the snap is created with either 'snapcraft pack <DIR>' (using snapcraft >= 2.38) or 'mksquashfs <dir> <snap> -noappend -comp xz -all-root -no-xattrs -no-fragments'. If using electron-builder, please upgrade to latest stable (>= 20.14.7). See https://forum.snapcraft.io/t/automated-reviews-and-snapcraft-2-38/4982/17 for details.
- found errors in file output: unusual mode 'rwsr-xr-x' for entry './chrome-sandbox'
@thomasnordquist ๋ OS ์์ค ์๋๋ฐ์ฑ --no-sandbox
์ ์ฑ ์ธ์๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ฆ, app.commandLine.appendSwitch
๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. Snap ํจํค์ง์ ๊ด๋ จํ์ฌ ์ฌ๊ธฐ์ ์ค๋ช
๋ ๊ฒ๊ณผ ๊ฐ์ ํ๋ฌ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์ ํผํฉ ๋ชจ๋์์ ๋น๋ํ ์ฑ์ ์ถ์ํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค . Electron v5๋ AppImage ๋ฐ Snap์ ์ ์ธํ ๋ชจ๋ ํจํค์ง์ ์ฌ์ฉ๋ฉ๋๋ค. ์์ง ์ด๋ฌํ ํจํค์ง๊ฐ ์๋๋ฐ์ฑ์ด ํ์ฑํ๋ ์ํ์์ ์ ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์์ ํ ๋ช
ํํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ ๊ฐ๋ ๋ถ๋ช
ํด์ง ๊ฒ์
๋๋ค.
Snapcraft๊ฐ suid ํ๋๊ทธ๋ฅผ ๊ธ์งํ๋ ๊ฒฝ์ฐ ์๋ง๋ ์ ์ผํ ์ต์
์ Snapcraft์์ Electron์ ์๋๋ฐ์ฑ์ ์์ ํ ๋นํ์ฑํํ๊ณ Snapcraft๊ฐ ์ฌ์ฉํ๋ ์ปจํ
์ด๋์ ์์กดํ๋ ๊ฒ์
๋๋ค. ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Snapcraft๋ฅผ ํตํด ํจํค์งํ ๋ ์ถ๊ฐ ๋ช
๋ น์ค ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด --no-sandbox
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Snapcraft/Flatpak์์ ์คํ์ ๊ฐ์งํ๊ณ ํด๋น ๊ฐ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋๋ฐ์ฑ์ ๋นํ์ฑํํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ํน์ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ ์ถ๊ฐํด์ผ ํ ์ ์์ต๋๋ค.
์ผ๋ถ Snap ๊ด๋ จ ๋ฌธ์ https://docs.snapcraft.io/browser-support-interface
@posix4e ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์ SUID ์๋๋ฐ์ค/ํด๋ฐฑ ๋ชจ๋ ๋ชจ๋์์ ์๋๋ฐ์ค ์ฒ๋ฆฌ๋ Snap ํจํค์ง๋ฅผ ์คํํ๋ ๋ฌธ์ ์ ๋ํด
๊ทธ๊ฒ์ด ํ๋ ์ผ์ ๋ํด ์์ฃผ ๋ช ํํ๊ฒ ์ค๋ช ํ์๋ฉด:
chrome-sandbox
์ SUID ๋นํธ๋ฅผ ์ค์ ํ์ฌ _๋ชจ๋ ์ฌ์ฉ์_๊ฐ _๋ฃจํธ_๋ก ํ์ผ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ฆ,chrome-sandbox
์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ฑฐ๋ ์ฝํ ์ธ ๊ฐ ์ ์์ ์ด๋ฉด ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ฃจํธ๊ฐ ๋ ์ ์์ต๋๋ค.chrome-sandbox
๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ณต๊ฒฉ ๋์์ด ๋ ๊ฒ์ ๋๋ค.์, ํ์ง๋ง ์ด ๋ฐ์ด๋๋ฆฌ๋ Chrome๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒ๊ณผ ์ ํํ ๋์ผํ๋ฏ๋ก ์ด๊ฒ์ด ๊ฑฑ์ ๋๋ค๋ฉด Chrome๋ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. :)
Chrome์ ๋ฐ์ด๋๋ฆฌ๊ฐ SUID๊ฐ ์ค์ ๋ root:root
๋ฅผ ๊ฐ๋๋ก ํ๋ ๊ฒ์ ๋ํด ๋ถ๋ถ์ ์ผ๋ก ๊ฑฑ์ ํ๊ณ ์์ต๋๋ค. ๋ฒ๊ทธ๊ฐ ์๋ ์ฝ๋๋ ๊ฑฐ์ ์์ต๋๋ค. ๋ค์์ ๊ธฐ๋ก์ ์ํ ์์ค ์ฝ๋์
๋๋ค. https://github.com/chromium/chromium/tree/master/sandbox/linux/suid
ํ์ง๋ง npm install
๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ ๊ฑฑ์ ๋ฉ๋๋ค.
root:root
๋ฐ SUID ํ์ผ ์ค ํ๋๋ฅผ ์๋์ผ๋ก ๋ง๋ญ๋๋ค.๋ฃจํธ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์์ ํ ํ์ผ์ ๋ํด sudo chown root:root && sudo chmod 4755
๋ฅผ ์๋์ผ๋ก ์ํํ๋ ์ต์ด์ ์ํํธ์จ์ด ์คํ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
npm ์ค์น์์ sudo chown root:root && sudo chmod 475
๋ฅผ ์ํํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ผ๋ฉฐ npm์ ๊ถํ์ ์ค์ ํ๊ธฐ ์ํด ๋ฃจํธ๋ก ์คํํด์ผ ํฉ๋๋ค. npm์ ํํฌ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์ค์น๋ ๋ชจ๋ ํจํค์ง๊ฐ ๋ฃจํธ๋ก๋ ํํฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์๋ฐฑ ๊ฐ์ ํจํค์ง ๋ฐ ์ค์ฒฉ ์ข
์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ ๋งค์ฐ ์ํํฉ๋๋ค.
npm ์ค์น์์ sudo chown root:root && sudo chmod 475๋ฅผ ์ํํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ์ดํดํ๋ ํ ์ต์ ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค.
npm ์ค์น ์ค์ ๋ฃจํธ ๊ถํ์ด ํ์ํ ๋ชจ๋ ์์ ์ ์์ํ๋ ๊ฒ์ด ์๋๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ์ต์ ์ค ํ๋๋ฅผ ๋์ดํ์ง ์์ ์ด์ ์ ๋๋ค.
๊ทธ ๊ฐ์น๋ฅผ ์ํด electron-installer-debian
1.2.0, electron-installer-redhat
1.1.0 ๋ฐ electron-installer-snap
3.2.0์ด SUID ์๋๋ฐ์ค ๋ณ๊ฒฝ ์ฌํญ๊ณผ ํจ๊ป ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค. Electron Forge v5 ๋ฐ v6 ๋ฒ ํ๋ ์ ์ด์ ์ผ๋ก ์
๋ฐ์ดํธ๋์ด์ผ ํฉ๋๋ค(๋ฒ์ ๋ด ๋ฒ์ ์
๋ฐ์ดํธ๋ฅผ ํตํด npm update
๋๋ yarn upgrade
์ ์ ํ๊ฒ ์ฌ์ฉ).
๋ช ํ์ฑ์ ์ํด ๊ด๋ จ ์ฝ๋ ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ถ๋ช ํ ํ์๋ฉด, Snaps์๋ ๋ ๋ง์ ๊ฒ์ด ์์์ต๋๋ค(์ฆ, ์์์ ์ธ๊ธํ ๋ธ๋ผ์ฐ์ ์๋๋ฐ์ค ์ง์ ์ถ๊ฐ). ์์ธํ ๋ด์ฉ์ ๊ด๋ จ PR์ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฐธ์กฐํ์ญ์์ค.
๋ฐฉ๊ธ ์ด๊ฒ์ ๋๋ ์ต๋๋ค. chown / chmod๊ฐ ์๋ํ์ง๋ง Docker ์ด๋ฏธ์ง ๋ด๋ถ์์ ์คํํ๋ ๊ฒฝ์ฐ ์ทจํด์ผ ํ ์ ์ผํ ์กฐ์น๋ ์๋๋๋ค.
๊ทธ๋ฅ ํ๋ฉด ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
์ด์ ๋ํ ์์ ์ docker run
๋ช
๋ น์ --privileged
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ๋๋ ์ด๊ฒ์ด ์ฃผ๋ก CI์ ๋ํ ์ข์ ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@JCMais Electron์ด suid ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํด์ผ ํ์ง๋ง ๋์ปค ๋ด์์ ๋ค์์คํ์ด์ค ์๋๋ฐ์ค๋ฅผ ์๋ชป ์ฌ์ฉํ๋ ค๊ณ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ ๊ทธ๋ฐ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง --disable-namespace-sandbox
suid ์๋๋ฐ์ค๋ฅผ ๊ฐ์ ์คํํ ์ ์์ต๋๋ค. --privileged
(๋๋ --cap-add SYS_ADMIN
๋๋ CLONE_NEWUSER๋ฅผ ํ์ฉํ๋ ์ฌ์ฉ์ ์ง์ seccomp ํ๋กํ)๋ก docker๋ฅผ ์์ํ๋ฉด ์๋๋ฐ์ค ๋ด์์ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ setuid ์๋๋ฐ์ค ๋๋ ๋์ฐ๋ฏธ ์คํ ํ์ผ์ด ํ์ํ์ง ์์ต๋๋ค. .
@thomasnordquist ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ํ์ฌ ์ฌ์ ๋ก๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ Snap/AppImage ํจํค์ง์ ๋ํ ์๋๋ฐ์ฑ์ ๋นํ์ฑํํ์ต๋๋ค. --no-sandbox
์ธ์๋ก ์ด๋ฆ์ด ๋ฐ๋/์๋ ์ ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๋ ๋ฐ์ด๋๋ฆฌ๋ก ๋ช
๋ช
๋ ์ฌ์ ๋ก๋์ ์ ์ฌํ sh ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค. ์ ์ ๋น๋์ after-pack
์คํฌ๋ฆฝํธ์์ ํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
@nornagon ์ด ํ๋๊ทธ๋ฅผ ์ ์์ ์ ํํ ์ด๋ป๊ฒ ์ ๋ฌํด์ผ ํฉ๋๊น? --disable-namespace-sandbox
์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ๊ณ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
:~$ electron --disable-namespace-sandbox
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
์ด๊ฒ์ด ๋๋ฅผ ์์๊ฐ์ ๋ฌด๋ ฅํ์์ผฐ๊ณ ์ฐ๋ฆฌ์ ๋ชจ๋ Linux ์ฌ์ฉ์๋ ๋ด๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๋๊น์ง ์ด์ ๋ฒ์ ์ ๊ณ ์ ๋์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ณด์์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ์ ์ ์ผ๋ก ๋์ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ ๋๋ ๊ธฐ๋ฅ ํ๋๊ทธ ์์ด ๋ฐฐ์ก๋์์ต๋๋ค.
๋๋ ๋ํ ์ด๊ฒ์ด ์ฝ๋๋ฅผ ํตํด ๊ทธ๊ฒ์ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ ์์ด ๋ฐฐ์ก๋์ด์๋ ์ ๋๋ค๊ณ ์ฃผ์ฅํ๊ณ ์ถ์ต๋๋ค. ๋ช ๋ น์ค์์ ์๋์ผ๋ก ์ง์ ํ์ง ์๋ ํ --no-sandbox๊ฐ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ฐ๋ฐ์ ์ผ ์ ์์ต๋๋ค.
electron-installer-snap
์๋๋ฐ์ค ์ง์์ ๊ตฌํํ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฌธ์ ์ถ์ ๊ธฐ๋ฅผ ํตํด ์๋ ค์ฃผ์ธ์.
electron-installer-snap์ด ์๋๋ฐ์ค ์ง์์ ๊ตฌํํ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฌธ์ ์ถ์ ๊ธฐ์์ ์๋ ค์ฃผ์ญ์์ค.
๋ํ ๋๊ตฐ๊ฐ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ด Snap ํจํค์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ ์ถฉ๋ถํ๋ค๋ ํ์ธ์ ๋ฃ๊ณ ์ถ์ต๋๋ค. ๋ฐ๋ผ์ ๊ธ์ ์ /๋ถ์ ์ ํผ๋๋ฐฑ ๋ชจ๋ ํ์ํฉ๋๋ค. ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
@vladimiry ๋๋ ๊ณ์ํด์ ๊ทธ๊ฒ์ ํ ์คํธํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
OS ํจ์น, sysctl ๋๋ ์ฌ๋ถํ ๊ณผ ๊ด๋ จํ์ฌ ํด๊ฒฐ๋์ง ์๋ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค. ์ง๊ธ ๋น์ฅ ์๋ํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. --no-sandbox๊ฐ ์ ํธ๋ฉ๋๋ค.
๋๊ตฐ๊ฐ ๋ด๊ฐ ์๋ํ์ง ์๋ ํจํค์ง Snap์ ์ฌ์์ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ต์ํ์ Electron ์ฑ์ ์ ๊ณตํ ์ ์๋ค๋ฉด ํจ์ฌ ๋ ๋์์ด ๋ ๊ฒ์
๋๋ค. electron-quick-start
ํฌํฌ๋ฅผ ์ฌ์ฉ
"์๋ํ์ง ์์"์ ๋ค๋ฅธ ์ฌ๋์ ์ํด ์ฌ๋ฐ๋ฅด๊ฒ ํจํค์งํ๊ธฐ ์ํด electron-installer-snap
์์ ๋ฌด์์ ํ ์ ์๋์ง ์ ํํ ์ฐพ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค.
@burtonator , ํ
์คํธํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ด๊ฐ ์๋ ํ, --no-sandbox
cmd ์ธ์๋ก ์๋ ๋ฐ์ด๋๋ฆฌ/์ ์๋ฅผ ์์ํ๋ Snap/AppImage ๋น๋ ๋ก๋์ ๊ฐ์ bash/sh ์คํฌ๋ฆฝํธ์ ํจํค์ง๋ ๊ฒ์ด ํ์ฌ๋ก์๋ ์ ์ผํ๊ฒ ํ์ธ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
@malept ํญ๋ชฉ ์ ํ
์คํธํ๊ธฐ ์ ์ sudo sysctl kernel.unprivileged_userns_clone=0
๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค OS ๊ธฐ๋ฅ์ ๋นํ์ฑํํด์ผ ํฉ๋๋ค.
@vladimiry ์, ๋ด ๋ ธํธ๋ถ์๋ ์ด๋ฏธ ํด๋น ์ฌ์ฉ์ ์ค์ ์ด ์์ต๋๋ค.
@fabiospampinato ๊ทํ์ ์ ์์ ๋ชจ๋ Linux ํจํค์ง ์ ํ์ ๋ํด ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํ์ง๋ง ์ต์ํ DEB ๋ฐ Pacman ํจํค์ง๋ SUID ์๋๋ฐ์ค(์ปจํ
์ด๋์ ์ ์ฌํ ํจํค์ง๊ฐ ์๋ ๋ชจ๋ ํจํค์ง)์ ์ ์๋ํฉ๋๋ค. SUID ๊ถํ ๋นํธ ๋ฅผ chrome-sandbox
๋ก ์ค์ ํ๊ธฐ ๊ด๋ จ ์ฝ๋ ๊ฐ ๋นํ์ฑํ๋๋ Snap/AppImage ํจํค์ง๊ฐ ์์๋ฉ๋๋ค.
CONFIG_USER_NS=y๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ฑํํ์ง๋ง ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ฉ๋๋ค. ์ด๊ฒ์ sysctl kernel.unprivileged_userns_clone=1์ ์ ์ํฉ๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
์ด ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ๊ด๋ จ ์ฃผ์ ์์ ํ์ธํฉ๋๋ค.
๊ณ ๋ง์ ์น๊ตฌ, ๋๋ฅผ ์ํด ์ผํ๊ณ ์์ต๋๋ค! @๋ธ๋ผ๋๋ฏธ๋ฆฌ
์ง๊ธ 5.0.2์์ ์๋ํ๋์ง ์์ญ๋๊น?
@p3x-robot ๋ณ๊ฒฝ ๋ก๊ทธ์ ์ด ๋ฌธ์ ์ ๋ํ ์ธ๊ธ์ด ์์ต๋๋ค. ๋ฐฉ๊ธ ํ์ธํ๋๋ฐ ์ค๋ฅ๊ฐ ์ฌ์ ํ ์์ต๋๋ค.
@rybaczewa ์๋ต ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. v4๋ ๊ณ์ ์ ์งํฉ๋๋ค. ํฐ ๋ฌธ์ ์ด๋ฏ๋ก v5๊ฐ ์๋ํ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. ciao
v5๊ฐ ์๋ํ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
v5๊ฐ ์๋ ์ค์ ๋๋ค
@ p3x -robot
์ด ๋ก๊ทธ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด sudo sysctl kernel.unprivileged_userns_clone=1
ํ๊ฑฐ๋ ์ค๋ฅ ๋ฉ์์ง์ ์ค๋ช
๋ ๋๋ก chrome_sandbox
๋ฐ์ด๋๋ฆฌ์ ์ฌ๋ฐ๋ฅธ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
@vladimiry @MarshallOfSound๋ ์์ด ๊ณ ์ ๋์ด ๋ง์? Snap์์ ๋ด ์ฑ P3X Redis์ P3X Onenote๋ฅผ ๋ชจ๋ sudo sysctl kernel.unprivileged_userns_clone=1
ํ๊ฑฐ๋ chrome_sandbox
v5.0.x๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. v4.xx๋ก๋ง ์ค์นํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ sudo
๋ฅผ) ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น? ๊ทธ๋ค์ ์ด ํ๋ก๊ทธ๋จ์ด ๋์๋ค๊ณ ์๊ฐํ๊ณ ์ฑ์ ์ ๊ฑฐํ ๊ฒ์
๋๋ค..
v5 ๋ฒ์ ๋๋ v6 ๋๋ v7์ด ์ ๋๋ก ์๋ํ์ง ์์ผ๋ฏ๋ก ์ด๊ฒ์ ๋ฒ๊ทธ์
๋๋ค .
@p3x-robot snap
์์ ํ์๋ ์ง์์ ์ค๋
์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฌ๋ ค ์์ต๋๋ค. electron-installer-snap
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฅผ ์ง์ํ๋ฉฐ ์์์ ์ธ๊ธํ ๋๋ก ํด๋น ๋ชจ๋์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ํด๋น ๋ชจ๋์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ญ์์ค.
์์ธํ ๋ด์ฉ์ electron-installer-snap
repo ๋๋ ๋ธ๋ผ์ฐ์ ์๋๋ฐ์ฑ์ ๋ํ snapcraft ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐ๋ณตํด์ ๋ง์๋๋ฆฌ์ง๋ง, ์ ๊ฐ ํ์ฌ ์ดํดํ๊ณ ์๋ ๊ฒ์ ์์ ํ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉฐ Electron์ ์๋๋ฐ์ค๊ฐ ์์๋๋ก ์๋ํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์์ ๋
ผ์๋๋ ๊ฒ์ ์ฌ๋๋ค์ด chrome_sandbox
๋ฐ์ด๋๋ฆฌ๋ฅผ ํจํค์งํ ๋ ์ง๋ฉดํ๊ณ ์๋ ๋ฌธ์ ์
๋๋ค.
์ด๋ฏธ ์๋๋ฐ์ค๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ด์ํฉ๋๋ค.
app.enableSandbox()
app.commandLine.appendSwitch('no-sandbox')
์ฐ์ถ:
patrikx3<strong i="9">@bitang</strong>:~/Projects/patrikx3/redis-ui-workspace/redis-ui$ /snap/bin/p3x-redis-ui
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
[12999:0525/085646.618618:FATAL:setuid_sandbox_host.cc(157)] 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 /snap/p3x-redis-ui/5/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (core dumped)
patrikx3<strong i="10">@bitang</strong>:~/Projects/patrikx3/redis-ui-workspace/redis-ui$
๋๋ ์ด๊ฒ์ app.enableSandbox()
๋ก ์๋ํ์ง๋ง ๋ค์์ ์ป์ต๋๋ค.
Uncaught ReferenceError: require is not defined
at onload.js:1
์ ์ ์ ๊ฑฐํ๋ฉด ์๋ํฉ๋๋ค.
@MarshallOfSound ๋๋ electron-builder
์ฌ๋ฌ๋ถ ๋ชจ๋๋ฅผ ์ํด ์๋ํ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋์ฐ๋ฏธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
https://github.com/patrikx3/redis-ui/blob/master/src/build/after-pack.js
electron-builder
์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํฉ๋๋ค.
์ฌ๋ฌ๋ถ ๋ชจ๋๋ฅผ ์ํด ์๋ํ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋์ฐ๋ฏธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ด๋ฌํ ์๋ฃจ์ ์ ์ด๋ฏธ ์ด ๋ฌธ์ ํ ๋ก ์์ ์ฌ๋ฌ ๋ฒ ์ธ๊ธ๋์์ผ๋ฉฐ ์ด๊ฒ์ด ์ ์ v5๊ฐ ์๋ํ๊ธฐ ์ ์ ์ ๊ฐ ์ด ์ด์ ์ ๋๋ค.
@vladimiry ๊ฐ์ฌํฉ๋๋ค. ์ด ์๋ฃจ์ ์ ๋์ณค์ต๋๋ค. ๋ฐฉ๊ธ typescript ๋์ javascript ๊ธฐ๋ณธ ์๋ฃจ์ ์ ์ถ๊ฐํ์ต๋๋ค...
์ ์ผํ ๋ฌธ์ ๋ ๋ด๊ฐ ํฉ ํดํน ํ ์ด๊ฒ์ ํ ๋ ์ ์์ ํจ๋ ์์ด์ฝ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฒ์งธ ์์ด์ฝ์ ์์ฑํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น? ๋๋ ๊ทธ๊ฒ์ด ์๋ ๋ฐ์ค๊ฐ์๋ ํ๋๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๊ตฌ๋?
--no-sandbox
์์๋ง ๋ฐ์ํฉ๋๋ค.
@fabiospampinato ๊ทํ์ ์ ์์ ๋ชจ๋ Linux ํจํค์ง ์ ํ์ ๋ํด ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํ์ง๋ง ์ต์ํ DEB ๋ฐ Pacman ํจํค์ง๋ SUID ์๋๋ฐ์ค(์ปจํ ์ด๋์ ์ ์ฌํ ํจํค์ง๊ฐ ์๋ ๋ชจ๋ ํจํค์ง)์ ์ ์๋ํฉ๋๋ค. SUID ๊ถํ ๋นํธ ๋ฅผ
chrome-sandbox
๋ก ์ค์ ํ๊ธฐ ๊ด๋ จ ์ฝ๋ ๊ฐ ๋นํ์ฑํ๋๋ Snap/AppImage ํจํค์ง๊ฐ ์์๋ฉ๋๋ค.
๋ ๊ฐ ๋์ ํ๋์ ์์ด์ฝ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
@p3x-robot ํ๋ฆฌ๋ก๋์ ๊ฐ์ bash/sh ์คํฌ๋ฆฝํธ๋ฅผ ๋์
ํ์ง ์๊ณ Snap ์ปจํ
์ด๋ ์ฑ์ ํจํค์ง๋ --no-sandbox
์ธ์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
unsquashfs your-snap-file.snap
๋ฅผ ์คํํ์ฌ ๋จผ์ ์ค๋
์ ์์ถ์ ํ๋๋ค../squashfs-root/command.sh
๋ฅผ ํธ์งํ์ญ์์ค.snapcraft pack ./squashfs-root
๋ช
๋ น์ ์คํํ์ฌ ./squashfs-root
ํด๋๋ฅผ ๋ค์ ์ค๋
ํจํค์ง๋ก ์์ถํฉ๋๋ค.์๋ํ์ง๋ ์์์ง๋ง ์ ์ฌํ ์ฌํจํค์ง ์์ ์ด AppImage ํจํค์ง์๋ ์ ์ฉ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฆ, ๋ค๋ฅธ unpack/pack ๋ช ๋ น์ ์คํํ๋ ๋ฌธ์ ์ ๋๋ค.
์ค๋ช
๋ ๋ฆฌํจํค์ง ์์
์ afterAllArtifactBuild
์ ์ ๋น๋์ ํํฌ์์ ํธ๋ฆฌ๊ฑฐ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@vladimiry ๊ฐ์ฌํฉ๋๋ค. afterAllArtifactBuild์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ ์ ๋๋ค. ์์ถ์ ํ์ง ์๊ณ command.sh๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ด์ผ์ ์ํ ๊ฒ์ ๋๋ค. ๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
ํ๋๋ afterAllArtifactBuild์ ๋ํด ํฅ๋ฏธ๋กญ์ต๋๋ค.
@p3x-robot afterAllArtifactBuild
ํํฌ๋ ์ค์ ๋ก ์์๋๋ก ํธ๋ฆฌ๊ฑฐ๋์ง ์์ง๋ง ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋น๋ํ๋ Snap ๋๋ ๊ธฐํ ํจํค์ง ์ ํ์ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ์ฌ๊ธฐ ์์ ์ฝ๋ ์ํ์ ์ฐธ์กฐ snapFile
๋ ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ ํ์ผ์ด๋ฏ๋ก ์์ถ์ ํ๊ณ / unsquashfs
ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ณ ๋ค์ ์์ถํ ์ ์์ต๋๋ค/ snapcraft pack
. ์์ ์ฝ๋์์ Hunspell ์ฌ์ ์ Snap์ ./usr/share/hunspell
ํด๋์ ๋ฃ์ต๋๋ค.
@vladimiry ๋๋ ์๋ํ๋ Electron v4๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ ๊ณ ์น ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@p3x-robot ์ ๋ ์์ง๋ ๊ณ ์น ๊ฒ์ด ์๋ค๋ ๊ฒ์ ์ธ์ ํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
@vladimiry ํ์คํ ๊ณ ์น ๊ฒ์ด ์์ต๋๋ค. :)
Electron v5.0.2๊ฐ ์๋๋ฐ์ค ๋ฌธ์ ์ ํจ๊ป ์๋ํ๋์ง ์๋ ์ฌ๋์ด ์์ต๋๊น?
v.5.0.0๊ณผ ๋์ผํฉ๋๋ค. :smile:
์ด๊ฒ์ด ์ฃผ์ ์์ ๋ฒ์ด๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ง๋ง Debian(9)์ AppImages์ ๋ํด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
The setuid sandbox is not running as root.
๋ด๊ฐ ํ๋ ธ๋ค๋ฉด ์ ์ ํด ์ฃผ์ง๋ง (์ฃผ๋ก ์ด ํ ๋ก ์์) ์ด๊ฒ์ด Debian์์ ๊ธฐ๋ณธ์ ์ผ๋ก
๋ฐ๋ผ์ ์ด ์ ์์ ๋ํด:
- Electron์์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ๋ง์ญ์์ค. setuid ์๋๋ฐ์ค ๋์ ๋ค์์คํ์ด์ค ์๋๋ฐ์ค๋ฅผ ์คํํ ์ ์๋๋ก ๊ฐ๋ฐ์๊ฐ ์ปค๋์์ ๊ถํ ์๋ CLONE_USERNS๋ฅผ ํ์ฑํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ์๋ํ๋ค๋ ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ํ๊ณ (์ํ ๋ฐฉ๋ฒ์ ๋ํ ํํธ์ ํจ๊ป) .deb ํจํค์ง๋ฅผ ๋์์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ์ ์ํฉ๋๋ค.
์ค๋ฅ๊ฐ ํ์๋๊ธฐ ์ ์ ์ด๋ฌํ ๋ฉ์์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ์ ์์ต๋๊น? ์์ถ์ ํ๊ณ ๋ค์ ์์ถํ์ง ์๊ณ AppImage์ AppRun์ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์์ถ์ ํ๊ณ ๋ค์ ์์ถํ์ง ์๊ณ AppImage์ AppRun์ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@gcascio ์ ํํฐ ํฉ ์คํฌ๋ฆฝํธ๋ก ์ฃผ์ ํ ์ ์๋ ๋ก๋์ ์ ์ฌํ sh ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ๋ํ ๋ฉ์์ง๊ฐ ์ค๋ ๋์
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ afterpack
๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋ AppRun์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋๋ฉด ์ ๊ฐ ์๋ชป ์๊ณ ์๋ ๊ฒ์
๋๊น? ์ ์ด๋ appOutDir
์์๋ ์ฐพ์ ์ ์์ต๋๊น?
์ ํํฐํฉ์ด ํธ์ถ๋๋ฉด ์์ฑ๋ AppRun์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ก๋์ ๊ฐ์ sh ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ฑํ์ง๋ง AppRun ์คํฌ๋ฆฝํธ๋ฅผ ํจ์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์์ฑํ์ง ์์์ต๋๋ค. AppRun ์คํฌ๋ฆฝํธ๋ฅผ ํจ์นํ๋ ค๋ ๊ฒฝ์ฐ ๋ค์ ํจํค์งํ์ง ์๊ณ ๋ ํจ์นํ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ง์์ ์ ๊ฐ ์๋ชป ์ดํดํ์ต๋๋ค. ๊ทธ๋ผ ๋ค์ ํฌ์ฅํด์ ๊ฐ์ผ๊ฒ ๋ค์ ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ผ ๋ค์ ํฌ์ฅํด์ ๊ฐ์ผ๊ฒ ๋ค์ ๊ฐ์ฌํฉ๋๋ค.
@gcascio ํ ํ๋ฆฟ ์ด ํ์ํ ๊ฒฝ์ฐ.
ia ๋์ผํ "SUID ์๋๋ฐ์ค ๋์ฐ๋ฏธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฐพ์์ต๋๋ค" ์ค๋ฅ์ด์ง๋ง ์ค์น ํ ์ค๋
ํ์ผ์ ์์
์ด๊ฒ์ ์ด๋ป๊ฒ ๊ณ ์น ์ ์์ต๋๊น?
@vladimiry ์ ๋ ๋ฐ๋น์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ http://gitpod.io ๋ผ๋ ์จ๋ผ์ธ IDE Docker์์ ์์ ํ๊ณ ์์ต๋๋ค. sudo ์ก์ธ์ค ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ chrome-sandbox ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ผ๋ฐ์ ์ธ ํค์ ์ด๊ฒ์ด Chrome ๋ฌธ์ ์ด์ง Electron ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Electron์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ์ข์ ์ผ์ด ์๋๊น์?
์ด ์ฌ์ดํธ https://www.gitpod.io/blog/gitpodify/ ์์ ์ปจํ ์ด๋์์ Puppeteer๋ฅผ ์ฌ์ฉํ๋ ์๋ฃจ์ ์ ๋ณด์์ต๋๋ค.
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
์๋๋ฐ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด Electron์ด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ์ด์ ๊ฐ์ ์ฝ๋๋ฅผ ์๋ํ ์ ์์ต๋๊น? ์๋๋ฉด bash ํ์ผ๋ก ํธ์ถํ ์ ์์ต๋๊น?
์๋๋ฐ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด Electron์ด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ์ด์ ๊ฐ์ ์ฝ๋๋ฅผ ์๋ํ ์ ์์ต๋๊น? ์๋๋ฉด bash ํ์ผ๋ก ํธ์ถํ ์ ์์ต๋๊น?
์, ์ผ๋ฐ์ ์ผ๋ก ์ ์ ์ฑ ๋ฐ์ด๋๋ฆฌ์ --no-sandbox
์ธ์๋ฅผ ์ ๋ฌํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ค์น ํจํค์ง์ ๋ฐ๋ผ SUID ๊ถํ ๋นํธ(4755)๋ฅผ chrome-sandbox
๋ฐ์ด๋๋ฆฌ(deb, pacman ๋ฑ๊ณผ ๊ฐ์ ํจํค์ง์ ๊ฒฝ์ฐ)๋ก ์ค์ ํ๊ฑฐ๋ --no-sandbox
์ธ์๋ฅผ ๋ก๋ sh/bash ์คํฌ๋ฆฝํธ์ ํ๋์ฝ๋ฉํ ์ ์์ต๋๋ค. (Snap ๋ฐ AppImage์ ๊ฐ์ ํจํค์ง์ ๊ฒฝ์ฐ). ์ด๊ฒ์ด ๋ด๊ฐ ํ์ฌ ํ๋ ์ผ์ด๋ฏ๋ก ์ฑ ์ฌ์ฉ์๋ฅผ ์ํด ์๋ฌด ๊ฒ๋ ํ ํ์๊ฐ ์์ต๋๋ค(sudo ์ก์ธ์ค ํ์ ์์).
์ต๊ทผ ์ ์ ๋น๋ ๋ฆด๋ฆฌ์ค์๋ ์ด๋ฏธ --no-sandbox
์ธ์๊ฐ ํ๋์ฝ๋ฉ๋์ด ์์ง๋ง Snap ํจํค์ง์๋ง ํด๋น๋ฉ๋๋ค.
@vladimiry electron --no-sandbox ๋๋ถ์ ๋ฌธ์ ๋ฅผ ํต๊ณผํ ๊ฒ ๊ฐ์ต๋๋ค. SNAP๋ ํ์ธํ๊ฒ ์ต๋๋ค.
์ต์ ์ ์ ๋น๋๊ฐ ์์ง๋ง AppImage๊ฐ ์ฌ์ ํ ์์ ๋์ง ์์์ต๋๊น?
์ ์ 6์ด ์๋๋ฐ์ค ์ค๋ฅ๋ฅผ ์์ ํ๊ณ ์์ต๋๊น? ๋๋ ์ด๊ฒ์ ๊ณ ์น ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ v4์ ์์ต๋๋ค. 5 ๋๋ 6๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CLONE_NEWUSER
๋ผ๋ OS ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ถ ์ปค๋์ ๋ง์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ ์ด ๊ธฐ๋ฅ์ผ๋ก ๋น๋๋์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ [lwn, 2016] CLONE_NEWUSER
๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ Chromium์ setuid๊ฐ root์ธ ๋์ฐ๋ฏธ ๋ฐ์ด๋๋ฆฌ๊ฐ ํ์ํ ๋ค๋ฅธ ์๋๋ฐ์ฑ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋๋ก ๋์ฒดํฉ๋๋ค. ์ด ๋ฐ์ด๋๋ฆฌ๊ฐ ์๊ฑฐ๋ ์ฌ๋ฐ๋ฅธ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ( 4755
_root๊ฐ ์์ ) ์๋๋ฐ์ค๋ ๋ถํ
์ ์คํจํฉ๋๋ค.npm install
๋์ ๋ฃจํธ ์ก์ธ์ค๋ฅผ ์์ฒญํ์ง ์๊ธฐ ๋๋ฌธ์ npm install
์ ์ด๋ฌํ ๊ถํ์ ์ค์ ํ์ง ์์ต๋๋ค.๋ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
CLONE_NEWUSER
์ ๋ํ ๊ถํ ์๋ ์ก์ธ์ค๋ฅผ ํ์ฑํํฉ๋๋ค. ์ผ๋ถ ์ปค๋์ sysctl kernel.unprivileged_userns_clone=1
๋ณ๊ฒฝ์ ์ง์ํฉ๋๋ค.--no-sandbox
๋ก ์์ํ์ฌ ์๋๋ฐ์ฑ์ ์์ ํ ๋นํ์ฑํํ์ญ์์ค. ์ฃผ ํ๋ก์ธ์ค JS๊ฐ ์คํ๋๊ธฐ ์ ์ GPU ํ๋ก์ธ์ค๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ ๋ถํํ๊ฒ๋ JS์์ ์ด ์ธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.์ด๋ฌํ ์กฐ๊ฑด์ด ๊ฐ์ง๋๋ฉด Electron์์ ์๋๋ฐ์ค๋ฅผ ์๋์ผ๋ก ๋นํ์ฑํํ๋ ๊ฒ์ ์ง์ํ์ง ์์ต๋๋ค. ์ ์ ํ ๊ถํ์ ์ค์ ํ๋ ค๋ฉด ๋ถ์ฐ ํจํค์ง๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ๋๋ถ๋ถ์ ๋๊ตฌ(์ต์ํ electron-builder, electron-installer-snap, electron-installer-debian ๋ฐ electron-installer-redhat)๋ ์ด๋ฅผ ์๋์ผ๋ก ์ง์ํ๋ฉฐ ๊ฐ๋ฐ์์ ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์ง์ํ์ง ์๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋น ๋๊ตฌ์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ ์ด ์๊ฒฌ์ ๋งํฌํ์ญ์์ค.
์ด์ ๋จ๋ฝ์์ ์ธ๊ธํ๋ฏ์ด ๋ช
์์ ์ผ๋ก ๋ฌ๋ฆฌ ์ง์ํ์ง ์๋ ํ ํ๋ก๋์
์ Electron์ด ์๋ํ๋ ์๋๋ฐ์ค์ ์ก์ธ์คํด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ ๋ณ๊ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๋ถ์ฐ ํจํค์ง๊ฐ ์๋ npm install
๋ฅผ ํตํด Electron์ ์ค์นํ ๋ ์๋๋ฐ์ค๊ฐ ์๋ ๋ชจ๋๋ก ์๋ ์ ํ๋๋ ์ต์
์ ์ถ์ ํ๊ธฐ ์ํด #19550์ ์ด์์ต๋๋ค.
@p3x-robot ํด๊ฒฐ ๋ฐฉ๋ฒ 2์ ๋ํ ์ต์ํ์ ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. @vladimiry ์์ ์๊ฐ์ ์ป์ @nornagon์ด ์ฌ๊ธฐ์์ ์ธ๊ธํ์ต๋๋ค.
@gcascio ํ์ง๋ง ์ค๋ ํต์ ์ ๊ฑฐํ ์ ์์ต๋๊น? ์ ์ ๋น๋์์ ์ค๋ ์ด ์๋ํ๋ฏ๋ก ํ์ธํ ์ ์์ต๋๊น?
@gcascio ์๋ํฉ๋๋ค, ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ํจ๊ณผ๊ฐ์๋ค!
@gcascio no workie, 2๊ฐ์ ์์ด์ฝ์ ์์ฑํ๋ฏ๋ก ์ ์ v4.2.8๋ก ๋๋์๊ฐ์ต๋๋ค... :(
@p3x-robot ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ผ๋ฉฐ ์๊ฐ์ ์ฐพ๋ ๋๋ก ์ฆ์ ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
@nornagon ๊ทธ๋์ Debian์์ Electron 6์ ์คํํ ์๋ ์๊ณ ํฌ๋กฌ ํ๋ก์ธ์ค ๋ฃจํธ ๊ถํ์ ๋ถ์ฌํ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์ ๊ณต๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์ ๊ด์ ์์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ปค๋์์ CLONE_NEWUSER์ ๋ํ ๊ถํ ์๋ ์ก์ธ์ค๋ฅผ ํ์ฑํํฉ๋๋ค. ์ผ๋ถ ์ปค๋์ sysctl kernel.unprivileged_userns_clone=1๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ง์ํฉ๋๋ค.
๊ณ ๊ฐ ์ปดํจํฐ๋ฅผ ์ด์ง๋ฝํ๋ ๋ฐฉ๋ฒ์ ์ ํ ์์ต๋๋ค.
--no-sandbox๋ก ์คํํ์ฌ ์๋๋ฐ์ฑ์ ์์ ํ ๋นํ์ฑํํฉ๋๋ค. ์ฃผ ํ๋ก์ธ์ค JS๊ฐ ์คํ๋๊ธฐ ์ ์ GPU ํ๋ก์ธ์ค๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ ๋ถํํ๊ฒ๋ JS์์ ์ด ์ธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
--sandbox
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋๋ฐ์ค ๊ธฐ๋ฅ์ ๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์ด๊ฒ์ Electron์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ 99%๋ฅผ ๋ง์น์ง ์๋๋ค๋ ์ด์ ์ด ์์ต๋๋ค.
์ ๊ณต๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์ ๊ด์ ์์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
--no-sandbox
์ธ์๋ฅผ ์ถ๊ฐํ๋ ๋ก๋์ ์ ์ฌํ ์คํฌ๋ฆฝํธ/ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๊ฒ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ผ๋ฏ๋ก ์ต์ข
์ฌ์ฉ์ ์์
์ด ํ์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ก๋ ์ธ์๋ user namespace
์ง์์ ๋จผ์ ํ
์คํธํ๊ณ ํ์ํ ๊ฒฝ์ฐ์๋ง --no-sandbox
์ถ๊ฐํ ์ ์์ต๋๋ค.
chrome-sandbox ๋ฐ์ด๋๋ฆฌ setuid ๋ฃจํธ๋ฅผ ์ ๊ณตํ๋ @pronebird ๋ ์๋๋ฐ์ค ์์ด Electron์ ์คํํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ํํฉ๋๋ค. ๋ค์์ ๊ณ ๋ คํ์ญ์์ค: _๋น์ ์_ Electron ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ์ฌ๋์ด๋ฏ๋ก ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค(์: ์๋ช
). ๊ทธ๋ฌ๋ ์ฑ์ด ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ๋ก๋ํ๋๋ก ํ์ ํ ์ ์๋ ๊ฒฝ์ฐ(์: ์น์์ URL๋ก ์ด๋ํ์ฌ ์๋์ ์ผ๋ก ๊ฐ๋ฅ) ์ฑ์ ์ด๋ค ์ข
๋ฅ์ ์๋๋ฐ์ค ์์ด๋ ์ฌ์ฉ์์ ํ๊ฐ๋ฅผ ๋ฐ์ ํด๋น ์ฝ๋๋ฅผ ํ๋ณตํ๊ฒ ์คํํ ๊ฒ์
๋๋ค. Chrome์ด ์ฌ์ฉํ๋ ๋์ผํ ์๋๋ฐ์ฑ ์์คํ
์ ๋ฒ๊ทธ๋ฅผ ์
์ฉํ๋ ๊ณต๊ฒฉ์ ๋ํ ๊ฒ๋ณด๋ค ์ฑ์ ์๋๋ฐ์ค ์ฒ๋ฆฌ๋์ง ์์ ํ๋ก์ธ์ค์์ ์ ๋ขฐํ ์ ์๋ JS๋ฅผ ์คํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด์ ํจ์ฌ ๋ ๊ด์ฌ์ด ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ํ์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด _๋งค์ฐ ๋นจ๋ฆฌ_ ์์ ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.) chrome-sandbox
๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ฅผ ์ง์ ๊ฐ์ฌํ๋ ค๋ฉด https://chromium.googlesource์์ ์์ํ ์ ์์ต๋๋ค
Electron ์๋๋ฐ์ค ์์ด ์คํํ๋ ค๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์๋๋ฐ์ฑ์ ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด snapcraft ๋๋ flatpak, ํจํค์ง์๋ ์ปจํ ์ด๋ ๋ด๋ถ์ Electron์ ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํ๋ ์คํ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
@nornagon
chrome-sandbox ๋ฐ์ด๋๋ฆฌ setuid ๋ฃจํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋ฐ์ค ์์ด Electron์ ์คํํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ํํฉ๋๋ค. ์๊ฐํด ๋ณด์ญ์์ค: Electron ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ์ฌ๋์ ๊ทํ์ด๋ฏ๋ก ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค(์: ์๋ช ). ๊ทธ๋ฌ๋ ์ฑ์ด ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ๋ก๋ํ๋๋ก ํ์ ํ ์ ์๋ ๊ฒฝ์ฐ(์: ์น์์ URL๋ก ์ด๋ํ์ฌ ์๋์ ์ผ๋ก ๊ฐ๋ฅ) ์ฑ์ ์ด๋ค ์ข ๋ฅ์ ์๋๋ฐ์ค ์์ด๋ ์ฌ์ฉ์์ ํ๊ฐ๋ฅผ ๋ฐ์ ํด๋น ์ฝ๋๋ฅผ ํ๋ณตํ๊ฒ ์คํํ ๊ฒ์ ๋๋ค. Chrome์ด ์ฌ์ฉํ๋ ๋์ผํ ์๋๋ฐ์ฑ ์์คํ ์ ๋ฒ๊ทธ๋ฅผ ์ ์ฉํ๋ ๊ณต๊ฒฉ์ ๋ํ ๊ฒ๋ณด๋ค ์ฑ์ ์๋๋ฐ์ค ์ฒ๋ฆฌ๋์ง ์์ ํ๋ก์ธ์ค์์ ์ ๋ขฐํ ์ ์๋ JS๋ฅผ ์คํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด์ ํจ์ฌ ๋ ๊ด์ฌ์ด ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ํ์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๋งค์ฐ ๋นจ๋ฆฌ ์์ ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.)
๋ฌผ๋ก , ํ์ง๋ง ์๊ฒฉ ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ์ง ์๋ ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์๋๋ฐ์ค๋ฅผ ์คํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ ๋ ๊ทธ๊ฒ์ด Electron์ ๊ฒฝ์ฐ์ฌ์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์น ์คํ์ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํฑ ์ฑ์ ๊ตฌ์ถํ๊ณ ์น์์ JSON์ ๋ก๋ํ ์ ์์ง๋ง Safari๊ฐ ์๋ ๊ฒ์ฒ๋ผ ์น ํ์ด์ง๋ฅผ ํ์ํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ์ฌ๋๋ค์ด ์น์ฌ์ดํธ๋ฅผ ํฐ ๊ฐญ์ผ๋ก ๊ฐ์ธ๋ ์๋๋ ์ง๋ฌ์ต๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น?
์ค๋ฒํค๋๊ฐ ๋๋ฌด ๋ง์ ๊ฒ ๊ฐ์์. ์ค๋ ์ฐ๋ฆฌ ์ฑ์ ๋ถํธ์คํธ๋ฉ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๊ณ ๋ฐฐํฌํ์์ chrome-sandbox
๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ๊ฑฐํ๋๋ฐ, ์ด๊ฒ์ ๋ ๋ค๋ฅธ 5๋ฉ๊ฐ์
๋๋ค. ๋ถํํ๋ electron-builder
๋ ์ด ์ค ์ด๋ ๊ฒ๋ ์ง์ํ์ง ์์ผ๋ฏ๋ก ํํฌ๋ฅผ ์ถ๊ฐํ๊ณ ์ง์ ์ํํด์ผ ํฉ๋๋ค.
chrome-sandbox ๋ฐ์ด๋๋ฆฌ์ ์ฝ๋๋ฅผ ์ง์ ๊ฐ์ฌํ๋ ค๋ฉด https://chromium.googlesource.com/chromium/src/+/refs/heads/master/sandbox/linux/suid/sandbox์์ ์์ํ ์ ์์ต๋๋ค
๊ฐ์ฌ ํด์. ์ค์ ๋ก ์ํ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ฃจํธ ๊ถํ์ผ๋ก Google์ ์คํํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์์ ํ ์์ ํ ์ ์์ง๋ง ์ ์ ๋น๋๊ฐ npm์ ํตํด ๋ฐฐ์ก๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ค๊ฐ ์์๋์ง ์์๋์ง ํ์ธํ๋ ๊ฒ๋ ์ ๋ง ์ด๋ ต์ต๋๋ค. Electron์ฉ ์ปค์คํ ๋น๋ ์๋ฒ๋ฅผ ์ค์ ํ๊ณ ์์ค๋ฅผ ์ง์ ๊ฐ์ฌํด์ผ ํ์ต๋๋ค. ์ด๊ฒ์ ์์ฒญ๋ ๋ ธ๋ ฅ์ด ๋ ๊ฒ์ด๊ณ ๋๋ ๊ทธ๊ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค.
@pronebird ์๋๋ฐ์ค ๋ ผ์์ ๋๋ฌด ๊ด์ฌํ์ง๋ ์๊ฒ ์ง๋ง ์ฌ๊ธฐ์์ ์ ์ ์ฅ์ ํ์ฌ์ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์๋๋ฐ์ค๋ฅผ ํ์ฑํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์์ ํ ์์ ํ ์ ์์ง๋ง ์ ์ ๋น๋๊ฐ npm์ ํตํด ๋ฐฐ์ก๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ค๊ฐ ์์๋์ง ์์๋์ง ํ์ธํ๋ ๊ฒ๋ ์ ๋ง ์ด๋ ต์ต๋๋ค.
์ด๊ฒ์ ๊ทผ๋ณธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ์ ์ ๋น๋๋ npm์ ํตํด ๋ฐฐ์ก๋์ง ์์ต๋๋ค. npm์ electron
ํจํค์ง๋ ์ค์ ๋ก ์ฝ 2๊ฐ์ ํ์ผ๊ณผ ~40์ค์ JS์
๋๋ค. ์ค์ Electron ๋น๋๋ S3๋ฅผ ํตํด ์ ๊ณต๋๋ฉฐ S3์๋ ์ฒดํฌ์ฌ์ด ์์ผ๋ฏ๋ก ์ฌ๋๋ค์ ๋ค์ด๋ก๋ ์ค์ธ ๋น๋๊ฐ ์ค์ ๋ก Electron์ด ๋ฐฐ์กํ ๋น๋์ธ์ง ํ์ธํ ์ ์์ต๋๋ค.
@MarshallOfSound
์ด๊ฒ์ ๊ทผ๋ณธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ์ ์ ๋น๋๋ npm์ ํตํด ๋ฐฐ์ก๋์ง ์์ต๋๋ค. npm์ ์ ์ ํจํค์ง๋ ์ค์ ๋ก ์ฝ 2๊ฐ์ ํ์ผ๊ณผ ~40์ค์ JS์ ๋๋ค. ์ค์ Electron ๋น๋๋ S3๋ฅผ ํตํด ์ ๊ณต๋๋ฉฐ S3์๋ ์ฒดํฌ์ฌ์ด ์์ผ๋ฏ๋ก ์ฌ๋๋ค์ ๋ค์ด๋ก๋ ์ค์ธ ๋น๋๊ฐ ์ค์ ๋ก Electron์ด ๋ฐฐ์กํ ๋น๋์ธ์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ด ๋ง์ ๋น๋๊ฐ npm install
๋จ๊ณ์์ ๋ค์ด๋ก๋๋๋ค๋ ๊ฒ์
๋๋ค. ๋๋ ๊ทธ๋ค์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก npm์์ ํธ์คํ
๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง ์์์ต๋๋ค. S3์์ ํธ์คํ
๋๋๋ก ํ์ญ์์ค. ๋ด๊ฐ ํ๋ ธ๋ค๋ ๊ฒ์ ์ฆ๋ช
ํด ๋ณด์ง๋ง ์ฒดํฌ์ฌ์ ๋์ผํ S3์์ ํธ์คํ
๋๋ฉฐ, ์ด๋ ๊ทธ๋ฌํ ์์คํ
์ ๋ณด์ ๋ฑ๊ธ์ ๋ฎ์ถ๊ณ ํ์ชฝ ๋ค๋ฆฌ์๋ง ํด๋น๋ฉ๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ ํต์ฌ์ด ์๋๋๋ค. ๋น๋๊ฐ ๋ณ๊ฒฝ๋๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฒดํฌ์ฌ์ด ์
๋ฐ์ดํธ๋๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ด์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋จ์ํ ๋ด ์ชฝ์ ์ํ ๋ฐ ์์ ๊ด๋ฆฌ์
๋๋ค. ๋ฃจํธ ์์ = ์ ๋ง ๋์ ์ผ์ด ๋ฐ์ํ ์ํ์ด ๋ฎ์ต๋๋ค.
@pronebird chrome-sandbox ๋ฐ์ด๋๋ฆฌ๋ ํ์คํ 5MB๊ฐ ์๋์ด์ผ ํฉ๋๋ค. ๋ฒ๊ทธ์ ๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด #20049๋ฅผ ์ด์์ต๋๋ค. ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์๋๋ฐ์ฑ์ ๋นํ์ฑํํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. Chromium์ ์ํคํ
์ฒ๊ฐ app.commandLine.appendSwitch
ํธ์ถํ๋ ๋์ ๋ช
๋ น์ค์์ ์ง์ --no-sandbox
๋ฅผ ์ ๋ฌํด์ผ ํ๋๋ก ๋ง๋๋ ๊ฒ์ ๋ถํํ ์ผ์
๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ํผ ์คํฌ๋ฆฝํธ ์์ด ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค. #20049๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ด๋๋ฆฌ ์ ๊ฑฐ์ ๋ํ ์ฐ๋ ค๊ฐ ๊ฐ์ ๋ ๊ฒ์
๋๋ค. 200KB์ ์ถ๊ฐ ์ฉ๋์ด 5MB๋ณด๋ค ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
์์คํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ต์ ์ด ์์ต๋๊น? ๋ด node_modules/ ํด๋์ ์๋ ๋ชจ๋ ํญ๋ชฉ์ suid ๋ฃจํธ ๋นํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ํ ์์ฝ์ด ์์ต๋๋ค. ๊ฐ์ฌ ํด์.
@gardner ๊ฐ๋ฐ์ ๋ชจ๋์ ์์ ๋ ์ผ์ข
์ ์ฌ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ธ --no-sandbox
arg๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
VSCode๋ ์ต๊ทผ Electron 6์ผ๋ก ์ ํ๋์์ผ๋ฉฐ ์ด์ --no-sandbox
์ต์
์ด ์ ๊ณต๋์ง ์์ผ๋ฉด VSCode๊ฐ ๋ ์ด์ ์์๋์ง ์๋๋ค๋ ๋ณด๊ณ ๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์์ผ๋ก ๋์๊ฐ ๋ฐฉํฅ์ ๋ฌด์์
๋๊น? ์ฐธ์กฐ: https://github.com/microsoft/vscode/issues/81056
snap์ ์ด์ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. appimage์ ๊ฒฝ์ฐ ํ๋ ์์ฑ๋ ์ฝ๋๊ฐ ์์ต๋๋ค.
https://github.com/electron-userland/electron-builder/issues/3872#issuecomment -517875676
๋๋จธ์ง๋ ๋ชจ๋ฅด๊ฒ ๊ณ NPM, AppImage ๋ฐ SNAP๋ง ์ถ์ํฉ๋๋ค...
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ฒ ์คํฌ๋ฆฝํธ์ ์ธ์( --no-sandbox
)๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ชจ๋ ์ ํ์ ํญ๋ชฉ์ ๋ค์ ํจํค์งํด์ผ ํฉ๋๋ค.
Electron 6์๋ ์๋ฃจ์ ์ด ์์ต๋๋ค. ํจํค์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๊ฑฐ๋ ์์ ๋๋ ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค...
๋ ๋์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ํด. ์ ์ cli ๋๊ตฌ ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ๋ช ๋ น์ ์ค์ ํ ์ ์์ต๋๋ค.
sudo chown root pathToChromeSandboxDynamicallyGenearted && sudo chmod 4755 pathToChromeSandboxDynamicallyGenearted
์ ์ --ConfigSandbox์ ๊ฐ์ ๋ช
๋ น.
์ฌ์ฉ์๋ ์ด๋ฅผ ์ธ์ํ๊ณ ์๋๋ฐ์ค๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ์ ์คํํ์ ๋๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค์ด ์กฐ์น๋ฅผ ์ทจํ๊ณ ์ถ์์ง ๋ฌผ์ด๋ณผ ์ ์์ต๋๋ค. y ๋๋ n. ๊ทธ๋ฐ ๋ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋์ผ ํ ๋์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํฐ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง ๊ฒ์ด๋ฉฐ ์ ๋ ์น๋ฆฌํ ๊ฒ์
๋๋ค. ๊ณต๊ธ์
์ฒด๋ ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๋ขฐํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ๊ป ๊ฐ์ญ์์ค. ์ธํฐ๋ท ์ ์ฒด๋ฅผ ๊ฒ์ํ๋ ๋์ . ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ์ ์ด๋ณด์๋ค์๊ฒ ํจ์ฌ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ข์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ข ๋ฃ๋์์ง๋ง ์ ์ 7.0.0์์ ์ฌ์ ํ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ์์ ์ผ๋ก ์ด์ด์ง ์ปค๋ฐ์ด ์์ต๋๊น?
๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? v7.0.0์์๋ ์ฌ์ ํ ์ง์๋๋ฏ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ฌํญ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฑ ํจํค์ง์ ๋ฌธ์ ์ง๋ง Electron์ ๋ฌธ์ ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์, ์์์ด. ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ต์ข ์ฌ์ฉ์๊ฐ ์ถ๊ฐ ์์ ์ ์ํํ์ง ์์๋ ๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ต์ข ์ฌ์ฉ์๊ฐ ์ถ๊ฐ ์์ ์ ์ํํ์ง ์์๋ ๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์, ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด์ ์ ๋ ผ์๋ ์ ์ด ์์ต๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
WSL ์ฌ์ฉ์์๊ฒ ๋ฌธ์ ๊ฐ ์๊ณ (WSL์ ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ง์) WSL 1์ ์ค์ Linux ์ปค๋์ ์ฌ์ฉํ์ง ์์ต๋๋ค. WSL2 ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์ด ์ ํ ์ฌํญ์ ๋ํ ์ฐธ์กฐ: https://askubuntu.com/questions/1145525/how-to-create-proc-sys-kernel-unprivileged-userns-clone-file
CONFIG_USER_NS=y๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ฑํํ์ง๋ง ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ฉ๋๋ค. ์ด๊ฒ์ sysctl kernel.unprivileged_userns_clone=1์ ์ ์ํฉ๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
์ด ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ๊ด๋ จ ์ฃผ์ ์์ ํ์ธํฉ๋๋ค.
์, manjaro์ i3wm์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง ์ด๊ฒ์ผ๋ก ์๋ํฉ๋๋ค.
์ ๊ฐ ๋๋ฝ๋ ๊ฒ์ด ์์ต๋๊น? ์๋๋ฉด ๋ ์ด์ ๋ฃจํธ ์ก์ธ์ค ์์ด Electron ์ฑ์ ๋ค์ด๋ก๋ํ์ฌ ์คํํ ์ ์์ต๋๊น? ์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋น์์๋ง ํด๋น๋๋ค๋ ๊ฒ๊ณผ ๋ฉ์ธ๋ผ์ธ ์ปค๋์ด ๊ถํ์ด ์๋ ๋ค์์คํ์ด์ค ๋นํ์ฑํ๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค.
๋ด ๋๋ดํจ์ ์ฉ์ํ์ญ์์ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ ๋์ ์ผ๋ก ๋ฏธ์น ์ง์ ๋๋ค. Electron์ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์๋ Node.js API๋ฅผ ๋ ธ์ถํฉ๋๋ค. Electron ์ฑ์์ Chromium์ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉ/ํ์ฑํํ๋ ๊ฒ์ ์์ ํ ๋ฌด์๋ฏธํ๋ฉฐ, ์ด ๋ฌธ์ ๋ฅผ ์ง์ ํ๋ GitHub์ ๋ฒ๊ทธ ๋ณด๊ณ ์์์ ๋ณผ ์ ์๋ฏ์ด ๋ํ ๋งค์ฐ ๋น์์ฐ์ ์ ๋๋ค. ๊ฐ๋ฅํ๋ฉด ๋นํ์ฑํํ์ญ์์ค.
Electron์ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์๋ Node.js API๋ฅผ ๋ ธ์ถํฉ๋๋ค.
nodeIntegration
์ต์
์ v5๋ถํฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋น์์๋ง ํด๋น๋๋ค๋ ๊ฒ๊ณผ ๋ฉ์ธ๋ผ์ธ ์ปค๋์ด ๊ถํ์ด ์๋ ๋ค์์คํ์ด์ค ๋นํ์ฑํ๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋์ ๋ฐ๋น์์ ์คํํ๋ฉด์ ๋ด ์ปดํจํฐ์ ๋ฃจํธ ์ก์ธ์ค ๊ถํ์ด ์๋ค๋ ๊ฒ์ด ์ด์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ธฐ๋ฅ์ด ์๋ ๊ทธ๋๋ก ์ฌ์ฉ์๊ฐ ์ ์ ์ฑ(AppImage๋ก ๋๋ ๊ทธ๋ ์ง ์์) ์์ด
a) sudo
, ๋๋
b) ๊ถํ์ด ์๋ ๋ค์์คํ์ด์ค๋ฅผ ํ์ฑํํ๋๋ก sudo
๋ฅผ ๊ฐ์ง ์ฌ๋์ ์ค๋ํ ์ ์์ต๋๊น?
@black-puppydog ๊ธ์์. ์์ค์์ ์ฑ์ ๋น๋ํ๋ ๊ฒฝ์ฐ --no-sandbox
์ธ์๋ฅผ ์ ์์ ์ ๋ฌํ๋๋ก ์์ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์งํ ์ ์์ต๋๋ค. ๋์ผํ ํจ๊ณผ๋ก AppImage๋ฅผ ์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค(์์ถ์ ํ๊ณ ๋ค์ ํฌ์ฅํ์ฌ). ํ์ง๋ง ์ง์ ์๋ํ์ง๋ ์์์ต๋๋ค. ๋ํ ์ผ๋ถ AppImage ์ ์์๊ฐ ๋น๋์ ํด๋น ํ๋๊ทธ๋ฅผ ํฌํจํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํน์ ์ด๋ฏธ์ง๊ฐ ์ ๋๋ก ์๋ํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋น์ ์ด ์ณ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฉ์ธ๋ผ์ธ ์ปค๋์๋ ํญ์ ๋นํน๊ถ ๋ค์์คํ์ด์ค๊ฐ ํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋นํ์ฑํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ๋ฐ๋น์์์๋ง ๋ฌธ์ ๊ฐ ๋๋ ์ด์ ์ ๋๋ค.
@black-puppydog ๋ด ๊ธฐ์ต์ ๋ฐ๋ฅด๋ฉด, ์ค์น ํ๋ก๊ทธ๋จ์ ์์คํ
์ ๋ฐ๋น์์ ์ฒ์ ์ค์นํ ๋ ๋ฃจํธ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. ํ์ง๋ง ์, Debian(๋๋ Debian์ ์ปค๋ ํจ์น๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์์คํ
)์์๋ ๋ฃจํธ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค( sudo
๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํตํด). ๋๋ --no-sandbox
Electron ์ฑ์ ์คํํด์ผ ํฉ๋๋ค.
@ndorf ๋ฉ์ธ๋ผ์ธ Linux์์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๋ ๊ธฐ๋ฅ์ ์ปดํ์ผํ์ง ์์์ผ๋ก์จ ๋นํ์ฑํํ ์ ์์ง๋ง ๋ฐํ์์ ํ์ฑํ/๋นํ์ฑํํ๊ฑฐ๋ ๊ถํ ์๋ ํ๋ก์ธ์ค๋ก๋ง ์ ํํ ์ ์์ต๋๋ค. ๋ฐ๋น์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๊ฐ ๊ถํ ์๋ ํ๋ก์ธ์ค๋ก ์ ํ๋๋๋ก ์ปค๋์ ํจ์นํ์ง๋ง /proc/sys
์๋์ ์ค์ ์ผ๋ก ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ํด ํ์ฑํํ ์ ์์ต๋๋ค.
Debian์ด ์ด๋ฅผ ์ ํํ๋ ์ด์ ๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๊ฐ ์ค๋ ์ทจ์ฝ์ ์ ์ญ์ฌ๋ฅผ ๊ฐ์ง ์ฌ๊ฐํ ๋ณด์ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ถํ์ด ์๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๋ ๊ถํ์ด ์๋ ํ๋ก์ธ์ค๊ฐ ์์ฃผ ์ค๋ซ๋์ ๊ถํ์ด ์๋ ํ๋ก์ธ์ค๋ก ์ ํ๋ ๋ง์ ์ปค๋ ๊ธฐ๋ฅ(UID 0, ๊ธฐ๋ฅ, ํ์ผ ์์คํ ๋ง์ดํธ, ์ฅ์น inode ์์ฑ ๋ฑ)์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค. ๊ถํ์ด์๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ฌํ ์ผ์ ํ ์ ์์ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ์์กดํ๋ ๋ชจ๋ ์ปค๋ ์ฝ๋๋ ๊ถํ์ด์๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์๊ธฐ ์ด๋ฐ ์ผ์ ํ ์ ์๋ค๋ ์ง๊ธ ์ทจ์ฝํฉ๋๋ค.
๋ชจ๋ Linux ๋ฐฐํฌํ์ด ํด๋น ๊ธฐ๋ฅ์ ํ์ฑํํ ๋๊น์ง ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋ณธ ๋ฉ์์ง ๋ณด๊ธฐ:
ํ์ผ์ chown ๋ฐ chmodํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค.
๋ํ ์ฌ๊ธฐ #16631 (์ฃผ์)์ ์ฐธ์กฐํ์ญ์์ค
chrome-sandbox
๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์กฐ์ ํด์ผ ํฉ๋๋ค.* `sudo chown root chrome-sandbox` * `chmod 4755 chrome-sandbox`
appimage/snap ํจํค์ง๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ฒฝ์ฐ์ ๋ํ ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ง ๊ณต๊ฐํ์ง ์์์ง๋ง ๋ฌธ์ ๋ ๋ ์ฌ๊ฐํฉ๋๋ค.
--no-sandbox
argumentsmnt๋ก appimage๋ฅผ ์คํํ๋ฉด ์๋ํ์ง๋ง ์ด๊ฒ์ ํดํน์ ๋๋ค.
ํจํค์ง๋์ง ์์ ๋๋ ํ ๋ฆฌ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒฝ์ฐ ์๋ํฉ๋๋ค. chrome-sandbox
์ ๊ถํ์ ๋ณ๊ฒฝํ ํ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํจํค์งํฉ๋๊น?
@shrinidhi111 4755๋ ์ ์ด๋ pacman/deb ํจํค์ง์ ๊ฒฝ์ฐ ํจํค์งํ ๋ ๋ณด์กด๋ ์ ์์ต๋๋ค. ํจํค์ง๋ ํน์ ๊ฑฐ๋ฆฌ ์์ค์์ ์กฐ์ ํ ์๋ ์์ต๋๋ค( ์: . ๋ฃจํธ ์์ ์์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก Linux์ ์ ์ฅ์์์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ๊ด๋ จ ํ์ผ์ด ๋ฃจํธ ์์ ์๊ฐ ๋ฉ๋๋ค. AppImage ๋น๋์ ๊ฒฝ์ฐ ์ ์ ๋น๋ ๊ฐ ์์ง ์์์์ ๊บผ๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋ด๋ถ AppRun ์คํฌ๋ฆฝํธ์ --no-sandbox
arg๋ฅผ ๋ค์ ํจํค์งํ๊ณ ํ๋์ฝ๋ฉํฉ๋๋ค. Snap ํจํค์ง๋ ํ๋์ฝ๋ฉ๋ --no-sandbox
arg(๊ด๋ จ ์์ ์ฌํญ์ด ~6๊ฐ์ ์ ์ ์ถ๊ฐ๋จ)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋น๋์ ์ํด ๊ตฌ์ฑ๋ฉ๋๋ค.
@shrinidhi111 4755๋ ์ ์ด๋ pacman/dev ํจํค์ง์ ๊ฒฝ์ฐ ํจํค์งํ ๋ ๋ณด์กด๋ ์ ์์ต๋๋ค. ํจํค์ง๋ ํน์ ๊ฑฐ๋ฆฌ ์์ค์์ ์กฐ์ ํ ์๋ ์์ต๋๋ค( ์: . ๋ฃจํธ ์์ ์์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก Linux์ ์ ์ฅ์์์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ๊ด๋ จ ํ์ผ์ด ๋ฃจํธ ์์ ์๊ฐ ๋ฉ๋๋ค. AppImage ๋น๋์ ๊ฒฝ์ฐ ์ ์ ๋น๋ ๊ฐ ์์ง ์์์์ ๊บผ๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋ด๋ถ AppRun ์คํฌ๋ฆฝํธ์
--no-sandbox
arg๋ฅผ ๋ค์ ํจํค์งํ๊ณ ํ๋์ฝ๋ฉํฉ๋๋ค. Snap ํจํค์ง๋ ํ๋์ฝ๋ฉ๋--no-sandbox
arg(๊ด๋ จ ์์ ์ฌํญ์ด ~6๊ฐ์ ์ ์ ์ถ๊ฐ๋จ)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋น๋์ ์ํด ๊ตฌ์ฑ๋ฉ๋๋ค.
์ค๋ ํ์ผ์ ๋ง๋๋ ๊ฒ์ ํ๋ฅญํ ์์ด๋์ด์์ผ๋ฉฐ ๋ง์ ์์ ์ ์ ์ฝํ์ต๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
์ด๊ฒ ์ด๋ป๊ฒ ์์ง๋ ๋ฏธํด๊ฒฐ
์ค๋ ์์ ์์ ๋์์ต๋๋ค. appimage์ ํจ๊ป ์๋ํ๋ ์์ฒด ๋น๋๊ฐ ์์ต๋๋ค. ๋๋จธ์ง๋ ํด๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ์ค๋ ๋๋ ์์ฒญ๋๊ฒ ๊ธธ๋ฉฐ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ํฉ ์์ฝ์ด ์ด๋์ ์์ต๋๊น? ์๋ง๋ ๊ทธ๋ฌํ ์์ฝ์ ์ค๋ฅ์์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
https://github.com/electron/electron/issues/17972#issuecomment -495767027 ์ฒ๋ผ ๋ค๋ฆฌ๊ณ ๋ฃจํธ ์ก์ธ์ค ๊ถํ์ด ์๋ ์์คํ ์์๋ง ์ ์ ๊ธฐ๋ฅ์ ์ฝ๊ณ ์์ ํ๊ฒ ๊ฐ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ์ ์ํ๊ณ ์์ต๋๋ค. ์์คํ ์ด ์๋ชป๋ ๊ถํ ์ค์ ์ ๊ฐ์งํ๊ณ ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ์ฌ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๋ ์ฌ์ฉ์๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ข์ ์๋ ์์ง๋ง ์ด๋ ๋ณ๊ฐ์ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค. ๋ํ ๋ฃจํธ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์ ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ๋ก๊ฐ ์์์ผ๋ฉด ํ๊ณ , ํ์๋ณด๋ค ์ ๋ขฐํ ์ ์๋ ๋ฆฌ์์ค๊ฐ ๋ ์ํํ๋ค๋ ๊ฒ์ ์ ์ดํดํ๊ณ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฃจํธ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์ ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ๋ก
--no-sandbox
CLI ์ธ์.
vladimiry, ์๋ฅผ ๋ค์ด ํฐ๋ฏธ๋ ๊ฒฝํ์ด ๋ง์ง ์์ ์ต์ข ์ฌ์ฉ์ ๋๋ ์ ์๋ฅผ ๋ํํ๋ ์ฑ์ ์คํํ๋ ๊ฒ์ ์๊ฐํ์ต๋๋ค.
์๋ฅผ ๋ค์ด ํฐ๋ฏธ๋ ๊ฒฝํ์ด ๋ง์ง ์์ ์ต์ข ์ฌ์ฉ์ ๋๋ ์ ์๋ฅผ ๋ํํ๋ ์ฑ์ ์คํํ๋ ๊ฒ์ ์๊ฐํ๊ณ ์์์ต๋๋ค.
ํด๋น --no-sandbox
๋ฅผ ์ฑ ๋ฐ๋ก ๊ฐ๊ธฐ์ ํฌํจํฉ๋๋ค. ์ฌ๊ธฐ์ ์๋ ๋ชจ๋ Linux ํจํค์ง๋ kernel.unprivileged_userns_clone
์์คํ
๊ฐ์ ๊ด๊ณ์์ด ์ ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํจํค์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ด๊ฐ ๊ฐ๋ฐ์์ด๊ณ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ ์ ํ ๊ฒฝ๊ณ ๋ฅผ ํ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ค์ ๋๋ค. ๋ค์์คํ์ด์ค ์๋๋ฐ์ค๊ฐ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ์ ํ ๋ฐฐ์ฐ์ง ์์๊น์? ๋ํ ์ ๋ขฐํ ์ ์๋ ๋ฆฌ์์ค๊ฐ ๋ ์ํํ๋ค๋ ์ฌ์ค์ ๊ด๊ณ์์๊ฒ ์๋ฆฌ์ง ์๊ณ ๊ธฐ์กด ์๋ฃจ์ ์ด ์ ์๋ฆฌ์ ์๋ค๋ ์ฌ์ค๋ ๊ฑฑ์ ์ค๋ฝ์ต๋๋ค.
์ด ์๋ฃจ์ ์ WSL ๋๋ฌธ์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค.
WSL(์ ๊ฒฝ์ฐ์๋ WSL2)์์ electron
๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ ๋์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
X11 ์๋ฒ๋ฅผ ์ฌ์ฉํด๋ ์ ์๋ X11์ ํตํด ์คํํ ์ ์์์ต๋๋ค.
WSL ๋ด์์ ์คํํ๋๋ผ๋ Windows์ฉ ์ ์๋ฅผ ๋น๋ํด์ผ ํ์ต๋๋ค. ๊ทธ ํ์๋ ๋ชจ๋ ๊ฒ์ด ์์ธ์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
npm uninstall electron
export npm_config_platform=win32
npm install electron
unset npm_config_platform
์ค์ ํด์ ์ด ์ ์
sysctl kernel.unprivileged_userns_clone=1
WSL(Windows 10), WSL์ ์ค์น๋ Ubuntu 18.04์์ ์ด ๋ฌธ์ ๊ฐ ํ์๋ฉ๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
์ด(๊ฐ) ์๋ํ์ง ์์ต๋๋ค.
sudo sysctl kernel.unprivileged_userns_clone=1
sysctl: cannot stat /proc/sys/kernel/unprivileged_userns_clone: No such file or directory
chown ๋ฐ chmod๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ต์ ์ด ์๋๋๋ค.
@MarshallOfSound zip์ ๊ถํ์ ์ง์ํ์ง ์์ง๋ง ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ chmod ๊ถํ์ด ์๋๋ผ ์์ ์์ ๋๋ค. setuid ์๋๋ฐ์ค ๋์ฐ๋ฏธ๋ ๋ฃจํธ์๋ง ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ suid _to root_์ ๋๋ค. ๋ฃจํธ ๊ถํ์ ๋จผ์ ์ป์ง ์๊ณ ์ ์ ํ ๊ถํ์ ์ค์ ํ ์ ์๋ค๋ฉด ์ด๋ Linux์์ ๋งค์ฐ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ๋ ๊ฒ์ ๋๋ค. Linux์๊ฒ๋ ๋คํ์ค๋ฝ๊ฒ๋ ์ฐ๋ฆฌ์๊ฒ๋ ๋ถํํ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
zip _does_๋ ์ ๋์ค ๊ธฐ๋ฐ ์์คํ (๋๋ ์ ์ด๋ ๋ด๊ฐ ํ ์คํธํ Linux ๋ณํ)์ ๋ํ ๊ถํ์ ์ง์ํฉ๋๋ค. https://serverfault.com/a/585889/17620 ์ฐธ์กฐ
๊ถํ ๋นํธ๋ zip์ ์ค์ ๋๋ ํ ๋ฆฌ์ ํ์ผ ํค๋ ์ ๋ฏธ์ฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ ๋ฏธ์ฌ์ externalFileAttributes
ํ๋๋ ๊ฐ ํ์ผ/๋๋ ํ ๋ฆฌ ํญ๋ชฉ์ ๋ํ ๊ถํ ๋นํธ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
cc @MarshallOfSound
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค !
[gxz<strong i="6">@localhost</strong> build]$ ./Electron-0.1.1.AppImage
[23154:0521/155029.728314:FATAL:setuid_sandbox_host.cc(157)] 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-E0wZecV/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap(ๅๆ ธ)
[gxz<strong i="7">@localhost</strong> build]$ sudo ./Electron-0.1.1.AppImage
[sudo] gxz ็ๅฏ็ ๏ผ
[23191:0521/155048.067790:FATAL:electron_main_delegate.cc(211)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
Trace/breakpoint trap
[gxz<strong i="8">@localhost</strong> build]$
์ผ๋ฐ ์ฌ์ฉ์๋ก ์คํ, ์ค๋ฅ: FATAL:setuid_sandbox_host.cc(157)]
.root๋ก ์คํ, ์ค๋ฅ: FATAL:electron_main_delegate.cc(211)]
๊ทธ๋ฌ๋ ๋ด๊ฐ yum ํ์ ์ค๋ ์ ์ค์นํ ๋, ๋ฃจํธ๋ก ์คํํ๊ฑฐ๋ ์ผ๋ฐ ์ฌ์ฉ์๋ก ์คํํ๋ฉด ๋ฉ๋๋ค.ใ
sudo chown root chrome-sandbox
sudo chmod 4755 chrome-sandbox
์ด๊ฒ์ ์ ์๋ํฉ๋๋ค.
@cuixiping ์๋ํฉ๋๋ค :+1:
๋๋ ํ๋ค
$ find . -name chrome-sandbox
./node_modules/electron/dist/chrome-sandbox
$ sudo chown root ./node_modules/electron/dist/chrome-sandbox
$ sudo chmod 4755 ./node_modules/electron/dist/chrome-sandbox
Deepin์์ ์ ์๋ฅผ ์คํํ ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ ์ด ์ฝ๋๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
electron . --no-sandbox
๋น์ ์๊ฒ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค
์๋ํ์ง ์์ต๋๋ค
@fabiospampinato ๊ทํ์ ์ ์์ ๋ชจ๋ Linux ํจํค์ง ์ ํ์ ๋ํด ์๋๋ฐ์ค๋ฅผ ๋นํ์ฑํํ์ง๋ง ์ต์ํ DEB ๋ฐ Pacman ํจํค์ง๋ SUID ์๋๋ฐ์ค(์ปจํ ์ด๋์ ์ ์ฌํ ํจํค์ง๊ฐ ์๋ ๋ชจ๋ ํจํค์ง)์ ์ ์๋ํฉ๋๋ค. SUID ๊ถํ ๋นํธ ๋ฅผ
chrome-sandbox
๋ก ์ค์ ํ๊ธฐ ๊ด๋ จ ์ฝ๋ ๊ฐ ๋นํ์ฑํ๋๋ Snap/AppImage ํจํค์ง๊ฐ ์์๋ฉ๋๋ค.
์๋
ํ์ธ์ @vladimiry
์ฌ๊ธฐ์ ์ฒจ๋ถํ ๋งํฌ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๋์์ค ์ ์๋?
๋ํ ์ ์ ๋น๋ ์ ํํฐ ํฉ ์คํฌ๋ฆฝํธ์์ --no-sandbox๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ์ ์์์ต๋๊น?
๊ฐ์ฌ ํด์
@tushar-compro, ์ฌ๊ธฐ https://github.com/vladimiry/ElectronMail/tree/704865abe5187bbf3e9f15ba5a83612f249f8118/scripts/electron-builder/hooks/afterPack์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ถ ํจํค์ง ์ ํ์ ๊ฒฝ์ฐ ์ ํํฐํฉ ์คํฌ๋ฆฝํธ์์ 4755๋นํธ๋ฅผ ์ค์ ํ๊ณ ์ฌ์ ํ appimage+snap ํจํค์ง๋ฅผ ๋ค์ ํฌ์ฅํฉ๋๋ค. ์ค์ ๋ก electron-builder๋ ์ด๋ฏธ --no-sandbox
arg๋ฅผ snap์ ํฌํจํ์ง๋ง ์์ง appimage https://github.com/electron-userland/electron-builder/pull/4496 ์๋ ํฌํจ๋์ด ์์ง ์์ต๋๋ค https://github.com/electron-userland/electron-builder/blob/fc85a42a26df863b5bade4b769182b299ff24e0a/packages/app-builder-lib/templates/linux/after-install.tpl #L7. ๋ฐ๋ผ์ ์ต์ ์ ์ ๋น๋ ๋ฒ์ ์ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ฅผ ์ํด ์์
์ ๋จ์ํํด์ผ ํฉ๋๋ค.
@๋ธ๋ผ๋๋ฏธ๋ฆฌ
๋ฐ๋ก ๋น์ ์ด ๋ชฉํ๋ฅผ์ํ 4755 ๋นํธ๋ฅผ ์ ์ธํ ๋ค๋ฅธ์ appimage์ ์ค์ ํ๊ณ ์ค๋
๊ฒ์ ์ดํด I๋ฅผํ๊ณ ์์ต๋๋ค.
https://github.com/vladimiry/ElectronMail/blob/704865abe5187bbf3e9f15ba5a83612f249f8118/scripts/electron-builder/hooks/afterPack/index.ts#L17
๊ทธ๋ฌ๋ ๋ฐ๋น์ ๋ฐฐํฌํ์์ .appimage ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ์ฌ๊ธฐ์์ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
๊ทธ๋ฌ๋ ๋ฐ๋น์ ๋ฐฐํฌํ์์ .appimage ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด appimage๋ ์ฌ์ ํ ํน๋ณํ ๋์ฐ๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ํจํค์งํ๊ณ --no-sandbox
๋ฅผ ./AppRun
์คํฌ๋ฆฝํธ์ ํฌํจํฉ๋๋ค. https://github.com/vladimiry/ElectronMail/blob/704865abe5187bbf3e9f15ba5a83612f249f8118/scripts/electron-builder/build-appimage.ts ์์ DISABLE_SANDBOX_ARGS_LINE
ํค์๋๋ฅผ ์ฐพ์ต๋๋ค .
๊ทธ๋ฌ๋ ๋ฐ๋น์ ๋ฐฐํฌํ์์ .appimage ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด appimage๋ ์ฌ์ ํ ํน๋ณํ ๋์ฐ๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ํจํค์งํ๊ณ
--no-sandbox
๋ฅผ./AppRun
์คํฌ๋ฆฝํธ์ ํฌํจํฉ๋๋ค. https://github.com/vladimiry/ElectronMail/blob/704865abe5187bbf3e9f15ba5a83612f249f8118/scripts/electron-builder/build-appimage.ts ์์DISABLE_SANDBOX_ARGS_LINE
ํค์๋๋ฅผ ์ฐพ์ต๋๋ค .
์ต์ ์ ์ ๋น๋๋ snap๊ณผ appimage ๋ชจ๋์์ ์๋์ผ๋ก no sanbox ์ธ์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
@๋ธ๋ผ๋๋ฏธ๋ฆฌ
๊ทธ๋์, ๋น์ ์ด ํ 4755 ๋นํธ ์ค์ ์ด appimage ๋ฐ snap ์ด์ธ์ ์ค์น ํ๋ก๊ทธ๋จ์์ํ ๊ฒ์์ ์ดํดํ๋ ๊ฒ์ด ๋ง์ต๋๊น? ๊ทธ๋ฆฌ๊ณ appimage์ ๊ฒฝ์ฐ no-sandbox๋ฅผ ์ค์ ํ์ต๋๋ค. ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
@p3x-๋ก๋ด
์. ๋น์ ์ ๋ถ๋ถ์ ์ผ๋ก ๋ง์ต๋๋ค.
์ต์ ์ ์ ๋น๋๋ snap๊ณผ appimage ๋ชจ๋์์ ์๋์ผ๋ก no sanbox ์ธ์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์์ง ์ฝ๋์์ ์ฐพ์ ์ appimage ๋ณ๊ณผ ์ ์ฌํ ์ค ๋ํซ ์ด (์ฌ์ ํ ์ด๋ ค https://github.com/electron-userland/electron-builder/pull/4496) ์ค๋ ์ ์ฉ ํ๋. ์ด์จ๋ ์ ๊ฒฝ์ฐ์๋ sanbox ๊ด๋ จ ์ด์ธ์ ์ถ๊ฐ ์ธ์๋ฅผ ๋ฃ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ์ฌํฌ์ฅ์ด ํ์ํฉ๋๋ค.
๊ทธ๋์, ๋น์ ์ด ํ 4755 ๋นํธ ์ค์ ์ด appimage ๋ฐ snap ์ด์ธ์ ์ค์น ํ๋ก๊ทธ๋จ์์ํ ๊ฒ์์ ์ดํดํ๋ ๊ฒ์ด ๋ง์ต๋๊น? ๊ทธ๋ฆฌ๊ณ appimage์ ๊ฒฝ์ฐ no-sandbox๋ฅผ ์ค์ ํ์ต๋๋ค. ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
์ณ์. ๊ทธ๋ฌ๋ ํ๋ ์ ์ ๋น๋๋ ๋ด๋ถ์ ์ผ๋ก 4755๋ฅผ ์ค์ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ค์๊ฐ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ snap/appimage์ ๋ํด ์ค์ ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ค๋ ์ ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด ์ ์ ๋ฐ์ด๋๋ฆฌ๋ก ์ค์ ๋ 4755๋นํธ๋ก ์์ํ์ง ์์ ๊ฒ์ ๋๋ค.
@๋ธ๋ผ๋๋ฏธ๋ฆฌ
๋ด ์ฑ ์ด๋ฏธ์ง๊ฐ ๋ฐ๋น์์์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ no-sandbox๋ฅผ ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋๋ ์ด ๊ฒฝ์ฐ์ ๋ด๊ฐ ๋ค์ ํฌ์ฅํ ํ์๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๊ฒ์ ํ๊ธฐ ์ํ ์ ์ ๋น๋์ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค. ์๋๋ฉด ์ฌํฌ์ฅ๋ ํ์ํ๋ค๊ณ ์๊ฐํ์ญ๋๊น?
๊ทธ๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋์์ด ๋ ์ ์๋ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ์๋ ค์ค ์ ์์ต๋๊น?
๋ํ 4755๋นํธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ๋ ๋ ๊ฐ์ง ์ต์
์ด ๋ชจ๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ด๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๊น?
๋ํ 4755๋นํธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ๋ ๋ ๊ฐ์ง ์ต์ ์ด ๋ชจ๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด 4755๋ฅผ appimage๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
--no-sandbox
๋ช
๋ น์ค ์ธ์๋ก appimage ํ์ผ ์์--no-sandbox
appimage ํ์ผ์ ์๋ ./AppRun
์คํฌ๋ฆฝํธ์ ํฌํจ์ํค์ญ์์ค(๋ค์ ํจํค์งํด์ผ ํจ).๊ทธ๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋์์ด ๋ ์ ์๋ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ์๋ ค์ค ์ ์์ต๋๊น?
๋ชจ๋ ๋ฌธ์์์ ๋ฌธ์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ด๋ จ ๋ฌธ์๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
๋ํ 4755๋นํธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ๋ ๋ ๊ฐ์ง ์ต์ ์ด ๋ชจ๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด 4755๋ฅผ appimage๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
--no-sandbox
๋ช ๋ น์ค ์ธ์๋ก ์์--no-sandbox
appiamge ํ์ผ์ ์๋./AppRun
์คํฌ๋ฆฝํธ์ ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค(๋ค์ ํจํค์งํด์ผ ํจ).๊ทธ๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋์์ด ๋ ์ ์๋ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ์๋ ค์ค ์ ์์ต๋๊น?
๋ชจ๋ ๋ฌธ์์์ ๋ฌธ์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ด๋ จ ๋ฌธ์๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
์ ์ ๋น๋๋ ์ต๊ทผ์ --no-sandbox
์ ./AppRun
์๋ฒ ๋ฉํ์ต๋๋ค. ์์ ์๋ ๋ค์ ํจํค์งํ์ง๋ง ์ง๊ธ์ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ์ ๋ ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ ์ ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@๋ธ๋ผ๋๋ฏธ๋ฆฌ
์. 4755๋ง ์ค์ ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. 4755์์๋ chrome-sandbox์ ์์ ์๋ฅผ root๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ด์จ๋ ๋ง์ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ฌ ์๋๋ฐ์ค ์์์ ์ค์ ํ๊ฒ ์ต๋๋ค.
@p3x-๋ก๋ด
์ด ์์
์ ์ํํ๋ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ ๋งํฌ(์ ์ ๋น๋ ๋ฆฌํฌ์งํ ๋ฆฌ)๋ฅผ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
https://github.com/patrikx3/onenote
@๋ธ๋ผ๋๋ฏธ๋ฆฌ
์. 4755๋ง ์ค์ ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. 4755์์๋ chrome-sandbox์ ์์ ์๋ฅผ root๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ด์จ๋ ๋ง์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ฌ ์๋๋ฐ์ค ์์์ ์ค์ ํ๊ฒ ์ต๋๋ค.@p3x-๋ก๋ด
์ด ์์ ์ ์ํํ๋ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ ๋งํฌ(์ ์ ๋น๋ ๋ฆฌํฌ์งํ ๋ฆฌ)๋ฅผ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
์ ์ ๋น๋ ์ต์ ๋ฒ์ ์ ./AppRun์ --no-sandbox๋ฅผ ํฌํจํฉ๋๋ค. ์์ ์๋ ๋ค์ ํจํค์งํ์ง๋ง ์ง๊ธ์ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ ์ ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐฉ๊ธ ์ต์ ์ ์ ๋น๋ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ํ
์คํธํ์ผ๋ฉฐ ./AppRun sh ์คํฌ๋ฆฝํธ์ --no-sandbox๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ์ฑ ์ด๋ฏธ์ง๋ฅผ ์์ํ๋ฉด ์๋ ค์ง [759164:1013/160044.572604:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found
๊ฐ์ ์ค๋ฅ๋ก ์คํจํฉ๋๋ค. ์์คํ
์์ kernel.unprivileged_userns_clone
ํ๋๊ทธ๋ฅผ ํ์ฑํํ์ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด sudo sysctl kernel.unprivileged_userns_clone=0
์ ๊ฐ์ด ๋นํ์ฑํํ๊ณ appimage ํ์ผ์ ๋ค์ ์์ํ์ญ์์ค.
์ ์ ๋น๋ ์ต์ ๋ฒ์ ์ ./AppRun์ --no-sandbox๋ฅผ ํฌํจํฉ๋๋ค. ์์ ์๋ ๋ค์ ํจํค์งํ์ง๋ง ์ง๊ธ์ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ ์ ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐฉ๊ธ ์ต์ ์ ์ ๋น๋ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ํ ์คํธํ์ผ๋ฉฐ ./AppRun sh ์คํฌ๋ฆฝํธ์ --no-sandbox๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ์ฑ ์ด๋ฏธ์ง๋ฅผ ์์ํ๋ฉด ์๋ ค์ง
[759164:1013/160044.572604:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found
๊ฐ์ ์ค๋ฅ๋ก ์คํจํฉ๋๋ค. ์์คํ ์์kernel.unprivileged_userns_clone
ํ๋๊ทธ๋ฅผ ํ์ฑํํ์ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉดsudo sysctl kernel.unprivileged_userns_clone=0
์ ๊ฐ์ด ๋นํ์ฑํํ๊ณ appimage ํ์ผ์ ๋ค์ ์์ํ์ญ์์ค.
์ด์ํ๊ฒ๋ ์ต์ ์ ์ ๋น๋๋ก 10k ์ค๋ ์ค์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์คํ ์ ์ ๋น๋๋ ํด๋น ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค ...
10k ์ค๋ ์ด ์์ต๋๋ค
์ฐ๋ฆฌ๋ ์ค๋ ์ด ์๋๋ผ ์ฑ ์ด๋ฏธ์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋ฌผ๋ก Snap์๋ ์์์ ์ฐธ์กฐํ ๊ฒ์ฒ๋ผ arg๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. https://github.com/electron-userland/electron-builder/blob/df5d050e47f2030e48e65c0e3b542c3aec61e9de/packages/app-builder-lib/src/targets/s1p.7ts -L202.
10k ์ค๋ ์ด ์์ต๋๋ค
์ฐ๋ฆฌ๋ ์ค๋ ์ด ์๋๋ผ ์ฑ ์ด๋ฏธ์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋ฌผ๋ก Snap์๋ ์์์ ์ฐธ์กฐํ ๊ฒ์ฒ๋ผ arg๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. https://github.com/electron-userland/electron-builder/blob/df5d050e47f2030e48e65c0e3b542c3aec61e9de/packages/app-builder-lib/src/targets/s1p.7ts -L202.
๋น์ ์ด ์ณ์ต๋๋ค. ์ด๋ค ์ด์ ์์์ธ์ง ๊ทธ๊ฒ์ด appimage์์ ์ํ๋์๋ค๊ณ ์๊ฐํ๊ณ ์ฌํจํค์ง ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ์๋๋ฐ์ค ์์์ ์ถ๊ฐํ์ง๋ง ๋ค์ ์๋ํ๋๋ฐ ๋๋ฝ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๊ทธ๋์ ๋ด ๋น๋์ ๋๋๋ฆฌ๊ธฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๊ณต์ฅ. ์ฃ์กํฉ๋๋ค. ๋ด corifeus-builder์์ ๋ด๊ฐ ๋ฌด์์ ํ๊ณ ์๋์ง ๋ณผ ์ ์์ต๋๋ค. https://github.com/patrikx3/corifeus-builder/blob/master/src/utils/appimage/after-all-artifact-build.js
์๋ ํ์ธ์ @nornagon ์ด ๋ฌธ์ ๊ฐ ์ผ๋ง๋ ํํ ๋น ๋ฅธ ์์ ์์ต์๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๊น?
ํธ์ง: ์ปค๋ฎค๋ํฐ ๊ฒฉ๋ ค ๋๋ถ์ FR #26478์ ์ด์์ต๋๋ค.
@gabefair ํฉ๋ฆฌ์ ์ธ ์ ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. PR ์คํ์ ๊ด์ฌ์ด ์์ผ์ญ๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
CONFIG_USER_NS=y
๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๊ธฐ๋ฅ์ ํ์ฑํํ์ง๋ง ์ฌ์ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ ์๋ ์ฌ์ฉ์๋ก ์ ํ๋ฉ๋๋ค. ์ด ์ ์sysctl kernel.unprivileged_userns_clone=1