저는 Linux Mint를 사용하여 로컬 CI 서버를 설정하려는 Java 개발자입니다. 제가 사용하고 싶은 중요한 도구 중 하나는 다양한 버전의 라이브러리/언어(예: Java/Scala/Maven)를 쉽게 설치하고 관리할 수 있게 해주는 도구인 SDKMAN입니다.
지금까지 저는 항상 일반 사용자로서 로컬 컴퓨터에 이 프로그램을 설치해 왔으며 매우 원활하게 실행되고 있습니다. 문제는 내가 구성한 시스템에 여러 다른 사용자(예: Jenkins/Docker/등의 특정 사용자)가 있어야 한다는 것입니다.
이러한 사용자가 SDKMAN을 사용할 수 있도록 하기 위해 가이드를 따랐습니다.여기에 소개- 거의 성공했어요. 설치는 ROOT로 수행됩니다. 사용자가 이 폴더에 액세스할 수 있도록 하기 위해 다음을 실행했습니다.
sudo chmod -R a+w /usr/local/sdkman
좋아요 그것을 가져와. 다른 사용자로 로그인했습니다(젠킨스) 최신 버전의 Scala를 설치해 보세요. 설치 과정은 순조로웠습니다. 그러나 다시 로그인하여 다른 사용자로 로그인하면(루스트어바웃) Scala를 설치해 보았는데 버전이 다릅니다. 이것은 질문을 제기합니다. 출력은 다음과 같습니다
$ sdk install scala 2.12.7
Downloading: scala 2.12.7
In progress...
Installing: scala 2.12.7
mv: cannot move '/usr/local/sdkman/tmp/out/scala-2.12.7' to
'/usr/local/sdkman/candidates/scala/2.12.7': Permission denied
Done installing!
Do you want scala 2.12.7 to be set as default? (Y/n): n
폴더인거 같은데/usr/local/sdkman/후보/스칼라사용자가 생성함젠킨스권한/소유권을 다음과 같이 설정합니다.
drwxrwxr-x 3 jenkins jenkins 4096 May 9 12:06 scala
따라서 사용자는루스트어바웃아무것도 추가/수정할 수 없습니다! 따라서 SDKMAN 사용의 전체 개념은 여기에 적용되지 않습니다! 언어/라이브러리를 설치할 수 있지만 사용자는 액세스 권한이 없는 것 같아서 다른 버전을 설치할 수 없는 것 같습니다.
내 질문은 원하는 결과를 얻기 위해 여기에서 권한을 처리하는 방법입니다(각 사용자는 원하는 것을 설치할 수 있습니다). SDKMAN 사용자를 위한 별도의 그룹을 생성하고 기본 폴더의 재귀 그룹 소유권을 "sdk"로 변경하려고 시도했지만 새 후보가 생성되면 소유자/그룹은 작업을 수행하는 사용자 이름과 동일하고 동일합니다.
임시 수정 방법은 그룹 솔루션을 진행하고 필요한 모든 버전의 도구/언어를 설치한 후 다음을 수행하는 것입니다.
sudo chgrp -R sdk /usr/local/sdkman
폴더에. 하지만 좀 더 강력한 솔루션이 있을까요?
답변1
이것은 sdkman
포럼 토론에서 나온 것입니다.glitter의 sdkman/사용자 문제:
sdkman
현재는 단지 사용자 공간 도구일 뿐이며 그렇게 설계되었습니다. 분명한 이유로 이 폴더를 공유하지 않는 것이 좋습니다. 여러 사용자가 공유 폴더 상태를 수정하도록 하시겠습니까sdkman
? 나한테는 냄새가 좋지 않아.