여러 설정에서 이 문제가 발생했는데 어떻게 처리해야 할지 모르겠습니다.
처음에는 /var
모두 소유였습니다 root:root
. 분명히 나는 루트가 웹 디렉토리를 소유하는 것을 원하지 않기 때문에 이렇게 합니다 chown apache:apache /var/www
. 그러나 누군가 ssh
가 루트로 로그인 한 경우 svn update
그러한 작업을 수행하거나 파일을 편집하면 소유권이 다시 루트로 변경됩니다.
이 문제를 해결할 방법이 있나요? suPhp와 함께 뭔가를 사용한다는 이야기를 들었지만 그것이 필요한지는 잘 모르겠습니다.
답변1
노트:귀하의 경우 가장 좋은 방법은 업데이트된 루트 권한을 포기하고 apache
사용자를 사용하여 스크립트를 실행하는 것입니다.
su apache -c "./update-script"
그렇지 않으면 기본적으로 이 디렉터리에 생성된 새 파일과 하위 디렉터리는 상위 디렉터리와 동일한 소유자chmod g+s /var/www
/그룹을 공유합니다 . (이것은 재귀적으로 전파됩니다.)
~에 따르면coreutils 매뉴얼이것은 이식 불가능한 GNU 스타일 확장입니다. 이는 그룹 ID에서만 작동하는 것처럼 보이지만 이 일반적인 문제를 처리하는 데는 충분할 것이라고 생각합니다. ( umask 002
스크립트를 실행할 때 사용하면 도움이 될 수도 있습니다.)
답변2
분명히 나는 루트가 웹 디렉토리를 소유하는 것을 원하지 않습니다.
왜? 귀하의 보안 모델은 무엇입니까?
chown 아파치:아파치 /var/www
당신의 보안 모델은 도대체 무엇입니까! ! ! ? ? ?
누군가가 루트로 로그인하면
아아아아아!
Stephane G의 답변은 의미가 있습니다.아파치 사용자를 사용하지 마십시오. 대부분의 보안 모델에서 보다 합리적인 접근 방식은 파일에 대한 쓰기 액세스 권한이 있는 사용자 그룹을 설정하고 그룹 소유권 및 그룹 고정성, 디렉토리에 대한 실행 및 쓰기 비트를 설정한 다음 웹 서버 UID 액세스를 허용하는 것입니다. "다른"에게. 웹 서버 uid가 쓸 수 있는 특정 디렉터리/파일이 있어야 하는 경우 해당 디렉터리/파일에 대한 사용자를 웹 서버 uid로 설정합니다(그러나 다른 곳과 동일한 그룹을 유지합니다).
그리고 절대 루트 SSH 로그인을 허용해서는 안 됩니다(AllowGroups/AllowUsers를 화이트리스트에 추가하는 것이 특정 사용자를 거부하는 것/PermitRootLogin=no보다 훨씬 낫습니다).