하루 종일 이 작업을 했고 마침내 알아낸 것 같지만 프로덕션에 적용하기 전에 확인하고 싶었습니다.
apache:apache
사용자가 여러 디렉토리에 대한 쓰기 액세스를 허용하도록 서버를 변경하고 있습니다 . 나는 jeff:jeff
서버의 유일한 사용자입니다.
내 디렉터리 구조는 다음과 같습니다.
/home/jeff/www/ 0755 jeff:jeff
/home/jeff/www/example1.com/ 0755 jeff:jeff
/home/jeff/www/example2.com/ 0755 jeff:jeff
/home/jeff/www/example2.com/uploads/ 0755 apache:apache
문제는 다음과 같습니다
chmod apache:apache uploads/
쓰기 액세스를 허용하기 위해 실행합니다 apache
.
sftp를 통해 파일을 편집하고 싶을 때마다 해당 파일로 돌아가서 완료되면 되돌려 uploads/
야 합니다 .chown
jeff:jeff
내 초기 솔루션은 다음과 같습니다.
apache
jeff
그룹 에 사용자 추가jeff
그룹에 디렉터리에 대한 쓰기 권한을 수동으로 부여하여uploads/
chmod 775
- 사용자가 새 파일 + 폴더 + 하위 폴더를 .requires 디렉터리
apache
로 생성하도록 강제합니다 .apache:jeff
setgid 2775
uploads/
- 사용자가 =를 통해
apache
새 파일 + 폴더 + 하위 폴더를 생성하도록 강제umask 002
775
체계
나는 내가 일을 제대로 하고 있다고 확신할 수 있는 시간이 약 50%에 불과합니다.
괜찮은 것 같나요? 더 좋은 방법이 있나요? 내가 뭐 놓친 거 없니?
Jim의 도움으로 이것이 제가 사용한 최종 솔루션입니다.
참고로.
# usermod --append --groups apache jeff
> Relogin all sessions
# chown -R apache:apache www/example.com/uploads/
# find www/example.com/uploads/ -type d -exec chmod 775 {} \;
# find www/example.com/uploads/ -type f -exec chmod 664 {} \;
# systemctl edit --full php.service
-----------
[Service]
UMask=0002
-----------
# systemctl daemon-reload
# systemctl restart php
WordPress 사용자는 wp-config.php에 다음을 추가해야 합니다.
define('FS_CHMOD_DIR', 0775);
define('FS_CHMOD_FILE', 0664);
답변1
예, 이것이 일반적인 생각이고 거의 비슷하지만 사용자를 apache
그룹에 추가하는 대신 jeff
더 안전하고 편리할 수 있습니다(중요한 경우 확장 가능). 설명:
apache
그룹에서 꺼내세요jeff
.대신 그룹
jeff
에 추가하세요.apache
우선, 이는apache
모든 그룹 파일에 대한 읽기 액세스를 차단합니다jeff
.chown
uploads/
그룹의 모든 사람이 파일을 생성/삭제할 수 있는 디렉토리 입니다.apache:apache
chmod 775
apache
생성된 모든 항목이 그룹 쓰기 가능 하도록
apache
파일 생성을 사용하세요 .umask 2
apache
이 방법:
chown
A) 파일을 편집하기 전에 더 이상 파일을 생성할 필요가 없습니다 . 모든 upload
파일은 그룹에 속하고 apache
그룹 쓰기가 가능하며 이미 그룹에 속해 있습니다 apache
.
B) 다른 사용자를 apache
그룹에 쉽게 추가할 수 있으며 업로드된 파일도 편집할 수 있습니다.