web-dev-qa-db-ja.com

sudoなしで緊急シャットダウンを実行する方法は?

問題

グループSudoに属する特定のユーザーが次のコードを使用して緊急シャットダウンを実行できるようにしようとしています。

echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger

これは、コマンドSudo!を使用してwithoutであることに注意してください。

編集:root:rootが所有する両方のファイルは、rootユーザーでも許可や所有者の変更を許可しないことを忘れていました。

理論的シナリオ

ハッカーはシステムを危険にさらします。通常、システムは監視なしで実行され、機密データを読み取る権限を取得します。ハッカーの継続を許可するのではなく、自動化されたスクリプトがマシンの電源をオフにします(ハックが検出されたと仮定します)。

私の正確なユースケースではありませんが、十分に似ています。

私が試したこと

  • 上記の2行のコードを実行するbashスクリプトを作成し、root:Sudo所有者を指定し、visudoに行を追加して、特定のユーザーがパスワードを入力せずにタスクを実行できるようにします。

  • 2つのファイルの所有者をroot:Sudoに変更しようとしました。

  • グループrootが書き込みできるように、2つのファイルのアクセス許可を変更しようとしました。

アイデアは、Sudoのパスワードを「焼き付けない」ことです。これにより、他のファイルを変更することを忘れずに定期的に変更できます(または、root特権)。よろしくお願いします。

3
user3303504

私の意見では、スクリプト内で行を次のように変更します。

echo 1 | Sudo tee /proc/sys/kernel/sysrq > /dev/null
echo o | Sudo tee /proc/sysrq-trigger > /dev/null

そして、次のようなパスワードを入力する必要なく、これらの引数を使用してteeコマンドを実行する特定のユーザーアクセスを与えます。

username ALL=(root:root) NOPASSWD: /usr/bin/tee /proc/sys/kernel/sysrq

>を使用して特定の許可を必要とするファイルに文字列をリダイレクトすることは不可能であることに注意してください。

Sudo echo hi > file
echo hi Sudo >  file

動作しません。

同時に、これらのファイルの所有者を単純に変更することはできません。/procはカーネルによって管理される仮想ファイルシステムです。

1
Ravexina