私は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を使用する理由です。