3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

sudoではリダイレクト書き込みができない。その対応策。

Last updated at Posted at 2020-03-09

sudoでリダイレクト書き込みをしようとしたら、Permission denied

オーナーがrootのあるファイルに、sudoで権限付与されたコマンドの出力結果をファイルに書き込もうとしたところ、Permisson deniedが出て書き込みできませんでした。
その対処法を見つけたので記します。

環境

RaspberryPi4 + Raspbian Buster(10.3)
ラスパイ上で起きた現象ですが、Linux全般に言えると思います。

現象

例えば、wpa_supplicant.confという、オーナーがrootのファイルに、$wpa_passphrase コマンドの出力結果を追記しようとしたとします。

$sudo wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf 

以下のエラーが出ます。

-bash: /etc/wpa_supplicant/wpa_supplicant.conf: Permission denied

原因

なぜなら、sudoで権限を得るのはsudoの後に入力されるコマンド(この場合、wpa_passphraseコマンド)のみで、リダイレクト(>>)は一般ユーザーで実行されてしまうためです。

対処方法

リダイレクトの代わりにteeコマンドを使うことで書き込みが出来ます。

$sudo wpa_passphrase SSID PASSPHRASE |sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf

-a コマンドは既存ファイルに追記するteeコマンドのオプションです。
結果、以下のように書き込まれます。

pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

~中略~

network={
        ssid="SSID"
        #psk="PASSPHRASE"
        psk=[暗号化されたパスフレーズ]
}
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?