Teamcity를 사용하여 CI용 배포자 사용자를 설정하려고 합니다. ServerFault에 대한 이 질문의 지침을 따랐습니다./var/www에서 apache2 사용자 www-data 권한을 처리하는 가장 좋은 방법은 무엇입니까?
문제는 Teamcity 애플리케이션이 755
권한이 있는 디렉터리를 생성하고 있는데, 그 중 일부는 apache(2.4)가 쓸 수 없다는 것입니다. 권한을 수동으로 변경하면 775
Apache가 권한을 쓸 수 있습니다.
권한을 설정하는 방법은 다음과 같습니다.
- 사용자를 만들었습니다
teamcity
. www-data
사용자에게 그룹을 보조 그룹으로 추가- 소유권이
/var/www
다음으로 변경됩니다.root:www-data
변경된 디렉터리 권한:
find /var/www -type d -exec chmod 2775 {} +
다음 내용이 포함된 파일의 경우:
find /var/www -type f -exec chmod 0664 {} +
umask 0002
에 추가 하다/etc/profile
시험:
수 팀 시티 마스크 >0002 터치 테스트 파일 ls-l >-rw-rw-r-- 1 teamcity teamcity 0 5월 25일 10시 38분 테스트 파일 CD /var/www 터치 테스트 파일 ls-l >-rw-rw-r-- 1 teamcity www-data 0 5월 25일 10:42 테스트 파일
디렉토리의 경우에도 마찬가지입니다. 이는 rw
사용자 및 그룹에 적용됩니다.
배포 후 디렉터리 및 파일에 대한 권한이 예상 755
과 다릅니다 775
.
Teamcity 애플리케이션을 서비스로 시작합니다.
start-stop-daemon --start -c teamcity --exec /opt/TeamCity/bin/runAll.sh start
일부 세부정보가 누락된 것 같은데 찾을 수 없습니다.
체계:
- 데비안 제시
- 아파치 2.4
- 팀 시티 9
해결책:
umask 002
시작 명령 앞에 추가하여 Teamcity 서비스의 시작 스크립트를 변경했습니다.
답변1
설명을 보면 TeamCity가 umask를 무시하는 것 같습니다. 어쩌면 서비스 스크립트에 umask를 설정했을 수도 있습니다(질문에 언급되지 않음). 그렇다면 스크립트를 수정할 수 있습니다. 그렇지 않다면 분명히 폐쇄 소스 애플리케이션이기 때문입니다.그리고Java에서는 이를 방지하는 능력이 제한되어 있습니다. 너할 수 있다디렉터리 권한을 수정하려면 크론 작업(1분마다 실행)을 만드세요.
추가 자료:
- Java에서 umask를 설정하는 방법은 무엇입니까?
- 팀 시티 레인저스(아마도 관련 스크립트)
- Teamcity v9.x CentOS 빌드 에이전트 설치, 예에서는 에서 서비스 스크립트 검색을 시작하는 위치를 보여줍니다
systemd
.