
ルートになるシェルスクリプトをどのように作成しますか?つまり、メッセージが表示されたときにパスワードを入力したくありません。パスワードはスクリプト自体内になければなりません。しようとしましたが失敗しました。可能ですか?もしそうなら、説明してください。
答え1
以下を使用してスクリプトを作成できます。予想されるツール。
Redhatでは、Expectパッケージはデフォルトです。ただし、Ubuntuでは別途インストールする必要があります。
コマンドを使用して、次のことを確認できます。
$ rpm -qa | grep expect
レッドハットの場合
$ dpkg -l expect
Ubuntuの場合
次のスクリプトが操作を実行します。
#!/usr/bin/expect
spawn su -
expect "Password: "
send "password\r"
interact
答え2
ルートパスワードのプレーンテキストをファイルに保存する本質的に危険- 回復する方法はさまざまです。
これはXYの問題のようです。
Unixy が権限を委任する方法は setuid ビットによって行われます。ただし、これはシェルスクリプトではなくバイナリ実行可能ファイルにのみ適用されます。 jordanmが言ったように、シェル自体にsetuidを適用することは非常に危険です。これがsudoが存在する理由です。 setuidビットがあり、きめ細かいアクセス制御のためにsudoersファイルに対するユーザー要求を認証します。しかし、sudoにもいくつかの問題があります。
答え3
最も簡単な方法は、シェルのsuidコピーを作成することです。
cp /bin/bash $HOME/bin/becomeroot
sudo chown root $HOME/bin/becomeroot
sudo chmod 4750 $HOME/bin/becomeroot
hash -r
Run はbecomeroot
root として実行される bash サブシェルを起動します。
しかし、私があなたに次のアドバイスをしないと、私は怠慢になります。しないでください。マルウェアが自分の権限をそのように簡単にrootに昇格させることは、賢明ではありません。代わりに、 root で何かを実行する必要があるたびにインストールし、sudo
使い方を学びます。
答え4
SUID 固定ビットを設定できます。
chmod 2664 your-file
これにより、ソフトウェアがファイルの所有者として実行されます。もちろん、所有権をrootに変更する必要があります。
sudo chown root your-file
(sudoersファイルにあり、sudoがインストールされていると仮定)