umask가 홈 디렉터리 이외의 디렉터리에서는 예상대로 작동하지 않습니다.

umask가 홈 디렉터리 이외의 디렉터리에서는 예상대로 작동하지 않습니다.

Teamcity를 사용하여 CI용 배포자 사용자를 설정하려고 합니다. ServerFault에 대한 이 질문의 지침을 따랐습니다./var/www에서 apache2 사용자 www-data 권한을 처리하는 가장 좋은 방법은 무엇입니까?

문제는 Teamcity 애플리케이션이 755권한이 있는 디렉터리를 생성하고 있는데, 그 중 일부는 apache(2.4)가 쓸 수 없다는 것입니다. 권한을 수동으로 변경하면 775Apache가 권한을 쓸 수 있습니다.

권한을 설정하는 방법은 다음과 같습니다.

  1. 사용자를 만들었습니다 teamcity.
  2. www-data사용자에게 그룹을 보조 그룹으로 추가
  3. 소유권이 /var/www다음으로 변경됩니다.root:www-data
  4. 변경된 디렉터리 권한:

    find /var/www -type d -exec chmod 2775 {} +

    다음 내용이 포함된 파일의 경우:

    find /var/www -type f -exec chmod 0664 {} +

  5. 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분마다 실행)을 만드세요.

추가 자료:

관련 정보