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


8

更改myfolder驻留在中的文件夹的权限时遇到了很多麻烦/。我发出命令

sudo chown -R luca:luca /myfolder/.*

我的意图是更改中所有隐藏文件的所有权/myfolder

不幸的是,我意识到的所有权/也发生了变化,这当然使我的系统崩溃了。我认为发生这种情况是因为..比赛.*,但对我来说仍然很奇怪。

更改父目录是正确的行为还是应该提交错误报告?

如果是我使用chown时出错,那么可以使用哪些最佳实践来防止更改系统文件夹和文件的所有权?


4
这是预期的行为..匹配.*
乌韦Plonus

.*表示. *..
结尾的

4
@NikTh反过来!
Uwe Plonus

好吧,一个最佳实践可能是不/直接修改(创建文件夹,删除等),除非完全必要(针对您要实现的目标提出一个问题)。使用通配符+ root特权也很危险,因为(通常)您不确定100%受通配符影响的内容。
edwin

1
@LucaCerone这是相关的,chmod并且chown是相似的命令,都以ch,开头,并包含o和以及另外两个相似的字母(nm)。</文字>严重的是,它们都具有以下形式:[cmd] -R [mode or user] [one or more files]。针对该问题提供的一些解决方案也适用于您的情况,例如,来自Sean Reifschneider的解决方案(在中间)。通过删除非隐藏文件的glob模式,此答案也适用于隐藏文件。
Lekensteyn

Answers:


5

请记住,命令行在执行之前已由外壳程序扩展(解释)

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/.*“ *”进行验证时使用。


@Emmanuel:为什么要使用xargs来查找-R选项何时足够?
2013

@伊曼纽尔:谢谢!您可以扩展一下find和xargs吗?
lucacerone

@LucaCerone我不确定您为什么接受这个,它会递归地更改中的所有文件/myfolder。该find命令是多余的,并且会中断包含空格的文件名。(如果您要递归更改文件,find /myfolder | xargs chown luca:luca则类似于chown -R luca:luca /myfolder)。
Lekensteyn

Lekensteyn是对的,我忘记了grep ^。
伊曼纽尔

@Lekensteyn我将发现更改为与空间不匹配
伊曼纽尔

4

好。以root身份运行命令行非常强大。看了一些关于这些经典之作。是的,.*匹配..的到底是什么意图。点不是特殊字符。这是一个惯例。按照惯例,列出目录时,默认视图中会隐藏以点开头的文件,仅此而已。按照约定,通向当前目录的索引节点将获得.名称,而通向父目录的索引节点将获得..名称。

你应该做的是

chown -R luca:luca /myfolder

我是否提到过以点开头的文件名没有什么特别之处?递归chown不这么认为。

现在,您可以通过将所有权重新更改为root来抢救某些功能。从长远来看,尽管如此,您可能必须重新安装系统。

作为基本规则:

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

我不想更改文件夹中所有文件的所有权...仅更改隐藏文件的所有权..
lucacerone 2013年

2
好,那我不好 在那种情况下,chown -R luca:luca /myfolder/.[^.]*我认为
2013

2
echo .*是尝试扩展的好方法。它会告诉您确切的外壳。ls .*可能会更加混乱,因为它会进入目录(ls -d .*可能会更好,但也可能只是使用echo .*
Robie Basak 2013年

@RobieBasak好点!
2013
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.