尝试创建硬链接时,CentOS 7中出现权限错误。使用CentOS 6中设置的相同权限,我不会收到该错误。问题集中在组权限上。我不确定哪个操作系统版本正确和错误。
让我说明发生了什么。在当前的工作目录中,我有两个目录:源目录和目标目录。开始时,目的地为空;源包含一个文本文件。
[root@tc-dlx-nba cwd]# ls -l
total 0
drwxrwxrwx. 2 root root 6 Jun 12 14:33 destination
drwxrwxrwx. 2 root root 21 Jun 12 14:33 source
[root@tc-dlx-nba cwd]# ls -l destination/
total 0
[root@tc-dlx-nba cwd]# ls -l source/
total 4
-rw-r--r--. 1 root root 8 Jun 12 14:20 test.txt
[root@tc-dlx-nba cwd]#
如您所见,关于权限,两个目录均为777,所有者和组均设置为root。文本文件的所有者和组也都设置为root。但是,文本文件的权限对所有者是读写的,但对于组是只读的。
以root用户身份登录时,在目标目录中创建指向文本文件(在源目录中)的硬链接没有问题。
[root@tc-dlx-nba cwd]# ln source/test.txt destination/
[root@tc-dlx-nba cwd]# ls destination/
test.txt
但是,如果以其他用户身份登录(在这种情况下为admin),则无法创建链接。我得到:“不允许操作。”
[root@tc-dlx-nba cwd]# rm -f destination/test.txt
[root@tc-dlx-nba cwd]# su admin
bash-4.2$ pwd
/root/cwd
bash-4.2$ ln source/test.txt destination/
ln: failed to create hard link ‘destination/test.txt’ => ‘source/test.txt’: Operation not permitted
发生的事情对我来说实际上是有意义的,但是由于CentOS 6中允许上述操作,所以我想检查一下我是否误解了。对我来说,这似乎是CentOS 6中的错误,已在CentOS 7中修复。
有人知道会给什么吗?我是否正确认为上述行为是正确的行为?是正确的CentOS 6吗?或者,都是正确的,也许我缺少一些微妙的组权限问题?谢谢。
编辑:我刚刚在我拥有的Debian v7 VM上尝试了相同的测试。Debian同意CentOS 7:“不允许操作”。
编辑2:我只是在Mac OS X(Yosemite)上尝试过同样的事情。这与CentOS 6的工作方式一样。换句话说,它允许创建链接。(注意:在OS X上,根组称为“ wheel”。据我所知,这是唯一的区别。)