为什么我不能在不影响另一个文件夹的情况下设置一个文件夹的组和所有权?

Rob*_*J1M 2 upgrade permissions home-directory 12.04 chown

我已将 Ubuntu PC 从 10.04 升级到 12.04。

问题是主文件夹上的所有权限都是错误的。

所以,我做了以下事情:

sudo chown -R james:james /home/james/*
sudo chown -R james:james /home/james/.*
sudo chown -R htpc:htpc /home/htpc/*
sudo chown -R htpc:htpc /home/htpc/.*
Run Code Online (Sandbox Code Playgroud)

但是您最终会在 james:james 或 htpc:htpc 中的两个文件夹中获得所有文件,具体取决于您运行命令的方式。

如何成为链接,我该如何解决?

按照要求:

james@htpc:~$ ls -l /home
total 8
drwxr-xr-x 41 james james 4096 May 20 19:32 htpc
drwxr-xr-x 31 james james 4096 May 20 20:04 james
james@htpc:~$ ls -l /home/htpc
total 236
drwxr-xr-x  4 james james   4096 Nov 25 13:19 Desktop
drwxr-xr-x  2 james james   4096 Mar 13  2011 Documents
drwxr-xr-x  5 james james   4096 Dec 22  2010 Downloads
-rw-r--r--  1 james james    179 Nov 18  2010 examples.desktop
-rwxr-xr-x  1 james james     85 Dec 27  2010 goback
-rw-r--r--  1 james james    425 Nov 28  2010 modelines
drwxr-xr-x  5 james james   4096 Dec 27  2010 Music
drwxr-xr-x 22 james james   4096 Oct 29  2012 Pictures
drwxr-xr-x  2 james james   4096 Nov 18  2010 Public
drwxr-xr-x  2 james james   4096 Nov 18  2010 Templates
-rwxr-xr-x  1 james james    251 Dec 27  2010 testmode
drwxr-xr-x  2 james james   4096 Dec 23  2010 Videos
-rwxr-xr-x  1 james james 190672 Nov  6  2010 winetricks
james@htpc:~$ 
Run Code Online (Sandbox Code Playgroud)

Pan*_*her 6

这是因为 shell 将“.*”扩展为“..”或向上一级目录。

在这种情况下,IMO 最好使用 find

成为root

sudo -i
Run Code Online (Sandbox Code Playgroud)

运行查找

find /home/$user -exec chown $user:$user {} \;
Run Code Online (Sandbox Code Playgroud)

将 $user 更改为适当的用户名

理论上, chown 应该使用 -R 而没有通配符

sudo chown -R $user:$user /home/$user
Run Code Online (Sandbox Code Playgroud)

但我认为这遗漏了隐藏文件或 .files,这就是 RoboJ1M 尝试导致问题的“.*”的原因。


str*_*gee 5

每个文件夹都包含一个名为... 这个文件的特殊之处在于它指向包含当前工作目录的目录。例如:

$ pwd
/path/to/dir
$ cd ..
$ pwd
/path/to
Run Code Online (Sandbox Code Playgroud)

因为您指定.*为参数,shell 会将其扩展到每个以“.”开头的文件,包括... 这意味着您的操作在当前工作目录中的所有内容上运行,但也在父目录 ( /home) 上运行。因为您指定了递归,所以您将文件/home夹中的每个文件和目录更改为您指定的任何所有权。事实上,您可能已经更改了系统上每个文件的所有者。我建议运行ls -l /以检查是否发生了这种情况 - 如果发生了,您可能会遇到问题。