はい*
制限付きシェルと呼ばれます。
を使用できます/bin/rbash
。これは、Ubuntuで既に利用可能であり、制限されたPATH変数と組み合わせます。rbash
していないものから実行を禁止します$PATH
。
制限ユーザーを追加します。
sudo adduser --shell /bin/rbash res-user
ユーザーが以下に制限されるように、バイナリをリンクできる新しいディレクトリを作成します。
sudo mkdir /home/res-user/bin
.profile
ファイルを変更します。
sudo vim /home/res-user/.profile
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
readonly PATH=/home/res-user/bin
export PATH
確認し.profile
、bashrc
そして.bash_profile
不変:
sudo chattr +i /home/res-user/.profile
sudo chattr +i /home/res-user/.bashrc
sudo chattr +i /home/res-user/.bash_profile
ここで、ユーザーに許可されている唯一のこと、つまりFirefoxを開きます。
sudo ln -s /usr/lib/firefox/firefox /home/res-user/bin/
さて、次のようにログインすると res-user
Firefoxしか開け:
res-user@localhost:~$ /home/res-user/bin/firefox --version
Mozilla Firefox 68.0.1
制限されたシェルを簡単にエスケープすることはできません。
res-user@localhost:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
-su: PATH: readonly variable
制限されたユーザーは、ファイルを実行可能にしたり、起動したりすることはできません。
res-user@localhost:~$ chmod +x script.sh
Command 'chmod' is available in '/bin/chmod'
res-user@localhost:~$ bash script.sh
Command 'bash' is available in '/bin/bash'
The command could not be located because '/bin' is not included in the PATH environment variable.
bash: command not found
ユーザーは必要なコマンドを実行できないため、制限されたユーザーはインターネットから悪のスクリプトを実行できません。
res-user@localhost:~$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Command 'wget' is available in '/usr/bin/wget'
The command could not be located because '/usr/bin' is not included in the PATH environment variable.
wget: command not found
Command 'bash' is available in '/bin/bash'
The command could not be located because '/bin' is not included in the PATH environment variable.
bash: command not found
* 制限されたシェルから抜け出す方法はありますが、ユーザーがそれを実行できる場合は、考えられるほどだまされにくいかもしれません。