'Personel' kullanıcı grubunu anlama


23

Tüm kullanıcıların 'personel' grubunun üyeleri olduğu bilinmektedir. Standart bir kullanıcı kurar ve herhangi bir dosya oluşturursanız, terminalde 'ls -la' bulunan bir dosyanın listesi kullanıcı grubunu 'personel' olarak gösterir.

Dscacheutil komutunu kullanarak, gruplar hakkında bilgileri görebiliriz. Örneğin: -

dscacheutil -q group -a name admin

Bu, tüm üyeler dahil olmak üzere yönetici grubu hakkında bilgi döndürür.

Ancak, 'çalışanlar' grubuna bakıldığında, standart kullanıcıları grubun üyeleri olarak görmeyi umuyordum, ancak durum böyle değil: -

dscacheutil -q group -a name staff

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

Öyleyse, tüm standart kullanıcılar personel grubuna üye ise, neden burada görünmüyorlar?

Personel grubunun gerçek üyelerini gösterebilecek başka bir komut var mı?


3
Harika soru Yeterince dikkat çekmezse, muhtemelen bunu almak isterim. Nerede garip bir şekilde (Ben bir şekilde birincil grup üyelerini göstermek sadece kodlanmış olan düşünüyordum ama gruptaki olarak util cache tarafından belirtilmeyen hala personel olarak ve (hid 500 üzeri) tüm adlandırılmış kullanıcıların tüm birincil grup kök ait GID ile tekerlek listelenir ...) Gerçekten garip sos ...
bmike

Teşekkürler @bmike, ilginç bir şekilde, aynı / System / Library / CoreServices içindeki Directory Utility uygulamasında görülebilir.
TheDarkKnight

Oh, sadece kökün bir personel üyesi olduğunu düşündüm. Beğen / etc / group shows: staff: *: 20: root
Scott Walter

@ScottWalter, yönetici kullanıcıları 'personel' ve 'yönetici' üyeleriyken yönetici olmayanlar yalnızca 'personel' grubunun üyeleridir. Burada "Sahip, grup, Diğerleri" bölümüne bakın: support.apple.com/kb/HT2963
TheDarkKnight

Yanıtlar:


11

Bir grubun tüm üyelerini OS X’te almanın tek güvenilir yolu var ve 2DD8847’den gelen cevap bunu kapsıyor. "Neden" olarak mantıklı bir açıklama yapamam. Tek söyleyebileceğim, sonuçları farklı kılan şey.

Bu yaklaşımlar, yalnızca GroupGroupID üzerinden grubun üyeleri olan kullanıcıları içeremez. Bunu düşünmenin bir yolu, listelenmemiş bu kullanıcıların resmen personel grubuna eklenmemiş olmalarıdır. Onlara az önce personel grubuyla eşleşen bir İlköğretim Grubu Kimliği verildi. Bu nedenle resmi olarak bazı komutlarla listelenmemişlerdir. Biliyorum, çok saçma.

TAMAMEN SONUÇLAR:

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

TAM SONUÇLAR:

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

Gerçekten söyleyebileceğim tek şey, bir grup üyeyi BirincilGrup Kimlikleri'ne (bir grubun üyelerini listelemek yerine) bakmadan size tam sonuçlar vermeyeceğidir. Unix'in tuhaflıklarına kadar meydan okuyunuz. Çok var.

Umarım yardımcı olur!

Kaynak


"Listelenmeyen bu kullanıcılara resmen personel grubuna eklenmedi. Personel grubuna eşleşen bir Birinci Grup Grubu verildi" - Şimdi bu mantıklı. Bununla ilgili geçerli bir güvenlik saldırı vektörü olup olmadığını merak ediyorum; Bir kullanıcının PrimaryGroupId kodunu gerçekten yönetici grubuna eklemeden ayarlamak mümkünse, bu onlara yönetici hakları verir mi? Ben araştırırım.
TheKarkKnight

Bir şeylerin yanlış olduğunu söylemek istemedim. Endişelenmeyin, çalışanlar makinenizde yönetici haklarına sahip değiller. OS X'te hemen hemen her şey çalışanlara ayarlanmıştır, ancak diğer izinlerin bu gerçeğin kötüye kullanımını geçersiz kıldığını unutmayın. Her kullanıcı klasörü her kullanıcı tarafından "okunabilir", ancak her kullanıcı klasörünün içinde tek tek öğelerin okuma erişiminin iptal edilmesi için ayarlandığını göreceksiniz. Yani / Kullanıcılar / kullanıcı adı / Masaüstü'nün , herkesin Erişim Yok olarak ayarladığı bir kullanıcısı var - Temiz bir izin yönetimi değil, ancak çalışıyor ve güvende olursunuz.
sgelliott

4
Belki demekChalk it up to the oddities of OS X. There are many.
user3019105

başka bir makineden bir diske bakıyordum ve evet, kullanıcı adları yeniden adlandırıldı, kullanıcı 502 veya belki 501 olarak "steve" oldum. Teorim, "personel" muhtemelen "macosx" olarak adlandırılmış olmalı ve Finder tarafından düzenli kullanıcılar adına "rooty" işleri yapmak için kullanılıyor. sadece rastgele bir teori.
Tomachi

2
@Tomachi personeli, sistem NeXT iken
OsX'ten

4

Tam olarak ne yapmak / yapmak istiyorsunuz?

Bu komut personel grubundaki tüm kullanıcıları listeler:

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

Kaynak

Açıklama: Personel grubu, 20’lik Birincil Grup Kimliğine sahiptir.


Neden personel grubunun üye listesini dscacheutil ve Directory Utility üzerinden göstermediğini anlamaya çalışıyorum. Asıl amacım, üyelerin listesini C ++ kullanarak ayrı bir süreç çağırmadan bir gruptan almak. Bu süreçte grubun üyelerini görüntülememesi sorunuyla karşılaştım ve neden böyle olduğunu bilmek istiyorum.
TheDarkKnight

Neden dscacheutil personel grubunu listelemiyor ... bilmiyorum. developer.apple.com/library/mac/documentation/Darwin/Reference/… Bu bir uygulama ve bir şekilde onlara göstermemeye karar verdiler.
Bastian Gruber,

2
Üzgünüz, ama "bu bir uygulama" demek ve dscacheutil'in man sayfalarına bağlanmak soruyu cevaplamıyor.
TheDarkKnight

C ++ için bir kabuk işlevini çağırabilirsiniz. Bu siteyi çok faydalı buldum: blog.earth-works.com/2012/09/13/… Göstermeme nedenleri olmadığını düşünüyorum. Bir fonksiyon inşa ettiler ve siz bir şeyleri kaçırıyorsunuz ... ne demeliyim. Size üyelerini göstermenizi engelliyorlar, çünkü hoşlarına gidiyor mu?
Bastian Gruber,

2
Bir kabuk işlevi çağırmak ayrı bir işlem başlatır. Çeşitli sebeplerden dolayı, üzerinde çalıştığım proje için bu geçerli değil. Şimdi Kimlik Servislerine bakıyorum: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.