3

管理者権限 (sudo) で実行する必要がある bash シェル スクリプトを作成しています。

次のコマンドを実行しています

sudo -u $SUDO_USER touch /home/$SUDO_USER/.kde/share/config/kcmfonts > /dev/null
sudo -u $SUDO_USER echo "[General]\ndontChangeAASettings=true\nforceFontDPI=96" >> /home/$SUDO_USER/.kde/share/config/kcmfonts

最初のコマンドは成功し、ファイルが作成されます。ただし、2 番目のコマンドでは、次のエラーが発生し続けます。

/home/username/.kde/share/config/kcmfonts を作成できません: 許可が拒否されました

これがアクセス許可でエラーを出し続ける理由を理解できません。sudo を呼び出したユーザーとしてコマンドを実行しているので、このファイルに書き込むためのアクセス権が必要です。kcmfonts ファイルが正常に作成されました。

誰かが私を助けることができますか?

4

2 に答える 2

4

これを行うことを検討してください:

echo "some text" | sudo -u $SUDO_USER tee -a /home/$SUDO_USER/filename

tee コマンドは、出力をファイルに送信するのに役立ちます。ティーの-aオプションは追加用です(のように>>)、それなしではファイルを破壊します(のように>)。

昇格された特権で左側を実行する必要はありません (これは単なるエコーですが、習慣として形成するのは良いことです)。必要なのは、ファイルに書き込むための昇格された特権だけです。したがって、このコマンドでは、tee の権限のみを昇格させます。

于 2013-11-02T01:44:44.763 に答える