「スタッフ」ユーザーグループについて


23

すべてのユーザーが「スタッフ」グループのメンバーであることが知られています。標準ユーザーを設定してファイルを作成すると、ターミナル内のそのファイルのリストに「ls -la」が表示され、ユーザーグループが「staff」であることが示されます。

dscacheutilコマンドを使用すると、グループに関する情報を表示できます。例えば: -

dscacheutil -q group -a name admin

これにより、すべてのメンバーを含む管理グループに関する情報が返されます。

ただし、「スタッフ」グループを見るために使用すると、標準ユーザーがグループのメンバーとして表示されると予想されていましたが、そうではありません。-

dscacheutil -q group -a name staff

name: staff
password: *
gid: 20
users: root

では、すべての標準ユーザーがスタッフグループのメンバーである場合、ここに表示されないのはなぜですか?

スタッフグループの実際のメンバーを表示できる別のコマンドはありますか?


3
いい質問ですね。十分な注意が得られない場合は、おそらくこれを賞賛したいと思うでしょう。私はそれが何らかの方法でプライマリグループのメンバーのみを表示するようにコーディングされていると思っていましたが、すべての名前付きユーザー(500以上)はすべてスタッフとしてプライマリグループであり、グループ(まだGIDの奇妙なルートで)ホイールがリストされています...)確かにオッドソース...
bmike

おもしろいことに、@ bmikeには、/ System / Library / CoreServicesにあるDirectory Utilityアプリでも同じことがわかります。
TheDarkKnight

ああ、私はルートだけがスタッフのメンバーだと思った。/ etc / groupのように:staff:*:20:root
Scott Walter

@ScottWalter、管理者ユーザーは「スタッフ」と「管理者」のメンバーですが、非管理者は「スタッフ」グループのみのメンバーです。こちらの「所有者、グループ、その他」のセクションをご覧ください:support.apple.com/kb/HT2963
TheDarkKnight

回答:


11

OS Xのグループのすべてのメンバーを取得する唯一の信頼できる方法があり、2DD8847からの回答がそれをカバーしています。「理由」については、論理的な説明を提供できません。あなたに言えることは、結果を区別するものだけです。

これらのアプローチでは、PrimaryGroupIDを介してグループのメンバーのみであるユーザーを含めることができません。それを考える1つの方法は、リストされていないこれらのユーザーは、スタッフグループに公式に追加されなかったことです。スタッフgidと一致するPrimaryGroupIDが与えられました。したがって、それらはいくつかのコマンドで公式にリストされていません。私は知っている、それはばかげている。

不完全な結果:

dscl . -read /Groups/[groupname]
dscl . -read /Groups/[groupname] GroupMembership
dscacheutil -q group -a name [groupname]

完全な結果:

dscl . -list /Users PrimaryGroupID | grep [gid]

本当に言えるのは、(グループのメンバーを一覧表示するのではなく)PrimaryGroupIDでグループメンバーを検索しないと、完全な結果が得られないということです。Unixの奇妙なところにチョークで書いてください。沢山あります。

お役に立てば幸いです!

ソース


「リストされていないこれらのユーザーは、スタッフグループに正式に追加されていません。スタッフgidと一致するPrimaryGroupIDが与えられただけです」-これは理にかなっています。これに有効なセキュリティ攻撃ベクトルがあるのだろうか。実際に管理グループに追加せずにユーザーのPrimaryGroupIdを設定できる場合、管理者権限が付与されますか?調査します。
TheDarkKnight

私は何かが間違っていることを示唆するつもりはありませんでした。心配しないでください、スタッフはあなたのマシンの管理者権限を持っていません。OS Xでは、ほとんどすべての所有者がstaffに設定されていますが、他の権限がこの現実の誤用を無効にすることに注意してください。すべてのユーザーフォルダーは、他のすべてのユーザーによって「読み取り可能」ですが、すべてのユーザーフォルダー内では、個々のアイテムが読み取りアクセス権を取り消すように設定されています。したがって、/ Users / username / Desktopのすべてのユーザーはアクセス権なしに設定されています -これはクリーンなアクセス許可管理ではありませんが、機能し、安全です。
スゲリオット

4
多分あなたが意味Chalk it up to the oddities of OS X. There are many.
-user3019105

別のマシンのディスクを見ていたので、ユーザー名が変更され、ユーザー502または501として「スティーブ」になりました。私の理論では、「スタッフ」はおそらく「macosx」と呼ばれるべきであり、通常のユーザーに代わって「rooty」を行うためにFinderによって使用されます。ただのランダム理論。
戸町

2
@Tomachiのスタッフはmacosxではありませんでした。システムがNeXTであったOsXの数年前にセットアップされました
user151019

4

正確に何を達成/実行したいですか?

このコマンドは、スタッフグループ内のすべてのユーザーをリストします。

dscl . -list /Users PrimaryGroupID | grep ' 20$'

ソース

説明:スタッフグループのPrimaryGroupIDは20です。


スタッフグループがdscacheutilとディレクトリユーティリティを使用してメンバーリストを表示しない理由を理解しようとしています。私の主な目標は、個別のプロセスを呼び出すことなく、C ++を使用してグループからメンバーのリストを取得することです。このプロセス中に、グループのメンバーが表示されないという問題に遭遇しました。なぜそうなのかを知りたいです。
TheDarkKnight

dscacheutilがスタッフグループを一覧表示しない理由...わかりません。developer.apple.com/library/mac/documentation/Darwin/Reference / ...これは実装であり、どういうわけか表示しないことに決めました。
バスティアングルーバー

2
申し訳ありませんが、「それは実装です」と言ってdscacheutilのマニュアルページにリンクしても、質問には答えません。
TheDarkKnight

C ++の場合、シェル関数を呼び出すことができます。このサイトは非常に役立つことがわかりました:blog.earth-works.com/2012/09/13/…表示されない理由はないと思います。彼らは機能を構築し、あなたは何かを失っています。彼らはそれが好きだからあなたにメンバーを見せることを妨げていますか?
バスティアングルーバー

2
シェル関数を呼び出すと、別のプロセスが生成されます。さまざまな理由で、これは私が取り組んでいるプロジェクトにとって実行可能ではありません。私は今、アイデンティティサービスで探しています:developer.apple.com/library/mac/documentation/networking/...
TheDarkKnight
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.