これは私が実現するのは少し難しいですが、次のような非常に奇妙な行動に直面しました。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
できません。ファイルが属しているため、上記のコマンドに従って最後の権限である「その他」ファイル権限を使用してアクセスする必要があります。それにもかかわらず、彼女はフォルダの所有者であるため、そのフォルダを削除できます(保護されているという警告が表示されますが)。stuff
alice
bob:bob
alice
---
ls
alice
myfile
今楽しいです。移動/コピーしないと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
alice
Alice はディレクトリに対する書き込み権限を持っているため、所有者でstuff/
なくてもファイルの内容を変更できます。
Linux ACLを使用している場合は、以下のようにファイルが作成されたとき(またはコピーがターゲットに新しいファイルを作成するため、コピーするとき)に権限が適用されます。man acl
。ファイルの移動mv
予備権限ファイルをコピーせずに移動できる場合。mv
ACLmyfile
は。
ハードリンクの作成はまったく異なります。ハードリンクを作成すると、次を指すディレクトリエントリ(ターゲットディレクトリに)が作成されます。同じインデックスノード元のファイルと同じです。つまり、同じファイルが複数のディレクトリに存在します。ファイル権限(ACLおよび既存のUNIX権限)はinodeに保存されます。そして両方とも同じinodeを/home/stuff/myfile
指すので、どちらの/home/bob/myfile
変更も他の項目にも反映されます。これがalice
ハードリンクにアクセスできる理由です。 (777)の権限はの/home/bob/myfile
権限と同じです/home/stuff/myfile
。
代わりに、シンボリックリンクは宛先パスを指します。シンボリックリンクが指すファイルにアクセスするには、ターゲットファイルにアクセスするのと同じ権限が必要です。ホームディレクトリへの検索(実行ビット)アクセスがalice
できないため、アクセスが失敗する可能性があります。bob