Unix:どうすれば同じfsで自分のフォルダを1人だけに見せることができますか?


9

友達にディレクトリへのアクセスを許可したい。彼は、dirが配置されているファイルシステムにアクセスできます。すべてのユーザーに権限を設定したくありません。個人だけがディレクトリを見ることができるようにするにはどうすればよいですか?私たちの誰もスーパーユーザーではありません。

[BOUNTY CHALLENGE] Ubuntuを使用すると、どの返信も機能しません。

1.ジャムラのアプローチが機能しない

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. nikのアプローチが機能しない:存在しないファイルにアクセスできない

3. baのアプローチが機能しない:ルートではなくグループを作成できません。

4. ToKのアプローチが機能しない、ユーザーは「ユーザー」と「フィールド」の2つのグループに属している

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
これらの回答がどのように問題を引き起こすかについてワンライナーを与えれば、それは役に立ちます-他のオプションを形成するためのより良い問題定義を与えるでしょう。
nik

nik:エラープロファイルを追加しました。

回答:


12

通常のUNIXアクセス許可(ユーザー、グループ、全員)だけでは、これを簡単に行うことはできません。ディレクトリにアクセスする必要がなくなった場合は、ディレクトリの所有者を友達に変更できます。これは、一部のUnicesでは有効ですが、ほとんどのユーザーはそうではありません。

ただし、LinuxでACLを有効にしている場合は、ファイルの所有者であればこれを行うことができます。コマンドを実行してください。setfacl -m user:friend:rwx filenameここで、friend友達のアカウント名、filenameはファイルです。を実行してgetfacl filename、効果があったことを確認できますuser:friend:rwx。リストにトライアドが表示されます。ただし、ACLが有効になっているLinuxシステムはあまり多くありません。


ファイルシステムでACLが有効になっている場合、ACLはこの問題の標準的な解決策です。
ライアンC.トンプソン、

HHHはこれはうまくいかないと言っているようです。なんらかの理由でACLが有効になっていない限り、そうなると思います。HHH、何が出るの?
pboin 2010年

pboin:この方法は機能しないため、ACLが有効になっていないか、その他のものが原因である可能性があります。

11

これは、私たちが学校で話し合ったものです。
だいたいこんな感じで、

  1. ディレクトリを作成します(dataここでは参照用に名前を付けます)
    • 権限を「chmod 711 data」に変更
    • グループと他の人だけが持っていxます-ディレクトリに入るアクセス権
    • ディレクトリをリストすることはできません
    • 次に、ディレクトリを作成しますdifficult-name-here(これはハッシュ文字列の場合があります)。
    • 権限を「chmod a+rx difficult-name-here」に変更
    • このディレクトリの内容は安全ですが、外部ディレクトリはリストできません
    • 「難しい名前」を知っている人はこの2番目のディレクトリにジャンプできます
      • cd path/to/data/difficult-name-here
      • 他の人は名前を見ることができず、ディレクトリの内容にアクセスできません
      • ただし、はroot常にすべてにアクセスできます(ここでは問題になりません)。
    • difficult-name-hereこのデータを提供したい人と共有します
    • この2番目のディレクトリに共有ファイルを保持する

かなり大雑把ですが、これがunixアクセス制御の破損なしに壊れる可能性がある場合は、知りたいです。


からのコメントの更新dmckee
これはまさに私たちが達した結論です!
「あいまいさによるセキュリティ」の安全性には限界があります。

とはいえ、データの保護を設計するとき
は、その価値を特定することが重要です。

あなたが対象とする必要があります、

  • より高いセキュリティを破るコスト
  • 保護されたコンテンツのコスト
  • あなたのパラノイアに比例する要因によって

この場合、rootがパブリックアクセスのどこかにディレクトリツリーを列挙することを決定した場合、その
秘密は明らかになります。しかし、あなたは根元から保護しているのか、それとも潜在的な無責任なのか?
その場合は、共有ファイルについて心配すべきことがたくさんあります。


質問の機能しないメモについて更新します
私はこれがLinuxの初期の頃にそれが機能することを知るために使用しました。
cannot access non-existant file」ではなく「」'permissions deniedが表示される場合は、シーケンスに誤りがある可能性が非常に高いです。あなたが欲しいものはこのように見えるはずです、

 755 711 755何でも-===アクセス許可

 BasePath / CoverDir / Obscure / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^なしでは見ることができません
          | ^^^^^^^ディレクトリ名の読み取りアクセス
          ^^^^^友達と共有しました。あいまいなディレクトリ。
                アクセス可能 
                ディレクトリ。
  1. ' CoverDir'アクセスを'rwx--x--x'に設定すると、
    グループなどはディレクトリに入ることができるだけで、その内容を読み取ることはできません。
  2. あなたは、あいまいなディレクトリ名を使用している場合さて、
    Obscure」、それの内側とで完全な読み取りアクセス権を与える「rwxr-xr-x」、
    この名前をknowning誰もがその内容を一覧表示することができます。
  3. グループ内のユーザーや他のユーザーは ' 'を使用できないため、このアクセスは外部から ' ls BasePath/CoverDir/Obscure' を使用して行う必要があり
    ますls BasePath/CoverDir

