セキュリティとアクセス制御のためのマウントオプション
このステップでは、マウントオプションを使用して、ファイルシステムへのアクセス方法を制御する方法を学びます。マウントオプションは、実行権限の制限やファイルシステムの読み取り専用化など、ファイルシステムの動作をさらに制御する機能を提供します。
現在のファイルシステムのアンマウント
新しいマウントオプションを適用する前に、現在のファイルシステムをアンマウントする必要があります。
sudo umount ~/project/mount_point
デバイスがビジー状態であるというエラーメッセージが表示された場合は、現在マウントポイントディレクトリにいないことを確認してください。
cd ~/project
その後、再度アンマウントを試してください。
noexec オプションを使用したマウント
noexec
マウントオプションは、マウントされたファイルシステム上でのバイナリの実行を禁止します。これは、悪意のあるスクリプトやプログラムの実行を防ぐことができるセキュリティ機能です。
noexec オプションを使用してファイルシステムをマウントします。
sudo mount -t ext4 -o noexec storage_device.img ~/project/mount_point
-o noexec
の部分は、mount コマンドに noexec オプションを使用するように指示します。
noexec オプションのテスト
マウントされたファイルシステム上に簡単なシェルスクリプトを作成し、それを実行してみましょう。
echo '#!/bin/bash' | sudo tee ~/project/mount_point/test_script.sh > /dev/null
echo 'echo "This script is running"' | sudo tee -a ~/project/mount_point/test_script.sh > /dev/null
スクリプトを実行可能にします。
chmod +x ~/project/mount_point/test_script.sh
次に、スクリプトを実行してみます。
~/project/mount_point/test_script.sh
次のようなエラーメッセージが表示されるはずです。
bash: /home/labex/project/mount_point/test_script.sh: Permission denied
これは、noexec オプションがスクリプトの実行を禁止していることを確認します。
読み取り専用オプションを使用したアンマウントと再マウント
次に、ファイルシステムを読み取り専用としてマウントしてみましょう。まず、アンマウントします。
sudo umount ~/project/mount_point
次に、読み取り専用オプションを使用してマウントします。
sudo mount -t ext4 -o ro storage_device.img ~/project/mount_point
-o ro
の部分は、mount コマンドに読み取り専用オプションを使用するように指示します。
読み取り専用オプションのテスト
マウントされたファイルシステム上に新しいファイルを作成してみます。
touch ~/project/mount_point/new_file.txt
次のようなエラーメッセージが表示されるはずです。
touch: cannot touch '/home/labex/project/mount_point/new_file.txt': Read-only file system
これは、ファイルシステムが読み取り専用としてマウントされていることを確認します。
マウントオプションの確認
mount
コマンドを使用して、現在のマウントオプションを確認できます。
mount | grep mount_point
ro
を含む出力が表示され、読み取り専用オプションがアクティブになっていることを示します。
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,relatime)
マウントオプションの組み合わせ
複数のマウントオプションをコンマで区切って組み合わせることができます。ファイルシステムをアンマウントし、noexec オプションと ro オプションの両方を使用して再マウントしてみましょう。
sudo umount ~/project/mount_point
sudo mount -t ext4 -o ro,noexec storage_device.img ~/project/mount_point
マウントオプションを確認します。
mount | grep mount_point
出力に両方のオプションが表示されるはずです。
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,noexec,relatime)
マウントオプションの理解
これまで学習したマウントオプションは、セキュリティとアクセス制御にとって重要です。
noexec
はバイナリファイルの実行を禁止し、悪意のあるコードから保護することができます。
ro
(読み取り専用) はファイルシステムへの変更を禁止し、データの整合性を保護することができます。
これらのオプションは、最小権限の原則を実装するために、本番環境で一般的に使用され、システムとユーザーに必要なアクセス権のみを付与します。