web-dev-qa-db-ja.com

致命的/致命的なコマンドの実行を防ぐ

最近記事「 Linuxで実行してはならない8つの致命的なコマンド 」を読んだ後、特定のコマンドを何らかの方法でブロック/防止/変更することを計画しました。他の誰かが私のPCで破壊的なコマンドを実行することを心配していません。私が事故の原因になっているのではないかと心配しています。

以下にリストされているコマンドが心配です。

wget http://example.com/something -O – | sh –
  • ガイドからコマンドをコピーして貼り付けるときに、この行を実行しました。 sh -に気付いたら、アーカイブの内容をチェックアウトしてから実行していました。
rm -rf /
  • 誤って「Enter」キーを押してしまいました...

将来これらの間違いを犯さないようにしたいです。これらの間違いを犯さないようにするコマンド/構成ファイルはありますか? Sudo/root権限があっても上記のコマンドを実行できないようにします。解決策を逆にすることができれば大丈夫です。

Ubuntuについて詳しく知るのに役立つリソース(一般的なUbuntu Wiki/Help/etc。リンクを除く)は、高く評価されます

データの損失は私の主な関心事ではありません。私は自分自身のために端末を少し安全にしたい(あなたがするなら 'newb-proofed')。学ぶべきことがたくさんあるので、これは私にとって役立つでしょう。学校を再開しましたが、問題/エラーの解決にあまり時間を費やすことはできません(現状のまま)。

編集

確認を求めるために特定のコマンドを要求することは可能ですか?特別なパスワードを要求する特定のコマンドを設定したい場合、実行できますか?

6

私がコメントで言ったように、あなたがタイプするものを知ることは最高のセキュリティです

以下は、 関連する質問 で使用されている例です。

`base64 --decode <<< "cHJpbnRmICclcycgICdIZWxsbyBXb3JsZCcK"`

(完全を期すために、-dの代わりに--decodeフラグを使用できます。私の答えを編集しようとした人は-dは無効ですが、それは非常に有効で、指定されている マニュアル

これが何をするか知っていますか?それは偽装されたprintf '%s' 'Hello World'です。無害ですよね?これがrm -rf /だった場合はどうなりますか?ブラックリストに登録しても、何かが偽装されてもあなたを救うことができません。このコマンドが悪意のあるユーザーによって正当なフォーラムに置かれているのを見ることができますか?それが起こるからです。そして、それは正確にそのコマンドである必要はありません-あなたが新しいユーザーで、あなたが何をしているのかわからない場合、悪意のあるユーザーはあなたに remove python または他の重要なパッケージを伝えることができ、あなたのブログやフォーラムにあなたを連れて行った問題を修正します。

しかし、確かに、次のように/etc/bash.bashrcでグローバル関数を介して何かをブラックリストに載せることができます(関数はコマンドまたはエイリアスよりも優先されるため)。

function rm{

if [ "$1" = "-rf" ] && [ "$2" = "/" ]
then
    echo "This command is bad juju"
else
    rm "$@"
fi


}

これは単なる例です。そして、非常に冗長なもの-Ubuntuのrm -rf /はデフォルトで確認が必要です。

これも防弾ではありません。攻撃者として別のシェルを使用するとどうなりますか? bashrc魔法はdash Shellに電力を供給しません。これはデフォルトでUbuntuにも付属しています

また、悪意のあるコマンドを1つ1つブラックリストに追加する関数を作成しますか?


追加の注意:「無害な」コマンドと思われるものをコピーすることも危険です。 この種のクリップボードの乱用から身を守るにはどうすればよいですか? およびこのテーマに関するStephane Chazelasの回答を参照してください。

14