\r\n\r\n

制限付きシェルを使って、リナックスユーザーができることを制限する方法

制限付きシェルは、Linux上でユーザーアカウントが行えることを制限します。制限されたユーザーは、自分のディレクトリを変更することができず、アクセスできるコマンドを制御することができます。Linuxで制限付きシェルを設定する方法はこちら...

制限付きシェルは、Linux上でユーザーアカウントが行えることを制限します。制限されたユーザーは、ディレクトリを変更することができず、アクセスできるコマンドを制御することができます。Linuxで制限付きシェルを設定する方法を説明します。

制限付きシェル

bash、korn、fish などのシェルはすべて制限付きシェルモードで起動できます。今回はBashを使用しますが、他のシェルでも同じ原則が適用されます。

制限付きシェルは標準シェルの別の使い方に過ぎないため、簡単に設定することができます。インストールするものは何もなく、Linuxがあるところならどこでも利用できる。

制限付きシェルは、スクリプトにも適用できます。これにより、万が一不正に書き込まれたとしても、被害はその限定された世界に限られ、コンピューター全体にアクセスすることはできません。

ただし、制限されたシェルは完全に脱出できるわけではありません。十分な知識があれば、制限を逃れることができる。これらは一時的なユーザーのセキュリティ境界を設定するには最適ですが、本番システムでの本当のセキュリティは制限されたシェルに依存しないようにしてください。

関連:BashやZshなどLinuxのシェルの違いとは?

パウンドの制限

Bashを制限付きシェルとして実行すると、ユーザーがいくつかの機能を削除することになります。具体的には、ユーザーはできないようにします。

  • 作業ディレクトリを変更する場合は、cdを使用します。
  • 環境変数$PATH、$SHELL、$BASHèENV、$ENVの値を変更する(ただし、現在の値を読み取ることができる)。
  • SHELLOPTS シェル環境オプションを読み込んだり、変更したりします。
  • コマンドの出力をリダイレクトする。
  • 位置を特定するためにパスを必要とするコマンドが呼び出されます。つまり、1つ以上のフォワードスラッシュ "/" を含むコマンドは発行できません。
  • シェルで他のプロセスを置き換えるためにexecを呼び出す。
  • スクリプト内で制限された関数を使用する。

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/rbash

ManjaroとFedoraでは、rbashのシンボリックリンクを作成する必要があります。これは、両方のディストリビューションに当てはまります。

whereis rbash sudo ln -s /bin/bash /bin/rbash whereis rbash

2回目の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/bin

Minnieがログインすると、制限されたシェルで実行されます。

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 mary

etc/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

フーディーニを覚えていますか?

制限付きシェルは便利ですが、完全なフールプルーフではありません。十分に熟練したユーザーであれば、それらを使いこなすことができます。しかし、適切に使用すれば、特定のアカウントに一連の制限を設けることができる便利な方法です。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