从当前目录上方的目录开始递归chown


27

我无法登录到“管理员”帐户,并且Alt+ Ctrl+ F1显示我的所有文件均归“标准”用户所有。奇。

所以,我仔细改变/home/admin,做了

sudo chown -R admin:admin *

.*也是)。

大。

然后,我无法以“标准”用户身份登录,原来所有文件/home/standard现在都归“管理员”所有。

很幽默。为什么会这样呢?

sudo chown -R standard:standard /home/standard/*

做同样的事情,改变/home/admin以及/home/standard

我比平常更困惑,因为我尝试升级到15.04,这几乎毁了我的计算机,所以我将其恢复为14.04,请耐心等待。


也许一个是与另一个的符号链接?怎么ls -l /home说呢?
steeldriver 2015年

Answers:


35

引起此问题的原因是您已经运行:

sudo chown -R admin:admin .*

我们知道,它.指示当前目录,并..指示父目录。当使用来运行命令时.*,它仅表示与当前目录中的任何隐藏文件匹配(以表示.),当前目录本身(.),父目录(..)。只需在后面加上任何字符.*表示0个或更多字符)。结果,父目录及其所有子目录都被添加chownadmin:admin

看一下这个测试:

test$ ls -al
drwxrwxr-x 4 foo foo 4096 Jun  3 07:15 .
drwxrwxr-x 4 foo foo 4096 Jun  2 18:06 ..
drwxrwxr-x 2 foo foo 4096 Jun  3 07:15 egg
drwxrwxr-x 2 foo foo 4096 Jun  3 07:12 spam

$ sudo chown -R bar:bar spam/.*

test$ ls -al
drwxrwxr-x 4 bar  bar  4096 Jun  3 07:15 .
drwxrwxr-x 4 foo  foo  4096 Jun  2 18:06 ..
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:15 egg
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:12 spam

要还原,您需要chown再次进入受影响的目录。

我不确定您的计划是什么,但是这里有一些建议:

  • chown递归到任何目录(包括隐藏文件):

    sudo chown -R foo:foo /spam/egg/
    
  • chown只目录(而不是目录本身)里面的文件(包括隐藏文件):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • chown只非隐藏文件(不包括目录本身):

    sudo chown -R foo:foo egg/*
    

谢谢,我现在明白了... duh; P仍然不知道为什么所有者首先要更改,除非它与Grub有某种关系,给我一个错误,并使14.04安装程序崩溃。我的标准用户是我创建的第一个用户,后来我将该用户降级并创建了一个新用户。
DavidP

@DavidP我不清楚你在..得到什么
heemayl

3

我认为这是文件的“。*”参数;匹配以“。”开头的所有内容,包括“。” “ ..”文件。“ ..”是父目录,其中包括其下的所有内容。

最好的方法是备份一个文件夹,并指定要更改的实际文件夹(/ home / admin)。

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.