파일 및/또는 파일 타임스탬프 수정 방지

파일 및/또는 파일 타임스탬프 수정 방지

운영 체제 과정의 일환으로 저는 학생들에게 Linux와 일부 코딩을 소개합니다. 학생들은 지정된 디렉터리에 프로그램을 제출하고 계정에 있는 이름을 사용합니다(예: ~/Prog1/Prog1.java). 계획 제출을 최대 2일까지 연기할 수 있습니다.

나는 그들이 "제출" 후에 프로그램을 수정하는 것을 피할 수 있기를 바랍니다. 내 첫 번째 생각은 명령을 비활성화하거나 숨겨서 파일 touch을 검사할 때 파일의 타임스탬프를 위조할 수 없도록 하는 것이었지만 ls -l, 그것으로 충분할까요? 내가 감지하지 못한 채 소스 코드를 비밀리에 수정할 수 있는 상대적으로 쉬운 다른 방법이 있습니까? 그들은 Linux를 처음 접하기 때문에 지식이 많지 않습니다.

아니면 프로그램을 복사할 수 있지만 타임스탬프는 수정할 수 없도록 쓰기 전용 디렉터리를 만드는 방법이 있습니까? 내가 고려하지 않은 더 쉬운 방법이 있습니까?

이것은 Linux용 RedHat 7.5 버전입니다.

포스팅할까 고민하다가https://superuser.com/또는https://cseducators.stackexchange.com/근본적으로 Linux 문제로 생각되지만 더 적절하다면 내 질문을 그곳으로 옮기게 되어 기쁩니다.


나에게 주어진 변경/수정 시간을 확인하는 것이 stat커밋 후 파일이 손상되지 않았는지 확인하는 완벽한 방법입니까?

답변1

chattr파일을 불변으로 만들 수 있는 명령을 찾고 있을 수도 있습니다 . ~에서맨샤텔:

"i" 속성이 있는 파일은 수정할 수 없습니다. 삭제하거나 이름을 바꿀 수 없으며 파일에 대한 링크를 만들 수 없으며 파일에 데이터를 쓸 수 없습니다. 수퍼유저 또는 CAP_LINUX_IMMUTABLE 기능이 있는 프로세스만 이 속성을 설정하거나 지울 수 있습니다.

  • 변경할 수 없는 속성을 설정합니다.

    chattr +i ~/Prog1/Prog1.java
    
  • 변경할 수 없는 속성을 제거합니다.

    chattr -i ~/Prog1/Prog1.java
    
  • 현재 속성을 보려면 다음을 사용할 수 있습니다 lsattr(학생들은 이 명령을 사용하여 불변 속성이 설정되었는지 확인할 수도 있습니다).

    lsattr ~/Prog1/Prog1.java
    

cron또한 2일 제출 간격 내에 제출 폴더에서 새 파일을 모니터링하는 작업을 추가해야 합니다 .

답변2

특정 폴더의 소유권을 쉽게 가져오면서 해당 폴더의 작업을 검사할 수 있습니다.

폴더의 소유권을 얻으려면: chown teacher /path/to/file.java

또한 비소유자 계정은 다음 사항을 변경할 수 없습니다.chmod go-w /path/to/file.java

이제 이를 자동화하려면 at다음 명령을 사용하여 코드 작업을 실행하세요.

at 10am Jul 31, 그러면 새로운 명령줄이 표시됩니다 at>. 거기에서 이전 chmod & chown명령을 입력하면 거기에서 실행됩니다.

at명령을 실행하려면 수퍼유저를 사용 하십시오 root.

관련 정보