あるファイルの内容を別のファイルにコピーしているときに権限が拒否されました。

あるファイルの内容を別のファイルにコピーしているときに権限が拒否されました。

私はsudoユーザーである「papagolf」というユーザーとして働いています。次のコマンドを使用して新しいグループ「hadoop」を作成しました。

papagolf@Sierra:~$ sudo addgroup hadoop

「haduser」というユーザーを作成しました。

papagolf@Sierra:~$ sudo adduser --ingroup hadoop haduser

papagolfの.sshディレクトリにsshキーを作成し、公開鍵ファイルをこの新しいディレクトリにコピーしました。

papagolf@Sierra:~$ cp hadoop_keys.pub /home/haduser/.ssh/

.ssh/authorized_keysに新しいファイルを作成しました。

papagolf@Sierra:~$ cd /home/haduser/.ssh/
papagolf@Sierra:/home/haduser/.ssh$ sudo touch authorized_keys

それでは、.pubファイルの内容をauthorized_keysにコピーしたいと思います。ただし、権限が拒否されたというエラーメッセージが表示されます。sudoユーザーなのに、なぜこれが起こるのか知りたいです。

papagolf@Sierra:/home/haduser/.ssh$ sudo cat hadoop_keys.pub >> authorized_keys
bash: authorized_keys: Permission denied

今私はこれを試してみましたが、うまくいきました。

papagolf@Sierra:/home/haduser/.ssh$ sudo -i
root@Sierra:/home/haduser/.ssh# cat hadoop_keys.pub >> authorized_keys

違いは何ですか?エラーが発生するのはなぜですか?

ベストアンサー1

Ipor Sircerが述べた質問のうち、目標を達成する方法を見つけることができます。

簡単な説明だけを追加します。ストリームリダイレクト(>>この場合)はsudoで実行されるプロセスではなくシェルによって実行されるため、シェル(papagolfのシェル)にはまだ他のユーザーのディレクトリに書き込む権限がありません。これがまさに人々がこれを行うためにteeまたはsedを使用する理由です。

おすすめ記事