ファイルを直接編集できないのはなぜですか?

ファイルを直接編集できないのはなぜですか?
mkdir ~/.config/dunst

sudo cp /etc/dunst/dunstrc ~/.config/dunst/dunstrc

これにより、ファイルを編集できなくなります。

rm ~/.config/dunst/dunstrc
touch ~/.config/dunst/dunstrc
sudo cp /etc/dunst/dunstrc ~/.config/dunst/dunstrc

これにより、ファイルを編集できます。 Linuxはなぜそう行動するか。

答え1

ほとんどの最新のオペレーティングシステムで動作ファイル権限と所有権。 Linuxでは、Unixと同様にファイルを共有するように指示されていない限り、ファイルへのアクセスを制限することがデフォルトの動作です(他のオペレーティングシステムでは異なるアプローチを取る)。 「sudo」を使用すると、セキュリティ制御なしで作業を実行できます。 Sudo は root ユーザーとしてコマンドを実行します。ルートとしてファイルをコピーすると、新しいファイルはルートの所有になります。ファイルは引き続き編集できますが、root以外のユーザーは編集できません。あなたはできます...

  • rootでファイルを編集する(通常間違っている)
  • ファイル内のユーザー(またはグループが書き込み可能な場合はグループ)の所有権を通常使用するユーザー(またはそのグループが属するグループ)に変更します(良好)。
  • 誰でも編集できるようにファイルの権限を変更します(悪い)。
  • ファイル権限のデフォルト値の変更(悪い)

所有権の変更は次のように行われます。ジョン注文する。ファイルの権限の変更は、次のように実行されます。chmod。デフォルト値を変更する方法は次のとおりです。マスク通常、シェル構成ファイルから呼び出されるコマンドです。 chmod と chown は最初のリンクで説明され、後続のリンクでさらに詳しく説明されます。

答え2

sudo cpファイルの元のユーザーに属します(ほとんどroot)。

sudoafterはtouchファイルを上書きするため、元のID /グループIDを保持します。

「Clobber」はデフォルトの動作ですが、マニュアルページに明示的に指定されていません。

       -n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)

これにより問題が解決します。

sudo chown `id -u` ~/.config/dunst/dunstrc

関連情報