저는 아치리눅스 x64를 사용합니다. 저는 웹 개발 작업을 하고 있으며 srv/http
Apache가 제공하는 디렉토리에서 Apache가 제공하는 파일을 편집하기 위해 그룹을 만들고 내 사용자와 Apache의 사용자를 추가하여 디렉토리 사이를 이동하지 않고도 파일을 편집할 수 있었습니다.
문제는 내 사용자를 사용하여 디렉터리의 파일을 올바르게 편집할 수 있지만 파일을 저장할 때마다 해당 사용자 및 그룹이 내 사용자 및 그룹으로 되돌아간다는 것입니다. 예를 들어:
Me: user1:users
Apache: http:http
Directory ownership: http:development
그런 다음 /srv/http/index.html
아래와 같이 내 사용자로 파일을 엽니다...
rw-rwr-- 1 http development 1034 Mar 20 20:48 index.html
(보시다시피 소유자와 그룹에 대한 읽기 및 쓰기 권한이 있음) 저장하면 파일 권한이 다음과 같이 되돌아갑니다...
rw-rw-r-- 1 user1 users 1034 Mar 20 20:48 index.html
groups
내 사용자 활동 그룹 보기를 입력하면 lp wheel network video audio storage users development
내가 개발 구성원이라는 메시지가 표시 되기 때문에 무슨 일이 일어나고 있는지 이해할 수 없습니다 . 나는 그것이 다른 것이라고 생각합니다.
무슨 일이 일어나고 있는지, 시간을 절약하면서 문제를 해결하는 방법을 알려줄 수 있는 사람이 있나요?
이것이 큰 문제가 아니라는 것을 알고 있지만 하이픈 누락과 같은 문제가 발생하기 전에 수정하고 싶습니다.
PD - 필요한 경우 Sublime 편집기를 사용합니다.
답변1
UNIX에서는 root
파일 소유자만 변경할 수 있습니다. 따라서 파일의 소유자가 다음과 같다고 결론 내릴 수 있습니다.아니요편집하면 변경됩니다. 대신에 일어나야 할 일은 편집자가 편집된 내용을 새 파일에 쓰고 이전 파일을 새 파일로 바꾸는 것입니다. 새 파일이기 때문에 파일은 결국 소유자로 표시됩니다.
이러한 방식으로 파일을 업데이트하면 몇 가지 이점이 있습니다.
- 원자적입니다. 독자는 항상 이전 버전이나 새 버전을 볼 수 있지만 부분적으로 작성된 새 버전은 볼 수 없습니다.
- 오류 복구가 더 쉽습니다. 디스크 가득 참과 같은 오류가 발생하면 (이전 버전 위에 이름을 바꾸기 전에) 새 임시 파일을 삭제하여 롤백하세요. 파일을 현재 위치에서 업데이트하는 경우 완료 및 업데이트가 불가능하거나 롤백이 불가능할 수 있습니다.
- 쓰기 권한이 없는 파일을 "업데이트"할 수 있습니다(실제로 이전 파일에 쓸 수 없기 때문입니다).
- 아직 파일을 열어 둔 사람은 원할 경우 이전 버전을 계속 사용할 수 있으므로 중단이 발생하지 않습니다. 실행 파일에 유용합니다!
단점도 있습니다:
- 새 임시 파일을 생성한 다음 해당 임시 파일의 이름을 바꾸려면 파일이 있는 디렉터리(또는 최소한 동일한 파일 시스템의 다른 위치)에 대한 쓰기 권한이 필요합니다.
- 파일의 소유자를 유지할 수 없으며 해당 그룹을 유지하지 못할 수도 있습니다.
- 권한, 확장 속성, 파일이 다른 곳의 실제 파일에 대한 심볼릭 링크인지 여부, 리소스 포크(MacOS) 등과 같은 다른 항목을 새 임시 파일로 복사한 후 제자리로 이동함으로써 긴 목록을 보존할 수 있습니다. .. 매우 조심스럽고 철저하지 않으면 그 중 하나 이상을 놓치지 않기가 어렵습니다.
그래서 그것은 타협입니다.
백그라운드 스크립트 및 소프트웨어 설치와 같은 자동화된 작업은 특히 원자성 때문에 이전 버전을 새로운 파일로 대체하는 경우가 많습니다.
텍스트 편집기 및 기타 수동 작업에서는 파일을 제자리에서 편집하는 경우가 많습니다.
나는 당신의 편집자를 잘 알지 못하지만, 대부분의 다른 편집자와는 정반대의 선택을 하는 것 같습니다. 이 작업을 중지하도록 구성할 수 있는지 확인해야 합니다.
그런데, 문서 루트의 파일 소유자가 아파치 사용자 대신 당신이 소유했다면 실제로 더 나을 것입니다. 웹 서버(예: 손상된 경우)가 파일을 편집할 수 없도록 하는 것이 더 좋습니다. 따라서 이 특정 "문제"를 무시하고 이를 좋은 것으로 보는 것을 고려할 수 있습니다.
답변2
예, 일부 편집자는 기본적으로 새로 편집된 파일과 함께 이전 파일을 삭제합니다. 따라서 소유자는 편집을 수행하는 사람이고 해당 그룹이 기본 그룹이 됩니다.
그러나 다음을 사용하여 디렉터리 권한을 변경하면 디렉터리 아래의 파일에 그룹을 적용할 수 있습니다 chmod g+s .
. 이렇게 하면 새로 생성된 파일이 기본 그룹이 아니더라도 디렉터리와 동일한 그룹에 있게 됩니다.
그룹 쓰기 권한으로 작업할 때의 또 다른 단점은 그룹 쓰기 가능 파일을 생성하려면 umask를 최소한 002로 변경해야 한다는 것입니다.