複数のユーザーアカウントでタスクを非表示にする

複数のユーザーアカウントでタスクを非表示にする

私は現在、クラスタープログラミングプロセスの課題を完了しています。クラスにはクラスタアカウントが与えられているため、SSHを介してログインして操作を完了できます。問題は、クラスの全員がアカウントを共有することです。各学生は独自のカタログを作成し、その中で作業します。

明らかに1つの問題は、学生がお互いの作品を見て盗むことができるということです。課題が提出される前に、人々が私の仕事を見ることを望まない。

クラスタにはバージョン管理システムがないため、マイコンピュータからリポジトリをインポートしてタスクを処理し、プッシュして操作するたびにクラスタのコンテンツを削除することはできません。

他の人が自分の仕事を見ないようにする最善の方法は何ですか?通常私は私のコンピュータで作業し、締め切りにサーバーにアップロードします。しかし、私は独自のクラスターを持っていないので、実際に私たち全員のアカウントを使用する必要があります。

はい、信じるかどうか、これは実際に私が直面している現実世界の問題であり、仮想の問題ではありません。

ベストアンサー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

おすすめ記事