私は共有された公共のコンピュータを管理しています。各ユーザーには独自のディレクトリがあります/home
。新しいユーザーがログインに時間がかかるため、ネットワークマウントを実行するのが好きではありませんが、ユーザーが自分のディレクトリ/home
に書き込めないように設定したいと思います。/home
ユーザーはネットワークストレージを使用でき、ユーザーはそれを使用する必要がありますが、強制的に使用することはできません。
理想的には、彼らがローカルコンピュータにデータを書き込むのを完全に防ぎ、代わりにストレージサーバーに書き込むように指示したいと思います。これが不可能な場合は、少なくともローカルコンピュータのディスククォータを制限して、すべてのスペースを消費しないようにしたいと思います。どうすればいいですか?
答え1
ファイルシステムイメージファイルを/home
。/home
ファイルシステムイメージファイルは次のように動作します。
固定サイズ(100 MBなど)の空のファイルを作成します。
dd if=/dev/zero of=/var/home/bob.img bs=1024 count=100000
これを使用する必要はありません
/var/home
。これは他の場合には存在しないディレクトリです。 このファイルはルートに属する必要があり、モード600を設定する必要があります。他の人が読めないように。明らかに、ユーザーごとに100 MBのファイルを生成するのに十分なスペースがあることを確認してください。しかし/home
、同時にすべてを取り除き、適切なスペースを確保できることに注意してください。イメージにファイルシステムを作成します。
mke2fs -m 0 /var/home/bob.img
警告メッセージが表示されます
bob.img is not a block special device
。とにかく進んでください。これを初めて行う場合は、ユーザーの既存のホームディレクトリにコピーしたいので、一時的にインストールする必要があります。
mount /var/home/bob.img /mnt/tmp mv /home/bob/* /mnt/tmp mv /home/bob/.* /mnt/tmp
.
最後のトピックでは、およびを上書きするかどうかを尋ねます..
。 いいえ。 トップレベルの「隠し」ポイントファイルを移動すると、最初のファイルがmv
残ります。ファイルブラウザまたは他の方法を使用して移動を実行することもできます。 /home/bob
これで空でなければならず、マウントされた画像をそこに移動できます。
umount /mnt/tmp
mount /var/home/bob.img /home/bob
見て、すべて〜らしい以前の方法に戻って、今/home/bob
は別のファイルシステムなので、ユーザーはbob
100 MBを超えるファイルを入れることはできません。また、既存のイメージファイルなので、このスペースはボブ用に予約されており、他のものも占有しません。
起動時にこれらすべてをインストールするには、初期化サービスが必要です。次のように簡単にできます。
#!/bin/bash
for img in /var/home/*.img; do
name=$(basename $img .img)
mount $img "/home/$name"
done
システムがシャットダウンしたら、自動的に削除する必要があります。データは他のどこよりも安全です。