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 所有。该文件仍然可以编辑 - 但除 root 之外的其他用户不能编辑。你可以...
- 以 root 身份编辑文件(通常是错误的)
- 将文件的用户(或组,如果组可写)所有权更改为您通常使用的用户(或他们所属的组)(好)
- 更改文件的权限,以便任何人都可以编辑它(不好)
- 更改文件权限的默认值(不好)
更改所有权是通过乔恩命令。更改文件的权限是通过以下方式完成的chmod。更改默认值是通过掩码命令,通常从您的 shell 配置文件调用。 chmod 和 chown 在第一个链接中进行了说明,并在后续链接中进行了更详细的说明。
答案2
sudo cp
将使它属于文件的原始用户(最有可能root
)。
sudo
aftertouch
将覆盖该文件,因此它将保留其原始 id/groupid。
“Clobber”是默认操作,尽管手册页中没有明确指出:
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)
这应该可以解决这个问题:
sudo chown `id -u` ~/.config/dunst/dunstrc