Jenkins가 디렉토리에 쓰도록 할 수는 없지만 올바른 권한이 설정되어 있다고 생각합니다. Jenkins는 "jenkins-group"이라는 그룹에 속한 "jenkins"라는 사용자에 의해 실행됩니다. 다음을 수행하면 관련 디렉토리는 다음과 같습니다 ll
.
drwxrwxr-x 2 jenkins-group jenkins-group 68 Sep 3 13:01 test_save_data_jenkins_R
아래 링크의 권장 접근 방식에 따라 "rwx" 권한이 있는 그룹을 만들고 Jenkins를 실행하는 사용자를 그룹에 추가했습니다.사용자 jenkins가 사용자의 Minecraft 홈 디렉터리 아래의 특정 디렉터리에 쓸 수 있도록 올바르게 허용하는 방법은 무엇입니까?.
그래서 "jenkins-group" rwx 권한을 그룹에 부여했고, 이 권한은 이 그룹을 보조 그룹으로 만들기 때문에 사용자 "jenkins"에게도 이러한 권한을 부여해야 합니다. 사용자 "jenkins"로 터미널에 로그인하면 touch test.txt
.
cd /apps/models/test_save_data_jenkins_R && whoami && touch test.txt
다음 오류가 발생합니다.
+ cd /apps/models/test_save_data_jenkins_R
+ whoami
jenkins
+ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
"jenkins-group" 그룹에는 "apps" 및 "models" 폴더에 대한 rwx 권한도 있습니다. 다음을 사용하여 사용자 "jenkins"에게 직접 권한을 부여해 보았습니다.
$ setfacl -Rm user:jenkins:rwx /apps/models/test_save_data_jenkins_R/
이렇게 하면 스크립트가 성공적으로 실행됩니다. 그러나 이것은 실제로 해결 방법이며 이전 접근 방식에서 제가 무엇을 잘못했는지 이해하고 싶습니다.
업데이트 #1
달리기 groups jenkins
:
jenkins : jenkins jenkins-group
실행 getfacl
결과:
# file: test_save_data_jenkins_R/
# owner: jenkins-group
# group: jenkins-group
user::rwx
group::rwx
other::r-x
업데이트 #2
Jenkins 스크립트에서 /usr/bin/id를 실행하면 다음이 제공됩니다.
+ /usr/bin/id
uid=775(jenkins) gid=895(jenkins) groups=895(jenkins)
터미널에서 /usr/bin/id를 실행하면 다음이 제공됩니다.
uid=775(jenkins) gid=895(jenkins) groups=895(jenkins),1012(jenkins-group)
이는 Jenkins 서비스의 safeRestart를 실행한 후에도 발생할 수 있습니다.
답변1
문제는 Jenkins 서비스를 다시 시작할 때까지 사용자 권한이 반영되지 않는다는 것입니다. 내 Red Hat Linux 컴퓨터에서 다음을 입력했습니다.
sudo service jenkins restart