9

「public」と「private」の2つのディレクトリがあります。「chris」、「john」、「dan」の3人のユーザーがいます。「pub」、「priv」、「god」の2つのグループがあります。

  • グループ「god」は、「public」と「private」に完全にアクセスできる必要があります。
  • グループ「pub」は、「public」に対する権限を持つ唯一のグループである必要があります
  • グループ「priv」は、「private」に対する権限を持つ唯一のグループである必要があります。

ルートとして:

useradd chris

useradd john

useradd dan

usermod -g god chris

usermod -g pub john

usermod -g priv dan

chgrp god public private

chgrp pub public

chgrp priv private

su chris

「クリス」として:

cd public/

touch test=許可が拒否されました


他のユーザーについても同じです...「dan」の下では、「private」ディレクトリに対する権限がありません。「dan」は「priv」グループのメンバーです。

何か考えはありますか?

4

4 に答える 4

15

まあ、これは比較的古いことは知っていますが、twalbergは正しいです。実際には、POSIXACLを使用してこれを実現する比較的簡単な方法があります。90年代後半から2000年代前半にかけて存在していたので、なぜもっと多くの人が使わないのかわかりません。

方法:すでに行ったように実行してから、次のコマンドを実行します。

# setfacl -m g:god:rwx public private

1つのコマンドで、必要なものを取得できます。従来のUNIXパーミッションのみを使用してそれを行う方法を理解しようと永遠に費やします。

Mikicのアドバイスはまだ良いかもしれません(あなたが達成しようとしていることに依存します)、そしてあなたの許可でできるだけ少ないグループを参照することはより簡単かもしれません(あるいはあなたは「クリス」がそうではないことを明らかにしたいでしょう」通常のユーザーですが、管理者のユーザーです。これも、構築する内容によって異なります)。

セカンダリユーザー/グループにディレクトリへのアクセスを許可しようとしているが、「chris」がアクセスできないかどうかを選択したくない場合があるため、私はあなたが達成しようとしていることに近いものを提供しましたこれらの2つのディレクトリと、他のすべてのファイルおよびディレクトリ「pub」と「priv」にアクセスする「chris」がアクセスできる可能性があります。ACLを使用すると、これらの選択を行う必要がありません。そのため、ACLが追加され、現在、ほとんどのUnix(およびBSDおよびLinux)プラットフォームのコア部分になっています。

于 2013-03-14T17:58:42.553 に答える
4

あなたは、グループ「pub」が「public」に対する権限を持つ唯一のグループであるべきだと言いました。しかし、その直前に、あなたは「神」もアクセスできるべきだと言いました。したがって、アクセスできるのは「パブ」だけではありません。「priv」の同上。

あなたも言う:

「pub」、「priv」、「god」の2つのグループがあります。

さて、それは3つのグループです。(その有名な引用を思い出します:「この世界には3種類の人々がいます;数えることができる人とできない人。」:-P)

あなたの基本概念は間違っているようです。これが機能する方法はかなり単純です。「pub」と「priv」の2つのグループを作成します。それに応じて、ディレクトリへのアクセスが必要なすべてのユーザーを配置します。両方のディレクトリにアクセスする必要があるユーザーは、両方のグループに属している必要があります。

この場合、「chris」は「pub」グループと「priv」グループの両方に配置する必要があります。「john」は「pub」グループに入れる必要があります。「dan」は「priv」グループに入れる必要があります。

あなたがやろうとしていたのは、ディレクトリを2つのグループが所有するようにすることです。それは可能ではありません。ファイルやディレクトリではなく、複数のグループに参加できるのはユーザーです。あなたは単にそれを逆にした:-)

于 2012-11-12T22:01:47.577 に答える
2

あなたのアプローチには2つの問題があります。最初のものは次のとおりです。

chgrp god public private
chgrp pub public

2番目のコマンドで、最初のコマンドの効果を破棄しました。ディレクトリはグループにpublic属し、pubグループに属しなくなりましたgod

2つ目は、ディレクトリを所有するグループにディレクトリへの書き込み権限を付与していない可能性があることですpublic(コマンドを実行するユーザーtouchがディレクトリのグループに属しているという事実は関係ありません)。

これを試して:

chmod 770 public

他のディレクトリでも同様です。ただし、ディレクトリは1つのグループにしか属することができないため、最初に達成しようとしていることは不可能です。Nikosは、彼の回答でそれを詳しく説明しました。ユーザーをより多くのグループに配置します。

于 2012-11-12T21:48:21.597 に答える
2

ACLをサポートするファイルシステムを使用する必要があります。他の回答で述べたようにpub、グループの所有権は基本的なLinux権限で可能ですが、ファイル/ディレクトリは単一のグループタグしか持てないためpriv、グループへのアクセスを許可するにはACLが必要です。現在のファイルシステムのほとんどは、この機能をサポートしているはずです。およびgodのマニュアルページを参照してください。getfaclsetfacl

于 2012-11-12T22:17:55.873 に答える