
オペレーティングシステムのコースの一環として、私は学生に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
。