Her zaman bir çift aynı UID ve GID olacak mı?


11

Dosya / dizinin sahipliğini değiştirmek zorundayım. chmodSadece sahiplerin kullanıcı adını biliyorum ama aynı anda varsayılan grup adını değiştirmek istiyorum. Bu aşamada grup adına karar verilmedi, bu yüzden kullanıcı adıyla aynı koyuyorum

chown -R username:username path_to_dir

Komut çeşitli sistemler / kullanıcılar için çalışabilir, bu yüzden endişem, linux her zaman bir çift kullanıcı adı (kullanıcı): kullanıcı adı (grup) VEYA bir noktada bu varsayılan grup_adı hata verebilir.

Kullanıcıdan GID bulmaya başlamış olmama rağmen

id username | tr '(=)' ':' | awk -F: '{print $3}

Ama bilgi için bilmek istiyorum. Şimdiye kadar /etc/passwd /etc/groupstüm kullanıcıların gruplar halinde listelediği "kapatma, durdurma, senkronizasyon, opeartor" gibi birkaç kullanıcının analizleri.

EDIT 1: id -gn kullanıcı adı da iyi bir seçenektir


3
İkinci örnekte, aradınız mı id -g username?
user1686

1
Ya id -gn usernameda kimlik yerine adı yazdırır.
Cristian Ciupitu

Linux'ta da çok sayıda "aygıt grubu" vardır - ör. disk, mem, kmem, ses, video vb.
Baard Kopperud

Yanıtlar:


20

Groupname = 'in var usernameolacağının garantisi yoktur.

En yaygın senaryo, Linux'ta kullanılan sistem yöneticilerinin sistemde yerel olarak yeni bir kullanıcı oluşturmasıdır, grup için açık bir belirtim bulunmamasıdır; bu, grubun varsayılan olarak kullanıcı adıyla aynı şekilde oluşturulacağı ve kullanıcıya yeni oluşturulan grubun varsayılan GID'si.

Bu, başka bir sistem yöneticisinin bu yordamı izleyeceği anlamına gelmez ve diğer adlandırma hizmetlerini karışıma NIS veya LDAP gibi atarsanız, varsayılan olarak atanan grubun, kullanıcı adıyla aynı grup adına sahip yeni GID ile aynı olmayacağı muhtemeldir.

Bu yüzden username = groupname özelliğine güvenmemelisiniz


Ayrıca yalnızca yerel yönetici politikasına değil, çeşitli dağıtımlarda bulunan araçlara da bağlı olabilir. Birçok site, sağlanan araçlar tarafından kullanılan varsayılanları kabul edecektir. Yıllar boyunca kullandığım dağıtımların çoğu, useraddvarsayılan olarak aynı ada sahip bir grup oluşturan bir komut dosyasıyla gönderilirken, hepsinin sahip olmadığı. En son kullandığımda (yıllar önce), slackware'in kullanıcı oluşturma komut dosyası varsayılan olarak userstüm kullanıcıların onun yerine üye olduğu tek bir gruba sahipti. docs.slackware.com/slackbook:users durum hala böyle olabilir.
Jules

11

Kullanıcı özel grup deyimi genellikle modern Linux sistemlerinde kullanılmasına rağmen , * nix aslında her kullanıcı için benzersiz bir birincil grup gerektirmez ve birkaç kullanıcı hesabının usersveya gibi ortak bir birincil grubu paylaşması oldukça mümkündür staff.

UPG deyiminin uygulandığı durumlarda bile, belirli bir UPG'nin sayısal GID'sinin sahibinin UID'sine eşit olması için belirli bir neden yoktur, ancak çoğu hesap oluşturma aracı, sırasıyla, UID'leri ve GID'leri sırayla atamaya çalışacaktır. mevcut. Kullanıcıların ve / veya grupların birden fazla sistemde tutarlı hale getirilmesi gerekiyorsa kimlikler kolayca adım atabilir (örneğin önceden var olan NFS paylaşımlarını barındırmak için).


6

Ramesh varsayılan olarak belirttiği gibi, UID ve GID normal kullanıcılar için eşittir. Ancak bu her zaman böyle değildir, bu nedenle sisteminize zarar verebileceği için böyle bir varsayımda bulunmamalısınız. Yanlış bir gruba dosya / klasör izinleri atamak biraz dağınık, değil mi?

