1

/etc/hosts に行を追加するスクリプトを作成しようとしています。つまり、sudoer 権限が必要です。ただし、デスクトップからスクリプトを実行すると、パスワードの入力を求められません。私は単に許可が拒否されます。

スクリプト例:

#!/bin/bash
sudo echo '131.253.13.32        www.google.com' >> /etc/hosts
dscacheutil -flushcache

端末がポップアップし、許可が拒否されたと表示されますが、実際には sudo パスワードの入力を求めるプロンプトは表示されません。これを修正する方法はありますか?

4

2 に答える 2

4

sudo はリダイレクト演算子には適用されません。またはのいずれかを使用できecho | sudo tee -aますsudo bash -c 'echo >>'

echo 131.253.13.32 www.google.com | sudo tee -a /etc/hosts
sudo bash -c 'echo 131.253.13.32 www.google.com >> /etc/hosts'
于 2012-10-08T22:59:10.917 に答える
1

ここで行っていることは効果的です。

  1. ルートに切り替えて実行しますecho

  2. 自分自身に戻って、の出力をに追加してみてsudoください /etc/hosts

/etc/hostsを実行しているときではなく、に追加するときにrootである必要があるため、これは機能しませんecho

これを行う最も簡単な方法は

sudo bash -c "sudo echo '131.253.13.32        www.google.com' >> /etc/hosts"

これはbash自体をrootとして実行します。ただし、これは特に安全ではありません。これは、シェルをrootとして呼び出しているため、多くの厄介な処理を実行する可能性があるためです(特に、環境変数BASH_ENVに名前が含まれているファイルのコンテンツが実行される場合は、 1つです。したがって、これをもう少し慎重に行うことをお勧めします。

sudo env -i bash -c "sudo echo '131.253.13.32        www.google.com' >> /etc/hosts"
于 2012-10-08T23:04:42.427 に答える