ハードリンク、シンボリックリンク、ACLフォルダの権限はどのようにやり取りするのですか?

ハードリンク、シンボリックリンク、ACLフォルダの権限はどのようにやり取りするのですか?

これは私が実現するのは少し難しいですが、次のような非常に奇妙な行動に直面しました。ACL拡張ファイル権限そしてハード/シンボリックリンク。質問を短く簡潔にしようとします。しかし、まず、現在の状況の例を紹介したいと思います。何が起きているのか、名前が何なのか全くわからないからです。


2人のユーザーがいるシステムがあるとしましょう。ユーザーを呼び出すaliceと、次の権限をbob持つフォルダが共有されます。stuff

bob@server:~$ getfacl /home/stuff getfacl: 
Removing leading '/' from absolute path names
# file: home/stuff
# owner: alice
# group: bob 
user::rwx
group::-wx
other::---
default:user::rwx
default:user:bob:rwx
default:group::-wx
default:mask::rwx
default:other::---

ご覧のとおり、フォルダの所有者は、aliceボブがフォルダにコンテンツを作成しalice(+ xフラグ)で実行できるように実行可能にすることができます。ただし、ACLが原因でファイルがbobに作成/コピーされるたびに、stuffファイルに対する権限が変更されます。ホームディレクトリにファイルを作成し、bobそれをstuff

bob@server:~$ touch myfile
bob@server:~$ chmod 777 myfile
bob@server:~$ ls -la myfile
-rwxrwxrwx 1 bob bob 0 myfile

bob@server:~$ mv myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
-rwxrwx---+ 1 bob bob 0 /home/stuff/myfile

ご覧のとおり、フォルダにあってもアクセスmyfileできません。ファイルが属しているため、上記のコマンドに従って最後の権限である「その他」ファイル権限を使用してアクセスする必要があります。それにもかかわらず、彼女はフォルダの所有者であるため、そのフォルダを削除できます(保護されているという警告が表示されますが)。stuffalicebob:bobalice---lsalicemyfile

今楽しいです。移動/コピーしないとmyfileどうなるかを観察し、それへのハードリンクを作成します。

bob@server:~$ ln myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
-rwxrwxrwx 2 bob bob 0 /home/stuff/myfile

当然alice読んで使用することが可能です。実際に私のシステムでテストしてみてください。それでもシンボリックリンクはまったく機能しないようです。

bob@server:~$ ln -s myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
lrwxrwxrwx 1 bob bob 4 /home/stuff/myfile -> /home/bob/myfile

今回はリンクにもすべての権限が設定されていますがlrwxrwxrwx(正確にはリンクなので誰でもフォローできなければ権限を取得できます)、alice実行する方法はなく削除のみ可能です。


私の質問:

  • 当初、ハードリンクを介してACS権限を「スキップ」できるのはなぜですか?
  • なぜ同じトリックがシンボリックリンクに適用されないのですか?
  • これは意図的なものですか、それともセキュリティ違反ですか?

ベストアンサー1

aliceAlice はディレクトリに対する書き込み権限を持っているため、所有者でstuff/なくてもファイルの内容を変更できます。

Linux ACLを使用している場合は、以下のようにファイルが作成されたとき(またはコピーがターゲットに新しいファイルを作成するため、コピーするとき)に権限が適用されます。man acl。ファイルの移動mv 予備権限ファイルをコピーせずに移動できる場合。mvACLmyfileは。

ハードリンクの作成はまったく異なります。ハードリンクを作成すると、次を指すディレクトリエントリ(ターゲットディレクトリに)が作成されます。同じインデックスノード元のファイルと同じです。つまり、同じファイルが複数のディレクトリに存在します。ファイル権限(ACLおよび既存のUNIX権限)はinodeに保存されます。そして両方とも同じinodeを/home/stuff/myfile指すので、どちらの/home/bob/myfile変更も他の項目にも反映されます。これがaliceハードリンクにアクセスできる理由です。 (777)の権限はの/home/bob/myfile権限と同じです/home/stuff/myfile

代わりに、シンボリックリンクは宛先パスを指します。シンボリックリンクが指すファイルにアクセスするには、ターゲットファイルにアクセスするのと同じ権限が必要です。ホームディレクトリへの検索(実行ビット)アクセスがaliceできないため、アクセスが失敗する可能性があります。bob

おすすめ記事