chown -R user:user .* 向后更改权限:这是正确的行为吗?

chown -R user:user .* 向后更改权限:这是正确的行为吗?

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 来挽救部分功能。但从长远来看,您可能需要重新安装系统。

作为基本规则:

  1. 避免以 root 身份工作。
  2. 如果您以 root 身份工作,请在按 Enter 之前阅读每个命令两遍。
  3. 如果您不确定扩展,请先使用“安全”命令(如echo .*)尝试。
  4. 请勿以 root 身份工作。
  5. 许多任务可以使用图形界面安全地执行(您的问题就是此类任务的一个示例)。
  6. 我是否曾提过您应该避免使用 root 帐户?

相关内容