\r\n\r\n
制限付きシェルは、Linux上でユーザーアカウントが行えることを制限します。制限されたユーザーは、ディレクトリを変更することができず、アクセスできるコマンドを制御することができます。Linuxで制限付きシェルを設定する方法を説明します。
bash、korn、fish などのシェルはすべて制限付きシェルモードで起動できます。今回はBashを使用しますが、他のシェルでも同じ原則が適用されます。
制限付きシェルは標準シェルの別の使い方に過ぎないため、簡単に設定することができます。インストールするものは何もなく、Linuxがあるところならどこでも利用できる。
制限付きシェルは、スクリプトにも適用できます。これにより、万が一不正に書き込まれたとしても、被害はその限定された世界に限られ、コンピューター全体にアクセスすることはできません。
ただし、制限されたシェルは完全に脱出できるわけではありません。十分な知識があれば、制限を逃れることができる。これらは一時的なユーザーのセキュリティ境界を設定するには最適ですが、本番システムでの本当のセキュリティは制限されたシェルに依存しないようにしてください。
関連:BashやZshなどLinuxのシェルの違いとは?
Bashを制限付きシェルとして実行すると、ユーザーがいくつかの機能を削除することになります。具体的には、ユーザーはできないようにします。
r (制限付き) オプションを使用すると、制限付きの Bash シェルを起動し、作業ディレクトリを変更しようとするなどの簡単な作業を禁止することができます。cdが制限されていることを伝える短いメッセージが表示されます。
bash -r cd Documentsまた、Bashシェルは「Bash」ではなく「rbash」で呼び出されたことを検知し、制限付きシェルとしても起動できるようになっています。これは、特定のユーザーに対してデフォルトのシェルを設定する便利な方法を提供するもので、まもなく使用します。
Ubuntuのwhereisコマンドでrbashファイルを探すと、実行ファイルは「usr/bin」ディレクトリにあることがわかる。マニュアルページは、"/usr/share/man/man1 "ディレクトリにあります。
lsコマンドに-l(long)オプションをつけると、rbashが実はbashへのシンボリックリンクであることがわかる。
whereis rbash ls -l /usr/bin/rbashManjaroとFedoraでは、rbashのシンボリックリンクを作成する必要があります。これは、両方のディストリビューションに当てはまります。
whereis rbash sudo ln -s /bin/bash /bin/rbash whereis rbash2回目のwhereisコマンドでは、"/usr/bin "ディレクトリにあるrbashが検索されます。
Minnie」というユーザーアカウントを新規に作成しましょう。useraddコマンドの-s(シェル)オプションを使って、シェルを制限付きシェルに設定します。また、asswdコマンドを使って、アカウントのパスワードを設定し、ホームフォルダを作成する予定です。
mkdirコマンドの-p(paints)フラグは、mkdirにターゲット・ディレクトリと作成が必要な親ディレクトリを作成するように指示します。したがって、「/home/minnie/bin」ディレクトリを作成することで、「/home/minnie」ディレクトリも作成することができるのです。
sudo useradd minnie -s /bin/rbash sudo passwd minnie sudo mkdir -p /home/minnie/binMinnieがログインすると、制限されたシェルで実行されます。
cd彼女は、フォワードスラッシュ「/」を含むことを必要とするコマンドを呼び出すことはできません。
/usr/bin/pingしかし、彼女はパスで見つかったコマンドを実行することができます。
pingこれは、あなたが期待する行動ではなく、私たちが望むものでもありません。さらに制限を厳しくするために、minnieのシェルがコマンドを見つけるために使うパスを変更する必要があります。
minnieのホームディレクトリ「/home/minnie」を作成した際に、「/home/minnie/bin」というディレクトリも作成しました。そこで活躍するのがディレクトリです。
minnieの".bashelle "ファイルを編集し、そのディレクトリだけを指すようにパスを設定します。また、minnieの「.bashētteru profile」ファイルをrootユーザーしか編集できないように制限します。つまり、他のユーザーがそのファイルを編集してパスを変更することはできないのです。
sudo gedit /home/minnie/.bash_profile既存の "PATH="を編集するか、以下の行を追加してください。
PATH=$HOME/binファイルを保存します。ここでは、chownコマンドでファイルの所有者をrootに変更し、chmodコマンドでファイルのパーミッションを変更することにします。rootユーザのみが編集できるようになります。
sudo chown root:root /home/minnie/.bash_profile sudo chmod 755 /home/minnie/.bash_profile ls -l /home/minnie/.bash_profile次にユーザー minnie がログインしたとき、彼女のパスはあるフォルダを指しています。
制限されたユーザーであるミニーは、Bashの組み込みコマンドであるecho、alias、logoutしか使うことができません。
lsもし彼らに何か役に立つことをさせたいなら、脅迫を少し緩める必要がある。minnieのbinディレクトリから、minnieが使えるようにしたいコマンドへのシンボリックリンクをいくつか作成することにします。
sudo ln -s /bin/ls /home/minnie/bin sudo ln -s /bin/top /home/minnie/bin sudo ln -s /bin/uptime /home/minnie/bin sudo ln -s /bin/pinky /home/minnie/bin次にminnieがログインすると、Bashの内蔵コマンドと、それにリンクしたコマンドが使えることがわかります。
ls pinky dave uptime新しいユーザー minnie を作成しました。既存のユーザーのシェルを変更するには、usermod コマンドの -s (シェル) オプションを使用します。
sudo usermod -s /bin/rbash maryetc/passwd」ファイルのlessコマンドを使えば、そのユーザーのデフォルトシェルとしてどのシェルが設定されているかをすぐに確認することができる。
less /etc/passwdユーザーmaryが次回ログイン時に制限されたシェルを使用することがわかります。
その他、環境変数$PATHの変更を適用し、ユーザーmaryが実行できるようにしたいコマンドを設定することを忘れないでください。
通常の無制限ユーザーは、制限されたシェルで実行されるスクリプトを起動することができます。次の行をコピーして、エディタに貼り付けてください。ファイルを「restricted.sh」として保存し、エディタを閉じます。
#!/bin/bash # script starts in normal Bash shell echo "## In UNrestricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory" cd /usr/share echo "Now in directory: `pwd`" echo "Changing to home directory" cd ~ echo "Now in directory: `pwd`" # Setting restricted mode set -r echo echo "## In restricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory to /home/" cd /home echo "Still in directory: `pwd`" echo echo "Trying to start another shell" /bin/bash echo echo "Trying to redirect command output" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0スクリプトを実行可能にするには、chmodコマンドと+x(execute)フラグを使用する必要があります。
chmod +x restricted.shスクリプトの最初の部分は、通常のシェルで実行されます。
./restricted.shスクリプトの2番目の部分は、制限されたシェルで実行される「set-r」行の後の部分である。
スクリプトの制限された部分で成功した操作はありません。
最初の行に-rをつけると、スクリプト全体が制限されたシェルで実行されるようにすることができます。
!#/bin/bash -r制限付きシェルは便利ですが、完全なフールプルーフではありません。十分に熟練したユーザーであれば、それらを使いこなすことができます。しかし、適切に使用すれば、特定のアカウントに一連の制限を設けることができる便利な方法です。