プライベートディレクトリの下にパブリックディレクトリを作成できますか?


20

サーバー上にアクセス許可700の個人フォルダー/ a / bがあります。/a/bのコンテンツを他のユーザーがリストしたくない。/ aの所有者はルートです。

ここで、すべてのユーザーに対してディレクトリ/ a / b / cの完全な権限を開く必要があります。

/ a / b / cの許可を777に変更しましたが、他の人にはまだアクセスできません。


2
ディレクトリトラバーサル(/ aおよび/ a / bをトラバースする)を許可するには、「実行ビット」を設定する必要があります。これにより、問題が解決する場合がありますchmod +x /a/b
。– ex0ns

回答:


34

あなたはできる。/a/bディレクトリに実行可能ビットを設定するだけです。それで何かを見ることができbなくなりますが、に直接行けばあなたはまだ何でもできますa/b/c

% mkdir -p a/b/c
% chmod 711 a/b
% sudo chown root a/b
% ll a/b
  ls: cannot open directory a/b: Permission denied
% touch a/b/c/this.txt
% ls a/b/c
  this.txt

他のユーザーはのコンテンツを一覧表示できません/a/bが、ファイルの名前を推測した場合、そのディレクトリ内のファイルにアクセスできることに注意してください。

% echo hello | sudo tee a/b/f
% cat a/b/f
hello
% cat a/b/doesntexist
cat: a/b/doesntexist: No such file or directory

bこの警告を回避するため、ディレクトリ内の他のすべてのファイル/ディレクトリに対する適切な許可(グループ/ワールドなし)を維持するようにしてください。


実行可能ビットを設定する代わりに、別の場所にあるa / b / cへのハードリンクも提供できますか?
Mobyディスク

2
@MobyDiskディレクトリにハードリンクすることはできません。
マイケルハンプトン

それは機能しません、何に関係なく、あなたはまだbリンクするために読む必要があるのでc
-stevieb

3
これにはいくつかの重要な注意事項があることに注意してください。のファイルのいずれかa/bが0以外のグループ/その他のアクセス許可を持ち、攻撃者が名前を知っているか推測できる場合、攻撃者はそれらのファイルと対話できます。
ケビン

本当の@Kevinは、bを作成する前にこれを保護するためにすべてのパーマにパーマを設定するc必要があり、bパーマが所有者のみに対して安全であることを保証するために他のアイテムが入力される場合は注意が必要です。
スティービーブ

9

これらの権限があると、目標を達成できません。ディレクトリに到達するにはc、他のすべてのユーザーがディレクトリを横断できるようにする必要があります。bこれは、そのディレクトリの実行権限を付与することによって行われます。/a/bモード711に設定され、あなたはあなたがディレクトリトラバーサルを許可するが、読み取りと書き込みを否定しているので、欲しいものを達成することができます。ただし、他のユーザーはにファイルを一覧表示することはできませんが/a/b、名前を推測し、ファイルに十分なオープン許可がある場合、ファイルにアクセスする可能性があることに注意してください。


3

ユーザーがアクセスできない場合、ユーザーはの/a/b下のどのファイルにもアクセスできません/a/b/c/a/b/cディレクトリトラバーサルはで停止するため、の権限は関係ありません/a/b

ディレクトリ/a/bがリストに表示されないようにするだけで、ユーザー/a/bがファイル名を推測した場合にファイルにアクセスしても問題ない場合は、/a/b実行可能にすることはできますが、読み取りはできません。ディレクトリーでは、読み取り許可はディレクトリーの内容のリストのみを制御し、実行許可はそのディレクトリーのエントリーへのアクセスを制御します。

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
 contents of /a/b/

/a/b除いて他のユーザーがファイルにアクセスできないようにする場合は、バインドマウントを使用して、別のビューで/a/b/c公開できます。/a/b/c

# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
 contents of /a/b/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.