7
「これが壊れる可能性がある場合、[...]知りたい」まあ、それはあいまいさによるセキュリティの非常に手本であり、したがって脆弱です。長期的に期待しないでください。きちんと。
dmckee ---元モデレーターの子猫

UNIXアクセス制御が安全に実装されている場合、これはシャドウされたパスワードデータベース(またはssh秘密キー)とほぼ同じくらい安全です。
nik

5

ライアンは実際には100%正解でした。友達は(おそらく)ユーザー名に関連付けられた一意のグループを持っているので、問題のディレクトリのグループ所有権をそのグループに変更します。おそらく友達のユーザー名です。2人の間でコンテンツを共有できるようにするには、ユーザーとしての所有権を保持する必要があります。

chown -R youruser:friendgroup ~/foo/bar

次に、他のユーザーにどのアクセスを許可するかに応じて、適切な権限をディレクトリに割り当てます。

chmod -R 770 ~/foo/bar

あなたとあなたの両方に、ディレクトリとその内容全体への完全なrwxアクセスを許可します。

これは、他のユーザーが友達のグループに追加されていないことを前提としていることに注意してください。システムはこの割り当てを行っていなかった可能性が高いですが、前述のように、rootユーザーは選択したことを実行できます。groupsコマンドを使用して、友達または任意のユーザーが所属する各グループを表示できます。さらに、何らかの理由で権限が変更されていない限り、システム上の各グループのグループ割り当てを含む/ etc / groupファイルを表示できるはずです。


4

私はあなたとあなたの友人のために新しいグループを作成し、ディレクトリのsetgidビットと一緒に、所有者とグループのフォルダのアクセス許可をフルに設定します。

ただし、必要に応じて、新しいファイルを変更できるようにグループを自動的に設定するように、自分と友達のumaskを変更することも検討する必要があります。

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
これには、彼が持っていないスーパーユーザー権限が必要になる場合があります。
ケック

1
ああ、その行を完全に逃しました:x次に、私は途方に暮れています。ローカルでメールで送信するだけでいいと思います-最善の解決策ではありませんが、少なくともファイルは他の人に伝わります。
gaqzi

2

これを行うには、アクセス制御リストが最適です。

ただし(私が正しく覚えている場合)、ファイルシステムは/ etc / fstabを介してACL(たとえば、 "/ dev / sda6 / home ext3 defaults、acl ")で初期化する必要があり、これはスーパーユーザーだけが実行できることです。 ..


2

grsec / selinuxのようなRBACSが必要です。


これが問題かどうかわからないので、引用を追加できますか?

2

デフォルトでは、Ubuntuシステムの各ユーザーにも同じ名前のグループが関連付けられています。したがって、友達をグループに追加して、問題のフォルダをとしてマークg+rwxできる場合は、設定されます。ユーザーごとにグループを作成する理由として引用されたこのユースケースを漠然と覚えています。


ユーザーをグループに追加するにはrootアクセスが必要ですが、OPはそうではないと述べています。
Dave Sherohman、2011年


2

これは試していませんが、暗号化されたユーザースペースFSが内部にあるパブリック読み取り可能なディレクトリ(たとえばencfs)はどうですか。次に、そのパスワードを友達と共有し、他の誰もそのデータを利用することはできません(まあ、私は彼らがデータを取得してパスワードクラッカーをオフラインで実行できると思いますか?)。


2

Linuxにファイル権限のウィンドウと同じFinesseを与えるには、グループをネストする必要があります。友達にしたいように、フォルダにアクセスできるグループを1つ作成します。彼をそのグループまたは彼が存在するグループに追加します。例えば

/ fooは共有したいフォルダです。フォルダへの必要なアクセス権を持つグループFooGroupを作成します。このフォルダへのアクセス権を付与するグループとユーザーをこのグループに追加します。

フォルダやファイルごとにグループを作成するのは大変ですが、Windowsと同じレベルでアクセスを制限するのに最適な方法です。


1

でディレクトリを暗号化できgpgます。そして、nikが提案したように場所を難読化してみます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.