티스토리 뷰
[Jenkins, LinuUnreal, UE] refusing to run with root privileges 에러
쉬엄쉬엄하자 2023. 5. 16. 10:110.
이 포스팅에서는 언리얼 엔진을 젠킨스 에이전트 노드에서 빌드할때 발생하는 refusing to run with root privileges 에러를 해결하는 방법을 서술합니다.
This post describes how to resolve the refusing to run with root privileges error when building Unreal Engine on the Jenkins agent node.
1. 원인 cause
바로 해결방법만 알면 독자분들이 편하겠지만 그것은 우리의 식견을 넓히는데 좋은 방향은 아닙니다. 원인부터 짚어보죠.
에러 문구 말 그대로 언리얼 엔진 빌드를 루트 권한으로 수행하였기 때문에 발생하는 에러입니다.
리눅스에서는 명령어를 루트 권한으로 수행하려고 할 경우 보안상의 위험으로 오류를 발생시키는 경우가 있습니다. 여기서는 언리얼 빌드를 위한 명령어가 해당 되겠죠.
젠킨스 잡은 일반적으로 쉘 스크립트 실행을 통해 이루어집니다. 그러면 이 쉘 스크립트를 실행하는 사용자는 무엇일까요? sudo 명령어를 쓰지도 않았는데 왜 루트 권한으로 실행할까요?
그 이유는 초기에 젠킨스 에이전트 연결을 루트권한으로 실행하였기 때문입니다. 젠킨스 콘솔에서 각 노드마다 연결을 위한 명령어가 있을텐데 이 명령어를 루트 권한으로 실행하면 이후에 쉘 스크립트를 수행하는 사용자도 루트로 설정됩니다.
현재 본인 환경이 루트로 연결되어 있는지 확인하기 위해서는 젠킨스 관리 -> 노드 관리 -> 문제가 되는 노드 선택 -> 환경 정보 화면으로 이동합니다. 그리고 아래로 스크롤하여 user.name, user.home 등이 root로 되어 있는지 확인합니다.
Readers will be comfortable if they know the solution right away, but that is not a good way to broaden our knowledge. Let's start with the cause.
Error phrase This is an error that occurs because the Unreal Engine build was literally executed with root privileges.
In Linux, if you try to execute a command with root authority, it may cause an error as a security risk. This would be the command for Unreal build.
Jenkins jobs are usually done via shell script execution.
So what user is running this shell script? I didn't even use the sudo command,
so why run it with root privileges?
The reason is that you initially run the Jenkins agent connection with root privileges.
There will be a command for connecting to each node in the Jenkins console.
If you run this command with root privileges, the user who executes the shell script later will also be set as root.
To check if your current environment is connected as root, go to Jenkins Management -> Node Management -> Select the node -> Environment Information screen. Then scroll down and make sure that user.name, user.home, etc. are root.
2. 해결 Sol
해결방법은 젠킨스 연결을 일반 사용자로 다시 하는 것입니다. 이러면 쉘 스크립트 명령어를 일반 사용자 권한으로 실행 하게 되고 refusing to run with root privileges 에러도 사라지게 됩니다.
하지만 루트권한이 필요할 경우도 있습니다. 이러한 경우 기본 사용자로 젠킨스 연결을 한 뒤에 쉘 스크립트에서 루트 권한이 필요한 경우에만 sudo 명령어를 통해 루트 권한으로 명령어를 수행하면 됩니다.
The workaround is to recreate the Jenkins connection as a regular user. This will execute the shell script command with normal user privileges
and the refusing to run with root privileges error will also disappear.
However, in some cases root privileges are required. In this case, after connecting to Jenkins as the default user, execute commands with root privileges through the sudo command only when root privileges are required in shell scripts.
3. 마치며 Conclusion
리눅스 환경에서 젠킨스 쉘 스크립트를 통해 언리얼 빌드를 수행하려고 할 때 refusing to run with root privileges 에러를 해결하는 방법에 대해서 알아 보았습니다. 아래는 이 오류와 함께 혹은 이 해결방안을 진행하면서 생길 수 있는 또 다른 문제들입니다.
We looked at how to resolve the refusing to run with root privileges error when trying to run Unreal build through Jenkins shell script in Linux environment. Below are other issues you may encounter with this error or while working through this solution.
4. 관련 이슈 Related issues
- 일반 사용자로 젠킨스 에이전트 연결 명령어가 실패하는 경우 (jarCache 디렉토리 권한 문제)
If the Jenkins agent connection command fails as a normal user (jarCache directory permission problem)
- 일반 사용자로 언리얼 엔진 빌드가 실패하는 경우
If your Unreal Engine build fails as a regular user
- Total
- Today
- Yesterday
- 언리얼 기초
- Jenkins
- C언어기초
- 백준
- 언리얼
- 젠킨스
- Unreal Header Tool
- 유니티 직소퍼즐 구현
- 알고리즘
- Add Node
- 유니티
- Jenkins Build Periodically
- c언어 기초
- 알고리즘기초
- refusing to run with root privileges
- 빌드 주기
- 언리얼 빌드
- 안드로이드
- dfs
- 깃 허브 오류 해결
- C++
- Connecting Jenkins Agent
- 구글맵
- c언어강의
- 안드로이드 구글맵
- UHT
- 깃 용량문제
- Connecting Jenkins
- 젠킨스 에이전트 연결
- 언리얼 사용자 정의 구조체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |