jovyan root 문제를 해결해보자

jovyan root 문제를 해결해보자

JupyterHub나 Kubeflow를 다룰때 마주칠 수 밖에 없는

jovyan root권한 문제를 해결해보는 글입니다.

Jovyan

jovyan에 격분하는 사람들

구글에 jovyan만 쳐봐도 격정이 느껴지는 글들이 참 많습니다. 왜냐하면 jupyter를 다룰 때 jovyan이라는 user가 생성되고 이 유저에 root권한이 필요한 경우가 많은데, jovyan 유저에 대한 패스워드를 공개하고 있지 않기 때문입니다. 그래서 root권한을 얻기위해서 여러가지 삽질을 정말 많이 시도를 했었고, 관련 글도 수도없이 봐왔습니다.

*Jovyan이 뭔지 잠깐 알아보자면

  • 목성의.
  • Jovian planets 목성형 행성
  • noun – an inhabitant of Jupyter

을 뜻하는데, jupyter를 사용하는 유저들을 지칭하기 위해 만든 말이라고 합니다.

sudoer

그 전에 알아야할 개념이 있습니다. 바로 sudoer입니다. 먼저 sudo란 특정 사용자의 권한을 얻어서 수행할 수 있게 하는 명령어 입니다. 그리고 일반 사용자에게 sudo 권한을 부여하기 위해서는 /etc/sudoers 파일에 계정을 설정해 주어야 합니다. 그렇다면 jovyan이 sudo권한을 갖기 위해서는? 바로 /etc/sudoers에 jovyan을 등록시켜주면 됩니다.

저는 Dockerfile에서 수정이 필요했습니다. Kubeflow든 JupyterHub든 kubernetes 상에서 운영을 하고 있었거든요.

그래서 RUN printf '\n# jovyan user can assume sudo privilege\njovyan ALL=(ALL:ALL) NOPASSWD:ALL' >> etc/sudoers 를 Dockerfile에 넣어줌으로써, /etc/sudoers에 jovyan을 올릴 수 있게 되었습니다. 저대로 올라간다면

1
2
3
# User privilege specification
root ALL=(ALL:ALL) ALL
jovyan ALL=(ALL) NOPASSWD:ALL

이렇게 되겠네요.

여러 우회 방법들이 있습니다만, 제 기준에서는 이게 가장 깔끔하고 쉬웠던 것 같습니다.

jovyan root 문제를 해결해보자

http://tkdguq05.github.io/2022/09/18/jovyan-sudoers/

Author

SangHyub Lee, Jose

Posted on

2022-09-18

Updated on

2023-12-08

Licensed under

Comments