
저는 현재 클러스터 프로그래밍 과정의 과제를 완료하고 있습니다. 클래스에는 클러스터 계정이 주어졌으므로 SSH를 통해 로그인하여 작업을 완료할 수 있습니다. 문제는 학급의 모든 사람이 계정을 공유한다는 것입니다. 각 학생은 자신만의 카탈로그를 만들고 그 안에서 작업합니다.
분명히 한 가지 문제는 학생들이 서로의 작품을 보고 표절할 수 있다는 것입니다. 과제가 제출되기 전에 사람들이 내 작업을 보는 것을 원하지 않습니다.
클러스터에는 버전 제어 시스템이 없으므로 내 컴퓨터에서 리포지토리를 가져와서 작업을 처리한 다음 푸시하고 작동할 때마다 클러스터의 콘텐츠를 삭제할 수는 없습니다.
다른 사람이 내 작업을 보지 못하도록 하는 가장 좋은 방법은 무엇입니까? 보통 저는 제 컴퓨터에서 작업한 다음 마감일에 서버에 업로드합니다. 하지만 저는 자체 클러스터가 없기 때문에 실제로 우리 모두 계정을 사용해야 합니다.
예, 믿거나 말거나, 이것은 실제로 제가 직면한 현실 세계의 문제이지 가상의 문제가 아닙니다.
답변1
이 문제를 해결하는 진짜 방법은 선생님과 상의해서 혼자 회계를 하게 하거나, 과제를 그룹 과제로 바꾸는 것입니다. 만약 그/그녀가 그렇게 할 수 없거나 그렇게 하지 않을 경우, 나는 다른 학생들의 표절 시도를 무시할 것입니다. 그들이 당신의 작업을 복사해도 당신은 아무것도 잃지 않고 단지 잃을 뿐입니다.
즉, 소스 코드를 다른 사람이 사실상 접근할 수 없게 만드는 방법이 있습니다.
you@local$ ssh shared@cluster "gcc -x c -o yourdir/secret -" < source.c
gcc 명령 끝에 대시가 표시됩니다. 이는 gcc가 stdin에서 소스 코드를 읽는다는 것을 의미합니다. 그러면 source.c
로컬 컴퓨터에서 yourdir/secret
클러스터로 컴파일됩니다. 비밀 소스 코드는 클러스터에 "실제" 파일로 존재하지 않습니다. 일부 버퍼에서는 스트림으로만 존재합니다(sshd 프로세스에서는 가정합니다).
c
코드가 C로 작성되지 않은 경우 옵션을 변경해야 합니다 -x c
. 보다여기이에 대해 자세히 알아보세요.
다른 학생들은 여전히 귀하의 컴파일된 파일을 가져와 디컴파일할 수 있습니다. 이러한 위험을 최소화하려면 컴파일 및 실행 후 즉시 파일을 삭제할 수 있습니다.
you@local$ ssh shared@cluster "gcc -x c -o yourdir/secret - && yourdir/secret ; rm yourdir/secret" < source.c
편집증이 심한 사람이라면 실제 gcc를 실행하고 있는지 확인해야 합니다. 다른 학생들은 컴파일 전에 소스 코드를 저장하는 gcc 주변의 래퍼를 작성하고 해당 래퍼를 경로에 배치할 수 있습니다. 실제 rm도 수행해야 합니다.
you@local$ ssh shared@cluster "/usr/bin/gcc -x c -o yourdir/secret - && yourdir/secret ; /bin/rm yourdir/secret" < source.c
답변2
Afaik, 자신에게서 무언가를 효과적으로 숨길 수 있는 방법은 없습니다. 도트 폴더의 딥링크에 코드를 숨길 수 있지만, 코드를 볼 수만 있다면 반 친구들도 볼 수 있습니다.그들은 당신입니다. 코드를 사용하려면 코드를 검토해야 합니다.
당신이 할 수 있는 일은 VirtualBox와 같은 유사한 시스템이나 동일한 OS(아키텍처 참고)를 사용하는 별도의 시스템을 설정하고 이 시스템에만 코드를 작성하고 컴파일한 다음 바이너리만 클러스터에 복사하여 복사하는 것입니다. 대기열에 제출합니다.
적군은 여전히 바이트코드에 접근할 수 있지만 비트와 바이트를 이해하는 것은 C 소스 코드를 이해하는 것보다 훨씬 어렵습니다 ;-)
답변3
완벽한 대답은 암호화입니다. 하지만 컴퓨터에서 데이터를 추출할 수 없다면 디스크, 볼륨 또는 파일 암호화 소프트웨어를 설치할 수 없는 것입니다.
즉, 교사는 자신이 무엇을 하고 있는지 알아야 하며, 모두가 공용 공간을 사용하도록 선택했다면 그 뒤에는 이유가 있어야 합니다. 어쩌면 신뢰와 협력을 배우기 위해서일까요? 그들에게 물어보는 건 어떨까요?
편집: 서버에서 데이터를 가져올 수 있으므로 사용하지 않으시겠습니까 rsync
?
답변4
암호화 주제에서 vi 또는 vim을 사용하여 코드를 편집하는 경우 vim의 내장 암호화: vim -x myfile.c
새 파일에 사용할 수 있습니다.
vim 7.3 이전에는 쉽게 해킹할 수 있었지만 최소한 일상적인 검색은 불가능했습니다.