myfolder
在更改 文件夹的权限时,我遇到了很多麻烦/
。我发出了命令
sudo chown -R luca:luca /myfolder/.*
我的目的是改变所有隐藏文件的所有权/myfolder
。
不幸的是,我发现的所有权也/
发生了变化,这当然导致我的系统崩溃。我认为这是因为..
匹配而发生的.*
,但对我来说仍然很奇怪。
更改父目录是正确的行为吗?还是我应该提交错误报告?
如果是我使用 chown 时出错了,那么最佳做法是什么,可以防止更改系统文件夹和文件的所有权?
答案1
请记住,命令行在执行之前会被 shell 扩展(解释)
sudo chown -R luca:luca /myfolder/.*
首先被解释为:
sudo chown -R luca:luca /myfolder/. /myfolder/.. /myfolder/.adobe /myfolder/.bash_history
注意/myfolder/..
命令行中的
chown -R luca:luca /myfolder/..
相当于 chown -R luca:luca /
让 chown “倒着” 跑
echo /myfolder/.*
当您使用“*”进行验证时使用。
答案2
嗯。root 命令行非常强大。阅读一些这些经典。是的,.*
匹配..
正是预期的。点不是特殊字符。这是一种惯例。按照惯例,在列出目录时,以点开头的文件在默认视图中是隐藏的——仅此而已。按照惯例,指向当前目录的 inode 获得名称.
,指向父目录的 inode 获得名称..
。
你应该做的是
chown -R luca:luca /myfolder
我是否提到过以点开头的文件名没有什么特殊之处?递归chown
并不这么认为。
目前,您可以通过将所有权改回 root 来挽救部分功能。但从长远来看,您可能需要重新安装系统。
作为基本规则:
- 避免以 root 身份工作。
- 如果您以 root 身份工作,请在按 Enter 之前阅读每个命令两遍。
- 如果您不确定扩展,请先使用“安全”命令(如
echo .*
)尝试。 - 请勿以 root 身份工作。
- 许多任务可以使用图形界面安全地执行(您的问题就是此类任务的一个示例)。
- 我是否曾提过您应该避免使用 root 帐户?