Linux 서버에서 파일을 삭제할 수 없지만 제거 가능하게 만드는 방법은 무엇입니까?

Linux 서버에서 파일을 삭제할 수 없지만 제거 가능하게 만드는 방법은 무엇입니까?

저는 우리 서버의 일부 폴더를 관리하고 있습니다. 서버는 다음과 같이 실행됩니다.

REDHAT_SUPPORT_PRODUCT="레드햇 엔터프라이즈 리눅스" REDHAT_SUPPORT_PRODUCT_VERSION="7.6"

"/srv/"에 디렉터리를 만들고 이름을 "test"로 지정했습니다. "test" 안에 "archived"라는 또 다른 디렉토리를 추가했습니다.

project_managers 사용자 그룹을 만들고 이 그룹에 일부 사용자를 추가했습니다. project_managers에는 "/srv/test/"에 대한 재귀적 읽기/쓰기/실행 권한이 있습니다.

나는 project_managers가 한 디렉터리에서 다른 디렉터리로 파일을 이동할 수 있기를 원하지만 서버에서 파일을 완전히 삭제하지는 않습니다.

예를 들어, project_managers에게 "/srv/test/my_code.py"를 "/srv/test/archived/"로 이동할 수 있는 권한을 부여하고 "/srv/test/my_code.py"를 삭제할 수는 없도록 하고 싶습니다.

나는 완료했습니다: sudo chattr -R +i /srv/test/

파일이 삭제되거나 이동되는 것을 방지합니다.

파일을 삭제할 수는 없지만 제거 가능하게 만들 수 있나요?

답변1

귀하의 질문에 대답하려면 이동과 삭제가 매우 유사하므로 다른 전략이 필요하다고 생각합니다.

단지 코드처럼 보이기 때문이 아니라 디렉토리를 버전 관리하에 두겠습니다.

버전 제어 시스템의 장점은 파일 기록이 있다는 것입니다. 예를 들어 매시간 변경이 이루어졌는지 확인하는 예약된 작업을 실행 git하고 변경 사항을 버전 제어에 적용할 수 있습니다.

이렇게 하면 사람들이 콘텐츠를 이동하고 삭제하는 등의 작업을 수행할 수 있습니다. 여전히 버전 관리가 가능하며 단 하나의 명령으로 검색할 수 있습니다.

git과 같은 버전 제어 시스템의 또 다른 특징은 통합 백업 메커니즘입니다. 변경 사항을 하나 이상의 다른 시스템으로 전송할 수 있으며, 변경 사항이라고 하면 실제로 변경 사항을 포함한 전체 파일 기록입니다.

변경 사항만 저장하는 텍스트 파일의 경우 저장소 오버헤드가 최소화됩니다.

다른 누구도 건드릴 수 없는 유일한 것은 버전 관리 시스템입니다. git을 사용하면 .git모든 중요한 정보를 포함하는 디렉토리가 생성됩니다. Mercurial과 같은 다른 시스템을 사용할 수도 있습니다.

정말로 모든 변경 사항을 캡처하고 싶다면 시도해 볼 수 있습니다.자식 관찰모든 하위 폴더와 파일을 포함하여 git 저장소를 모니터링하고 변경 사항을 git에 삽입합니다. 더 좋은 점은 gitwatch가 다른 서버의 git에 변경 사항을 보낼 수 있다는 것입니다(전체 백업, 전체 기록).

관련 정보