45

これは、sudo を使用してファイル内のデータを別のファイルに追加しようとすると、「アクセスが拒否されました」という結果になるシェル コマンドです。

sudo cat add_file >> /etc/file

のファイル/etc/fileは所有者root(つまり、私) であり、そのパーミッションはrw-r--r--です。私rootはそれを機能させるために少しの間になるべきですか、それとも回避策はありsudoますか?

4

6 に答える 6

68

次のように実行bashsudoます。

$ sudo bash -c "cat add_file >> /etc/file"

$ whoami;sudo bash -c "whoami";whoami
iiSeymour
root
iiSeymour
于 2012-12-08T15:25:49.020 に答える
27

代わりにこれを試してください:

sudo tee -a /etc/file < add_file

bash を実行するよりも軽量です。sh -c command

于 2012-12-08T15:24:44.777 に答える
9

面白い可能性は、ed(標準エディタ)を使用することです:

sudo ed -s /etc/file <<< $'r add_file\nwq'

この素晴らしい答えに賛成できないことはわかっていますが、とにかくここに含めたいと思いました(面白いので)。終わり!

于 2012-12-08T15:42:58.083 に答える
5

sudo cat add_fileコマンドの結果をファイル /etc/fileに書き込もうとしています。どうやらあなたにはその権利がありません。

man sudoその例を示します:

   To make a usage listing of the directories in the /home partition.  Note
   that this runs the commands in a sub-shell to make the cd and file
   redirection work.

    $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

だからあなたは試してみる必要があります:

sudo sh -c "cat add_file >> /etc/file"

于 2012-12-08T15:32:57.540 に答える
-2

試す

sudo bash -c 'cat add_file >> /etc/file'

また

cat add_file | sudo tee -a /etc/file > /dev/null
于 2014-02-27T21:19:11.183 に答える