CentOS 7でハードリンクを作成しようとすると、アクセス許可エラーが発生します。CentOS 6で設定したのと同じ権限があれば、エラーは発生しません。問題はグループの権限に集中しています。どのOSのバージョンが正しいのか、どちらが間違っているのかわかりません。
何が起こっているのかを説明しましょう。現在の作業ディレクトリには、ソースと宛先の2つのディレクトリがあります。最初、宛先は空です。ソースにはテキストファイルが含まれています。
[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]#
ご覧のとおり、権限に関しては、2つのディレクトリは777であり、所有者とグループの両方が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 7で修正されたCentOS 6のバグのようです。
誰が何を与えるか知っていますか?上記の動作が正しい動作であると私は正しく信じていますか?正しいのはCentOS 6ですか?または、どちらも正しく、おそらく私が見逃している微妙なグループ権限の問題がありますか?ありがとう。
編集:私はちょうど今持っているDebian v7 VMで同じテストを試しました。DebianはCentOS 7に同意します:「操作は許可されていません。」
編集#2: Mac OS X(Yosemite)で同じことを試しました。これはCentOS 6と同じように機能しました。つまり、リンクを作成することができました。(注:OS Xでは、ルートグループは「ホイール」と呼ばれます。私が知る限り、それが唯一の違いです。)