Memahami grup pengguna 'staf'

21

Diketahui bahwa semua pengguna adalah anggota kelompok 'staf'. Jika Anda mengatur pengguna standar dan membuat file apa pun, daftar file itu di terminal dengan 'ls -la' menunjukkan grup pengguna menjadi 'staf'.

Dengan menggunakan perintah dscacheutil, kita dapat melihat informasi tentang grup. Sebagai contoh: -

dscacheutil -q group -a name admin

Ini mengembalikan informasi tentang grup admin, termasuk semua anggota.

Namun, ketika digunakan untuk melihat grup 'staf', saya berharap untuk melihat pengguna standar sebagai anggota grup, tetapi ini tidak terjadi: -

dscacheutil -q group -a name staff

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

Jadi, jika semua pengguna standar adalah anggota dalam kelompok staf, mengapa mereka tidak muncul di sini?

Apakah ada perintah lain yang dapat menunjukkan anggota nyata dari kelompok staf?

Kesatria Kegelapan
sumber
3
Pertanyaan bagus Saya mungkin ingin memberi hadiah ini jika tidak mendapat perhatian yang cukup. Saya berpikir itu entah bagaimana dikodekan untuk hanya menunjukkan anggota grup utama, tetapi semua pengguna yang saya sebutkan (di atas 500) semua adalah kelompok utama sebagai staf dan masih tidak terdaftar oleh util cache seperti dalam grup (di mana anehnya root dengan GID dari roda terdaftar ...) Saus yang aneh memang ...
bmike
Terima kasih @bmike, yang menarik, hal yang sama dapat dilihat di aplikasi Directory Utility, yang ada di / System / Library / CoreServices.
TheDarkKnight
Oh, saya pikir hanya root yang merupakan anggota staf. Seperti / etc / group shows: staff: *: 20: root
Scott Walter
@ScottWalter, pengguna admin adalah anggota 'staf' dan 'admin' sementara non-admin hanya anggota dari grup 'staf'. Lihat bagian "Pemilik, grup, Lainnya" di sini: support.apple.com/kb/HT2963
TheDarkKnight

Jawaban:

9

Hanya ada satu cara yang dapat diandalkan untuk mendapatkan semua anggota grup di OS X dan jawaban dari 2DD8847 mencakup itu. Adapun "mengapa" saya tidak bisa menawarkan penjelasan yang logis. Yang bisa saya katakan adalah yang membedakan hasilnya.

Pendekatan ini gagal memasukkan pengguna yang hanya anggota grup melalui PrimaryGroupID. Salah satu cara untuk memikirkannya adalah bahwa pengguna ini tidak terdaftar tidak secara resmi ditambahkan ke grup staf. Mereka baru saja diberikan PrimaryGroupID yang cocok dengan gid staf. Karena itu mereka tidak terdaftar secara resmi dengan beberapa perintah. Saya tahu, itu tidak masuk akal.

HASIL LENGKAP:

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

HASIL SELESAI:

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

Yang saya benar-benar dapat memberitahu Anda adalah bahwa tanpa mencari anggota grup dengan PrimaryGroupID mereka (bukannya daftar anggota grup) itu tidak akan memberi Anda hasil lengkap. Kapur hingga keanehan Unix. Ada banyak.

Semoga itu bisa membantu!

Sumber

sgelliott
sumber
"Pengguna ini tidak terdaftar tidak secara resmi ditambahkan ke grup staf. Mereka baru saja diberikan PrimaryGroupID yang cocok dengan gid staf" - Sekarang masuk akal. Saya ingin tahu apakah ada vektor serangan keamanan yang valid dengan ini; jika memungkinkan untuk menetapkan PrimaryGroupId pengguna tanpa benar-benar menambahkannya ke grup admin, apakah itu akan memberi mereka hak admin? Saya akan selidiki.
TheDarkKnight
Saya tidak bermaksud mengatakan ada yang salah. Jangan khawatir, anggota staf tidak memiliki hak admin di mesin Anda. Di OS X hampir semuanya memiliki pemilik yang ditetapkan untuk staf, tetapi ingat bahwa izin lain menimpa penyalahgunaan kenyataan ini. Setiap folder pengguna "dapat dibaca" oleh setiap pengguna lain, tetapi di dalam setiap folder pengguna Anda akan melihat setiap item diatur agar akses baca dibatalkan. Jadi / Pengguna / nama pengguna / Desktop memiliki semua orang disetel ke Tidak Ada Akses - Ini bukan manajemen izin yang bersih, tetapi berfungsi dan Anda aman.
sgelliott
4
Mungkin maksud AndaChalk it up to the oddities of OS X. There are many.
user3019105
saya melihat disk dari komputer lain dan ya, nama pengguna diganti namanya, saya menjadi "steve" sebagai pengguna 502 atau mungkin 501. bagaimana pun. teori saya adalah bahwa "staf" mungkin seharusnya disebut "macosx" dan digunakan oleh Finder untuk melakukan hal-hal "root" atas nama pengguna biasa. hanya teori acak.
Tomachi
1
@Tomachi staff tidak bisa macosx itu sudah diatur bertahun-tahun sebelum OsX ketika sistemnya adalah NeXT
Mark
4

Apa sebenarnya yang ingin Anda capai / lakukan?

Perintah ini mencantumkan semua pengguna dalam grup staf:

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

Sumber

Penjelasan: Grup staf memiliki PrimaryGroupID 20.

Bastian Gruber
sumber
Saya mencoba memahami mengapa grup staf tidak menampilkan daftar anggotanya melalui dscacheutil dan Direktori Utilitas. Tujuan utama saya adalah untuk mengambil daftar anggota dari grup menggunakan C ++, tanpa memanggil proses yang terpisah. Selama proses ini, saya menemukan masalah grup tidak menampilkan anggotanya dan saya ingin tahu mengapa ini terjadi.
TheDarkKnight
Mengapa dscacheutil tidak mencantumkan grup staf ... saya tidak tahu. developer.apple.com/library/mac/documentation/Darwin/Reference/… Ini adalah implementasi, dan entah bagaimana mereka memutuskan untuk tidak menampilkannya.
Bastian Gruber
2
Maaf, tetapi mengatakan "ini merupakan implementasi" dan menautkan ke halaman manual dscacheutil tidak menjawab pertanyaan.
TheDarkKnight
Untuk C ++, Anda dapat memanggil fungsi shell. Saya menemukan situs ini sangat membantu: blog.earth-works.com/2012/09/13/... Saya tidak berpikir ada alasan mengapa mereka tidak menunjukkannya. Mereka membangun fungsi dan Anda kehilangan sesuatu..apa yang harus saya katakan. Mereka mencegah Anda menunjukkan kepada Anda anggota karena mereka menyukainya?
Bastian Gruber
2
Memanggil fungsi shell memunculkan proses terpisah. Karena berbagai alasan, ini tidak layak untuk proyek yang sedang saya kerjakan. Saya sekarang melihat Layanan Identitas: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight