ええ、私はルートにエスカレートすることができます(おそらくそうするでしょう)が、なぜこれが機能しないのか知りたいのですが?
Sudo cat .mplayer/config >> /home/griff/.mplayer/config
zsh: permission denied: /home/griff/.mplayer/config
Sudo
は、任意のコマンドを実行できるように構成されています。制限はありません。
コマンドに関係なく、コマンドの実行前にリダイレクト>>
が常に実行されるため、これは失敗します。
この場合、シェルは(ルートではなく)ユーザーとして実行されており、ルートではなく現在の権限を使用して.../config
ファイルに追加しようとし、Sudoが実行される前に失敗します。
コマンドが意図することを行うための一般的なメタファーは次のとおりです。
Sudo tee --append /home/griff/.mplayer/config < .mplayer/config
(.mplayer/config
の読み取り権限があることを前提とします)。 /home/griff/...
はSudoのルートコンテキストでtee
によって開かれるため、そのファイルを書き込むためのルート権限を持っています。
.mplayer/config
の内容を標準出力にコピーし、それをgriffのファイルに追加するので、私はこのアプローチに熱心ではありませんが、機能します。
沿って
Sudoは任意のコマンドを実行できます
概念的には、Sudoは任意のコマンドを実行するように構成できますか、それとも、問題のシステムでおおまかに<user> <Host(s)>=<opt(s)> ALL
としてSudoを構成したということですか?
Sudo -u 0 cat ...
を試しましたか?これにより、ユーザーIDが許可されていれば、Sudoは強制的にrootとしてコマンドを実行します。
Sudo -l
は何を出力しますか?