사용자 및 그룹 테스트가 있습니다:테스트
쉘에 있을 때 테스트로 로그인하면 할 수 있고 git pull origin master
작동 npm install
합니다.
또한 Caddy(웹 서버)에서 호출되는 cgi 스크립트도 있습니다. 그것은 같은 일을합니다동일한 사용자로하지만 아직 권한 오류가 발생합니다.
이것을 어떻게 디버깅합니까? 셸에서는 권한을 얻었지만 생성된 스크립트에서 실행할 때는 권한을 얻지 못하는 이유를 보여주는 명령은 무엇입니까?
스크립트의 오류는 다음과 같습니다.
Could not create directory '/home/test/.ssh'.
/home/test/.ssh
이미 존재하고 이미 키 등이 있습니다. 쉘에서 잘 작동합니다.
npm의 경우 이러한 오류가 발생합니다.
npm ERR! Linux 4.4.0-87-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.11.2
npm ERR! npm v3.10.10
npm ERR! path /home/test/.npm/_locks
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/home/test/.npm/_locks'
그러나 이번에도 쉘에서 실행하면 오류가 발생하지 않습니다.
id
스크립트가 어떤 사용자로 실행되고 있는지 확인할 수 있도록 스크립트에 추가했습니다 . 인쇄합니다
uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)
id
쉘에 입력할 때 인쇄되는 것과 똑같은 내용입니다.
또 무엇을 찾아야 합니까?
답변1
문제는 캐디가 systemd에서 실행되고 다음으로 설정되었다는 것입니다.
ProtectHome=true
이는 /home/test
생성된 스크립트에 대한 제한이 없음을 의미합니다. 올바른 해결책이 무엇인지는 확실하지 않지만 적어도 문제의 원인을 추적했습니다.