편집 후 파일의 소유권을 유지하는 방법은 무엇입니까?


11

내 질문은 새로 만든 파일에 대해 묻는 것을 제외하고는 다른 질문과 비슷 합니다.

내 유닉스 상자에서 사용자 alice , bobtomcattomcat 그룹에 있습니다.

Tomcat 서버의 구성 파일은 tomcat 사용자와 tomcat 그룹에서 소유합니다.

alice와 bob이 파일을 편집 할 수 있도록이 파일의 권한을 그룹별로 읽고 쓸 수 있도록 변경했습니다.

그러나 편집 후 파일을 편집 한 마지막 사용자가 파일을 소유하고 있음을 알았습니다.

Q : Alice와 Bob이 소유권을 변경하지 않고 파일을 편집 할 수 있도록 권한을 변경할 수 있습니까?

어쨌든 파일을 편집하면 소유권이 어떻게 변경됩니까?


Tomcat 이 파일을 계속 소유 하도록하는 것이 목표입니까 , 아니면 Tomcat 서버가 계속 작동 하는지 확인하는 것입니다. alice와 bob이 파일을 계속 편집 할 수 있으며 보안이 유지됩니까?
ctrl-alt-delor

1
귀하의 질문이 표현되는 방식에 따라 Tomcat 서비스가 사용자 'tomcat'에서 실행되고 있다고 가정합니다. Tomcat을 악용하면 의도하지 않은 서버 비트를 노출하도록 자체 구성을 다시 작성할 수 있으므로 바람직하지 않습니다. Tomcat 그룹은 읽을 수는 있지만 쓸 수는 없지만 구성을 작성할 수있는 다른 그룹을 사용하는 것이 좋습니다.
Ed Neville

답변:


17

파일 의 결과 사용자 는 편집기의 기능에 따라 다릅니다. 일부 편집기는 파일을 자르고 파일을 덮어 써서 (아이 노드를 변경하지 않고) 저장합니다. 그리고 어떤 편집자는 (다른 이름으로 파일의 이름을 변경 filefile~보통이다), 원래의 이름으로 새 파일을 만듭니다. 원본 파일을 수정하면 소유자가 동일하게 유지되고 새 파일을 만들면 작성 프로세스의 UID가 새 파일을 소유하게됩니다.

편집자 나는 데비안에있는, nano그리고 joe뿐만 아니라, nvivim(의 최소 버전 vim-tiny에서 현재 위치에 덮어 쓰기하는 것). 내가 생각하지만 vimEmacs는 아마도 그들이하는 일에서 구성 할 수 있다고 생각합니다.


Stephen은 원자 업데이트에 대해 언급 합니다 . 전체 재생성 문제는 파일 길이가 0으로 잘린 다음 기록된다는 것입니다. 다른 프로세스는 모든 데이터를 쓰기 전에이를 열어 읽을 수 있습니다.

원 자성 업데이트는 새 버전을 말한 file.new다음로 이름 file.new을 바꾸면 됩니다 file. 백업 파일을 떠나, 하나는 만들 수 file.new, 링크를 filefile~누른 다음 이름 바꾸기 file.newfile. 이름으로 파일에 액세스하는 프로세스가 이전 버전이나 새 버전 중 하나를 얻지 못하기 때문에 이름 바꾸기는 원자 적입니다. 열려있는 파일 핸들은 열려있는 파일을 가리키며 파일에 대한 일관된보기를 제공합니다.


로부터 파일 권한 같은 파일 (아이 노드)을 통해 절약의 관점이 파일 자체 (그러나 디렉토리)에 대한 쓰기 액세스를 필요로 이름을 변경하고 새로 작성하는 디렉토리에 대한 쓰기 액세스 (하지만 원본 파일이 필요합니다 ).

(이름 바꾸기 및 다시 작성은 누군가가 공유 디렉토리에서 파일을 작성하거나 수정하지만 그룹에 파일에 대한 액세스 권한을 부여하는 것을 잊은 경우에 대비하여 파일 권한을 수정하는 방법입니다.)


6
POSIX 시맨틱을 사용하여 파일을 원자 적으로 업데이트 할 수있는 유일한 방법은 작성 및 이름 바꾸기뿐입니다.
Stephen Kitt 2018 년

좋은 설명입니다.
미안 아스 밧 아마드

13

ilkkachu 에서 설명 하는 것처럼 사용중인 편집기가 저장시 새 파일을 작성하는 경우 파일 소유자 를 제어 할 방법이 없습니다 . Tomcat이 파일을 읽을 수있게 유지하는 것이 중요합니다. 그룹이 ( 그룹에 의해 읽을 수 있는지) 확인 하고 부모 디렉토리 에 비트를 설정하여 새 파일에 적용 할 수 있는지 확인하여이를 수행 할 수 있습니다 .tomcatsetgid

chmod g+s .

따라서 bob파일을 재생성하는 편집기를 사용하여 파일을 편집하면 편집 된 파일이 소유하게되며 bob:tomcatTomcat은 여전히 ​​( umask적어도 최소한) 읽을 수 있습니다 . tomcat그룹 에서 상위 디렉토리를 쓸 수있는 한 해당 그룹의 모든 사용자는 디렉토리에서 파일을 다시 작성할 수만 있으면 파일을 편집 할 수 있습니다.

그러나 프로세스 변경을 검토하는 것이 좋습니다. Tomcat이 읽은 위치에서 파일을 직접 편집해서는 안됩니다. 이상적으로 파일은 일종의 VCS로 유지 관리되며 별도의 프로세스 (자동화 가능)로 배포됩니다. 그렇게하면 모든 소유권 문제를 피할 수 있습니다 ...


좋은 해결책 !!
미안 아스 밧 아마드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.