사용자 jenkins가 사용자의 Minecraft 홈 디렉터리 아래의 특정 디렉터리에 쓸 수 있도록 올바르게 허용하는 방법은 무엇입니까?

사용자 jenkins가 사용자의 Minecraft 홈 디렉터리 아래의 특정 디렉터리에 쓸 수 있도록 올바르게 허용하는 방법은 무엇입니까?

Jenkins를 사용하고 있으며 Jenkins 디렉터리의 파일을 다음 위치로 복사하고 싶습니다.내 세상사용자 디렉터리에 있지만 실행할 때와 같이 이 문제를 해결하는 방법을 모르겠습니다.

cp build/versions/*.info /home/*minecraft*/www/files/Minecraft/versions

"권한이 거부되었습니다"라는 메시지가 나타납니다.

답변1

전통적인 접근 방식은 그룹을 사용하는 것입니다. 사용자 Jenkins가 마인크래프트 그룹(사용자 마인크래프트에 해당하는 그룹)에 추가됩니다. 그런 다음 Minecraft-사용자는 관련 디렉터리(예: chmod g+w ~minecraft/some_directory)에 대한 쓰기 권한을 Minecraft-group에 부여합니다. 물론 (루트의 경우) 이 디렉토리에서만 작동하는 사용자 정의 그룹(예: 새로운 그룹 Minewriters 또는 기타 그룹)을 생성하는 것도 가능합니다. 마인크래프트 사용자가 마인크래프트 그룹의 관리자인 경우 gpasswd -a user group( gpasswd -a jenkins minecraft)를 사용하여 사용자를 그룹에 추가할 수 있습니다. 그렇지 않으면 루트가 사용자를 그룹에 추가해야 합니다.

좀 더 복잡하기는 하지만 더 새롭고, 더 좋고, 더 정교한 접근 방식은 ACL(액세스 제어 목록)을 사용하는 것입니다. ACL은 파일이나 디렉터리의 소유자가 특정 사용자 및/또는 그룹에게 파일이나 디렉터리에 대한 액세스 권한을 부여할 수 있습니다. Minecraft 사용자는 관련 디렉터리의 "액세스 목록"에 jenkins를 추가하고 해당 디렉터리에 jenkins 쓰기 권한을 부여합니다.

setfacl -m user:jenkins:rwx ~minecraft/some_directory

그러면 사용자 jenkins에게 새 파일 생성(w), ls(r)을 사용하여 내용 나열, 디렉터리 변경(x) 권한이 부여됩니다.

+++

파일 및 디렉토리에 대한 액세스는 해당 디렉토리에 대한 사용자 액세스에 따라 어느 정도 달라집니다. 사용자 jenkins가 사용자 Minecraft의 홈 디렉터리(/home/minecraft)에 들어갈 수 없으면 해당 디렉터리 아래의 디렉터리에 액세스할 수 없습니다. chmod특정 디렉터리에 대한 권한이 부여된 경우에도 마찬가지입니다.setfacl

따라서 사용자 Minecraft는 암시적으로 또는 명시적으로 사용자 jenkins를 제공해야 합니다.적어도홈 디렉터리에 대한 실행(x) 권한(홈 디렉터리와 jenkins 디렉터리 사이의 모든 디렉터리에 대한 쓰기를 허용해야 함) 디렉터리에 대한 권한을 실행하여 디렉터리에 "입력"할 수 있는 권한을 부여합니다(예: 명령 사용 cd). 대부분의 사용자는 또한 읽기 권한(r)을 갖고 싶어합니다. 이는 디렉토리 내용 나열과 같은 명령을 사용할 수 있는 권한을 부여하므로 ls스스로를 대상으로 할 수 있습니다.

Minecraft 홈 디렉토리의 권한이 이미 "rwxr-x---" 또는 "rwxr-xr-x"(보통)이면 충분합니다... "rwx----"이면 필요합니다. 수정 최소한 Minecraft 그룹의 구성원 또는 사용자 jenkins 액세스 권한을 부여하는 액세스 권한입니다.

+++

chmod a+t ~minecraft/some_directoryJenkins가 쓰기를 허용해야 하는 디렉터리(예: )에 고정 비트를 추가하는 것도 좋은 생각입니다. 이렇게 하면 해당 디렉터리에 대한 쓰기 권한이 있는 사용자가 해당 디렉터리에 속한 파일을 삭제하는 것을 방지할 수 있습니다.다른사용자(파일을 삭제할 수 있는 디렉터리 소유자 제외)

관련 정보