2016-12-05 8 views
-2

ファイルの内容を貼り付けるために、次のコマンドを実行しました。/usr/binにあるファイルにcatすることはできません

sudo cat > /usr/bin/sasquatch 

ファイルアクセス権をsudoに変更した後でも、次のエラーが発生することがあります。

bash: /usr/bin/sasquatch: Permission denied 

どうして私はそれを修正できますか?

+0

須藤はあなたに管理者が与えたアクセスを許可します君は。それはあなた自身の個人的なマシンでない限り、一般的に止められないルートマジックではありません。 –

+2

'sudo sh -c 'cat>/usr/bin/sasquatch''あなたのケースでは、' sudo'は 'cat'のみに適用され、リダイレクト'> 'は通常のユーザとして実行されます。 '-c'を使うとそれが処理されます。 –

+0

'/ usr/bin'にあるファイルを改ざんするのは悪いことです。ファイルをそこに残しておかなければなりません('/bin'と '/ usr/bin'とが異なる場合)。 'system'ディレクトリにファイルを追加する必要がある場合、通常は '/ usr/local/bin'を使用する方が良いでしょう。 –

答えて

2

>は、シェルを書き込み用のファイルにします。あなたのシェルはあなたのユーザー権限で実行されています。

sudoを使用すると、(ファイルを開いている)シェルではなく、コマンドを昇格させるだけです。

一つの方法は、sudoを使用して新しいシェルを起動することです。

sudo bash -c 'cat > /usr/bin/sasquatch' 

あなたが貼り付けに言及しているので、あなたがXCLIPの使用を検討することができます

sudo bash -c 'xclip -sel clip > /usr/bin/sasquatch'