web-dev-qa-db-ja.com

sudo許可が拒否されました

私はこのコードを実行しました:

Sudo cat <<EOF | Sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF

ただし、「許可が拒否されました」と表示された場合でも、/ etc /init.dディレクトリで変更を行うにはrootである必要があります。そして、どういうわけか、上記の私のコマンドは機能しません。

これを解決する方法はありますか?

3
8k_of_power

ファイルへのリダイレクトはbashによって処理されます。したがって、Sudoによって付与されたアクセス許可は継承されません。

Rootとしてファイルに書き込むには、Sudo teeを使用します。

これを試して:

cat | sed -e 's,%,$,g' | Sudo tee /etc/init.d/dropbox << EOF
  echo "Hello World"
EOF

二重引用符で囲まれた$,が解釈される場合があることに注意してください。

7
Benoit

あなたは自分自身に永続的な権利を与えることができます
# Sudo -s

次に、コマンド(Sudoを実行する必要はありません)を実行して終了します。
# exit

編集:
あなたの質問にはUbuntu関連のタグが付いているので、Ubuntu関連の質問をしていると思います。 Suseのような他のディストリビューションでは、を使用することができます
# su
の代わりに # Sudo -s

4
MOnsDaR

この部分: Sudo sed -e "s,%,$,g" >/etc/init.d/dropbox cenは次のように表示されます:

Sudo somecommand --put the result of the Sudo command into--> /etc/init.d/dropbox

これと同じように:

ls somedirectory > filename
ls somedirectory --put the result of the ls command into--> filename

これは、ファイルの書き込みがrootとしてではなく、現在のユーザーとして行われることを意味します。

Benoitが答えに示しているように、teeを使用して解決できます。

0
Emil Vikström