2016-04-26 10 views
1

私はsudoを要するファイルにいくつかのテキストをプッシュしようとしています:バッシュエコーテキストsudoのファイルに

sudo echo "some text" > /etc/path/to/file 

しかし、私は、次のエラーを取得しておいてください。

bash: /etc/path/to/file: Permission denied 

私がそれを行うことができますnanoですが、私はそれをプログラムで行う必要があります。 >オペレータに問題がありますか?代わりに使用できるスクリプトはありますか?

+0

rootとしてコマンドを実行するのに 'sudo su'を使うことができます。 – user161778

答えて

4

シェル(この場合はbash)は、コマンドを実行する前にリダイレクト(>)を先に実行します。従って/etc/path/to/filesudoのコマンドを実行する前に作成され、通常のユーザーには/etc/path/to/fileというファイルを作成するための十分な権限がないため、許可に関するエラーメッセージが表示されます。

あなたが行うことができます

sudo bash -c 'echo "some text" > /etc/path/to/file' 

またはteeを使用する:あなたはsudoのコマンドを実行すると、まだ入力する必要がありますことを考慮に入れる必要があるしかし

echo "some text" | sudo tee /etc/path/to/file 
-1

書き込みしようとしているファイルに書き込むためのファイルアクセス権がありません。 ファイルに書き込むことができるようにファイルアクセス権を変更するchmodコマンドを調べるべきです。 これにより、エラーが削除されます。

+0

まず、私はそれを知っています。 'sudo'はそれを回避する必要があります。第二に、私がファイルに書き込めない場合、私はそれを 'chmod'することもできません。 – PJSCopeland

0

heemaylはすでに権限の問題を説明ユーザーパスワードを手動で入力します。つまり、sudoersファイルで、sudoを実行しているユーザーにはパスワードが必要でないことを指定していない限り、そうでないことを望みます。

ので、手動でパスワードを入力しないようにするために、彼らは基本的に通常の/etc/shadowファイルの外に、ユーザーのパスワードを保存するためにあなたのことを必要とするためは、ほぼすべてがかなり悪いアイデアであるの可能性のカップルを持っています。

パスワードを平文ファイルに保存し、権限でアクセスを制限することをお勧めします。その後

echo "password" > ~/.password && chmod 400 ~/.password 

あなたはこのような外部ファイルからパスワードを読み取るためにはsudoのため-Sパラメータを使用することができます。

sudo -S bash -c 'echo "some text" > /etc/test' <~/.password 

はもう一度、/etc/shadow外のユーザーパスワードを保存することは、私はそれはいくつかの基本的な保護を提供した場合でも、このアプローチに対して助言するので、ユーザはsudoer権限を持っている場合は特に、巨大なセキュリティ上のリスクです。