Yani, kısa cevap: hayır, UID her zaman GID'ye eşit değildir. Yine de, /etc/passwdaynı satırdaki varsayılan grubun UID'sini ve GID'sini içerir, böylece bunları çıkarmak oldukça kolaydır.


"varsayılan olarak UID ve GID normal kullanıcılar için eşittir" - aslında bu ifade yalnızca "bazı popüler Linux dağıtımlarında" eklerseniz doğrudur. Evet, Ubuntu ve ark. Bu şekilde yapın, ancak ortak bir "kullanıcılar" grubu varsayılan bir daha düşünün.
jstarek

Evet, eğer% 100 hassas olmayı hedeflersek haklısınız demektir. Tek bir istisnayı asla kaçırmamak için muhtemelen bir düzine daha çeşitli 'ifs' eklememiz gerekir. Tüm Debian tabanlı dağıtımlarım (LMDE, Crunchbang, saf Debian) bu şekilde davranıyor ve bir CentOS 6.5 de var. Bana büyük Ben kullanma eğiliminde kullanıcıların miktarlarda eklemek için gerek yoktur çünkü unutmamanız adduseryerine useraddve de varsayılan /etc/adduser.confolarak ayarlanır USERGROUPS=yeshangi her yeni kullanıcı için bir grup oluşturur. Bu gruplar genellikle (her zaman olmasa da) oluşturuldukları kullanıcının UID'si ile aynı GID'ye sahiptir.
Erathiel

2

Gönderen bu bağlantıya, aşağıda bilgileri görebilirsiniz.

Bir kullanıcı kimliği (UID), her kullanıcıya Unix benzeri bir işletim sistemi tarafından atanan benzersiz bir pozitif tamsayıdır. Her kullanıcı sisteme UID'si ile tanımlanır ve kullanıcı adları genellikle yalnızca insanlar için bir arayüz olarak kullanılır.

UID'ler, karşılık gelen kullanıcı adları ve kullanıcıya özgü diğer bilgilerle birlikte /etc/passwddosyada, cat komutuyla aşağıdaki gibi okunabilir:

cat /etc/passwd

Üçüncü alan UID'yi içerir ve dördüncü alan varsayılan olarak tüm sıradan kullanıcılar için UID'ye eşit olan grup kimliğini (GID) içerir .

DÜZENLE

Ancak, @Karlson'un işaret ettiği gibi, UID'nin varsayılan olarak GID'ye eşit olacağı doğru değildir.

Deyim yalnızca sıradan gruplar ayrı olarak eklenmezse ve hiçbir kullanıcı oluşturma işleminde açıkça hiçbir grup belirtilmezse doğrudur . Bir sonraki eklenen kullanıcı için varsayılan olarak gid = max(gid) + 1. UID ve GID arasında, bazı durumlarda çakıştıkları * NIX sistemlerinin gerektirdiği bir korelasyon yoktur.

Diğer referanslar

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


Son ifade tamamen yanlıştır. UID = GID yalnızca yeni kullanıcının yerel sistemde oluşturulması ve GID'nin mevcut bir gruba açıkça atanmamış olması durumunda.
Karlson

Hayır, açıkça "varsayılan olarak" dediği gibi, tamamen yanlış değildir. Burada bazı açıklamalar çok takdir edilecektir.
Erathiel

1
@Erathiel Varsayılan olarak GID, kullanıcı oluştururken atanan GID'ye eşittir. Kullanıcı yerel olarak oluşturulursa ve programdaki -gbayrakta GID belirtmeden useraddsizin için bir grup oluşturur ve bir GID değişimi olmadıkça = UID olur. Ancak, oluşturma yöntemi bilinmiyorsa, durumun böyle olacağına güvenemezsiniz:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson

Bazı sistemlerde useradd ayrıca hesap için aynı adlı bir grup oluşturur. Linux'un lezzetine bağlıdır.
Pete

@Karlson, bunun her zaman eşit olacağını hiç söylemedim. Varsayılan olarak tüm sıradan kullanıcılar için UID'ye eşit olduğu açıkça belirtilmiştir .
Ramesh
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.