'Hiç kimse' kullanıcısının amacı nedir?


93

Tüm kullanıcı kullanıcılarını listeledikten sonra Ubuntu sistemimde 'hiç kimse' adlı bir kullanıcı hesabı olduğunu fark ettim.

Ayrıca aşağıdaki komutu ve şifremi kullanarak bu hesapta terminalden giriş yapabileceğimi farkettim:

sudo su nobody

hiç kimse

Beni hiç umursamıyor, ama bu kullanıcının amacının ne olduğunu bilmek istiyorum. Varsayılan olarak Ubuntu'nun yeni bir yüklemesinde mi oluşturuldu yoksa belirli bir paket yüklenerek mi oluşturuldu?


8
Parolanızı kullanarak giriş yaptığınızda, şifrenizi hiç kimse hesabı için değil, sudo adımı için kullandığınızı unutmayın (ve bunun çalışmasının nedeni, süper kullanıcının şifresini girmek zorunda kalmadan kimseye dava açabilmesidir. kimsenin kabuk / sbin / nologin, hala bile superuser kullanarak (aka root) olarak giriş mümkün olmazdı olarak ayarlanırsa aşağıda belirtilen, ben en azından RH-türevleri üzerinde inanıyoruz
Foon

Şimdi varsayılan olarak durum budur (18.04+?). sudo su nobodyreturn Bu hesap şu anda mevcut değil. çünkü kullanıcının kabuğu ( ) nobody olarak ayarlanmıştır/usr/sbin/nologingetent passwd nobody .
Pablo A,

@sarnold - lütfen söylediğine inandığım cevap hakkındaki yorumuma bakın. Sebepleri olmadığı veya kaynakları belirttiği için oldukça zayıf bir cevap Dahası, hiç kimse hesabı ve NFS'nin nasıl çalıştığı hakkında bilmediğim her şeye aykırı davranıyor: root_squashbunun üzerine uzaktan sistemlerdeki kimseye kök eşlemeyecek . Bu, tam olarak bu cevabın ifade
vidarlo

Yanıtlar:


85

Özel izinlere ihtiyaç duymayan şeyleri çalıştırmak için orada. Genellikle savunmasız servislere (httpd, vb.) Ayrılmıştır, böylece saldırıya uğrarlarsa, sistemin geri kalanında asgari düzeyde hasar görürler.

Bunun yerine , gerçek bir kullanıcı olarak bir şey çalıştırmakla , o hizmetin tehlikeye atılması (web sunucuları zaman zaman rasgele kod çalıştırmak için kullanılabilir), bunun yerine bu kullanıcı çalışacak ve kullanıcının sahip olduğu her şeye erişebilecek. Çoğu durumda, bu kök almak kadar kötü .

Ubuntu Wiki'de hiç kimse hakkında biraz daha bilgi edinebilirsiniz:

Takiplerini cevaplamak için:

Bu hesaba neden erişemiyorum su nobody?

sudo grep nobody /etc/shadowkimsenin şifresi suolmadığını ve hesap şifresi olmadan yapamayacağınızı gösterir . En temiz yol sudo su nobodybunun yerine. Bu seni oldukça ıssız bir shkabukta bırakacak .

Bu hesabı ne zaman kullanmanız gerektiğine dair belirli bir örnek verebilir misiniz ?

Bir programın işlemleri için izinler gerekli olmadığında. Bu, hiçbir zaman disk etkinliği olmayacaksa dikkat çekicidir.

Bunun gerçek dünya örneği, memcachedbilgisayarımda ve sunucumda hiç kimse hesabı altında çalışan anahtar bellek içi önbellek / veritabanı / şeydir. Neden? Çünkü herhangi bir izne ihtiyaç duymaz ve dosyalara yazma erişimi olan bir hesap vermek sadece gereksiz bir risk olacaktır.


Açıklayabiliyorsanız sadece iki şey: 1) bu hesaba neden erişemiyorum su nobodyve 2) bu hesabı kullanmanız gerektiğinde özel bir örnek verebilir misiniz ?
Radu Rădeanu

@ RaduRădeanu 1) Tahmin ediyorum ki bir şifre seti olmadığı için ve susıradan bir kullanıcı olduğunuzda, hedef kullanıcının şifresini vermeniz gerekir. Daha sudo -isonra su nobodyroot kabuğundan deneyin (şifre gerektirmez).
Ağustos'ta CVn.

2
Network File Systemharitalar rootiçin nobodybu nedenle yerel kök uzak kök can gibi her şeyi erişemez.
Sylwester

1
@ RaduRădeanu Lütfen düzenleme geçmişine dikkat edin. Orjinal komutu test ettiğimde (orada olanı değil) bu başlangıçta bir çizgi (/ bin / sh) kabuğuna dönüyordum ama şimdi bunu tekrarlayamam. Orijinal düzenlemeniz iyiydi. Bunu değiştiren ben değildim.
Oli

1
Her zaman nobodyaslında / öncelikle NFS tarafından linuxstandardbase durumları olarak kullanıldığını düşündüm .
dgonzalez

29

Birçok Unix varyantında, "hiç kimse", hiçbir dosya sahibi olmayan, ayrıcalıklı grupta olmayan ve diğer kullanıcıların sahip olduğu yetenekler dışında bir kullanıcı hesabının geleneksel adıdır.

Onları kontrol altına alan kötü niyetli bir kullanıcı tarafından yapılabilecek zararı sınırlandırmak için, kimseyi, özellikle de sunucuyu kimsenin kullanmaması yaygındır. Bununla birlikte, eğer bu şekilde birden fazla arka plan programı çalıştırılırsa, bu tekniğin faydası azalır, çünkü o zaman bir arka planının kontrolünü kazanmak, hepsinin kontrolünü sağlar. Bunun nedeni, hiç kimsenin sahip olmadığı işlemlerin birbirlerine sinyal gönderme ve hatta hata ayıklama yeteneğine sahip olmaması, hatta birbirlerinin hafızasını okumalarına ve hatta değiştirmelerine izin vermesidir.

Http://en.wikipedia.org/wiki/Nobody_(username) adresinden alınan bilgiler .


-1: nobodykesinlikle NFS içindir ve diğer servisler tarafından kullanılmamalı ve kesinlikle sistem yöneticileri tarafından kullanılmamalıdır. Teşekkürler.
sarnold

22

Kullanıcı hiç kimse yalnızca NFS için ayrılmıştır.

Yukarıdaki kuleler oldukça yanlıştır, çünkü bunun nobody"genel" adsız / misafir tarzı bir kullanıcı kimliği olduğunu varsayarlar .

UNIX / Linux erişim kontrolü modelinde anonim / misafir tarzı kullanıcı kimlikleri mevcut değildir ve bunlar kötü önerilerdir:

  • " Ortak olarak cinleri çalıştırmak için nobodyonlara kontrolünü ele kötü niyetli bir kullanıcı tarafından yapılabilecek hasarı sınırlamak için, özellikle sunucular,. " Çünkü şöyle Bunun: " Ancak, bu tekniğin yararı, eğer birden fazla azalır Bir daemon bu şekilde çalıştırılır, çünkü o zaman bir daemonun kontrolünü kazanmak, hepsinin kontrolünü sağlar. "
  • " Bunun gerçek bir örneği ( memcachedbilgisayardaki ve nobodyhesap altında çalışan sunucumda oturan bir anahtar-değer önbellek / veritabanı / şey) . Neden? Neden? Çünkü sadece herhangi bir izin alması gerekmiyor dosyalara yazma erişimi olan bir hesap sadece gereksiz bir risk olacaktır. "

nobodyKullanıcı kimliği 65534 ile kullanıcı adı oluşturulur ve belirli bir amaç için ayrılmış ve sadece bu amaç için kullanılmalıdır edildi: NFS ağaç ihracatındaki "bağlanılmayan" kullanıcılar ve kullanıcı kimlikleri için yer tutucu olarak.

Diğer bir deyişle, kullanıcı / kimlik eşlemesi NFS ağacı dışa aktarımı için ayarlanmadıkça , dışa aktarmadaki tüm dosyalar aittir nobody. Bunun amacı, içe aktarma sistemindeki tüm kullanıcıların ("dışında" izinleri olmadıkça) hiçbirinin (hariç root) olamayacağı şekilde bu dosyalara erişmelerini engellemektir nobody.

Nedenle kullanımı çok kötü bir fikirdir nobodyiçin herhangi amacı kimseye erişilebilir olmamalıdır dosyaları için bir kullanıcı adı / kullanıcı kimliği olmaktır çünkü, başka bir amaç.

Wiki girişi de çok yanlış.

UNIX / Linux uygulaması, her bir "uygulama" veya ayrı bir erişim kontrol alanı gerektiren uygulama alanı için yeni bir hesap oluşturmak ve NFS dışında asla tekrar kullanmamaktırnobody .


Bu cevap herhangi kaynaklardan alıntı ve açıkça diğer cevaplar, birkaç çelişmektedir vermez yapmak kaynaklardan alıntı. Mevcut ödül, bu cevabın özellikle iyi olduğunu, bu durumda bazı kaynaklardan alıntı yapması gerektiğini veya listenin bir gerekçesinin bulunduğunu göstermektedir.
vidarlo


@ mook765 Bu kısım iyi. NFS ile ilgili paragraf ise, ben grok yok. Örneğin root_squashaçık, rootkullanıcıya eşlenir nobody, böylece sahibi olan dosyalar nobodykesinlikle bir anlam ifade etmeyecektir. Ek olarak, hiç kimsenin sahip olmadığı dosyaların, herkesin erişemeyeceği anlamına gelmediği ifadesi, dosya izinlerinin UNIX'teki mülkiyetinden ayrı olması nedeniyle çok az anlam ifade eder.
Cevaptaki

1
@ vidarlo, bu cevabı size ait olacak dosyaları ayarlamanız gerektiğini önermiyor nobody. Size nobodyNFS'nin izinleri haritalarken kullanması gerektiğini söylüyor ve bu benim için en önemli nokta. Nasıl NFS kullanan nobodybu gerçeği daha az ilginç gelmez kullanmak nobody. Teşekkürler.
sarnold

@sarnold cevabı bence bu konuda hala yanlış düz. Bir kullanıcı cevabı okur ve man exportsçok karışık olabilir.
vidarlo

17

nobodyKullanıcı yüklemek (Ubuntu Desktop 13.04 üzerinde işaretli) taze varsayılan olarak oluşturulur.

Birçok * nix varyantında, nobodydosya sahibi olmayan, ayrıcalıklı gruplara sahip olmayan ve diğer her kullanıcının sahip olduğu ( nobodykullanıcı ve grupta /etc/sudoersdosyaya sahip olmayanlar) dışında hiçbir yeteneği olmayan bir kullanıcı hesabının geleneksel adıdır. .

Onları kontrol altına alan kötü niyetli bir kullanıcı tarafından yapılabilecek zararı sınırlandırmak için, özellikle sunucular gibi durumlarda daemonların çalıştırılması yaygındır nobody. Bununla birlikte, eğer böyle bir birden fazla arka plan programı çalıştırılırsa, bu tekniğin faydası azalır, çünkü daha sonra bir arka planın kontrolünü elde etmek hepsinin kontrolünü sağlar. Bunun nedeni, sahip nobodyolunan işlemlerin birbirlerine sinyal gönderme ve birbirlerinin hatalarını ayıklama yeteneğine sahip olmalarıdır, böylece birbirlerinin hafızasını okumalarına ve hatta değiştirmelerine izin verilir.

Kaynak : Wikipedia - Kimse (kullanıcı adı)


Sahip nobodyolunan süreçler birbirlerine sinyal gönderebilir ve hatta Linux'ta birbirlerini sıkıştırabilir; bu, kimsenin sahip olmadığı bir sürecin kimsenin sahip olmadığı bir sürecin hafızasını okuyabilir ve yazabilir.

Bu, nobodykullanıcının /etc/passwddosyadaki örnek bir girişidir :

alaa@aa-lu:~$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

Farkedebileceğiniz gibi, nobodykullanıcının /bin/shbir giriş kabuğu ve /nonexistentgiriş dizini vardır. Adından da anlaşılacağı gibi, /nonexistentvarsayılan olarak , dizin yok.

Paranoyaksanız, nobodyvarsayılan kabuğunu bu şekilde ayarlayabilirsiniz /usr/sbin/nologin, böylece nobodykullanıcı için ssh girişini reddedebilirsiniz .

Kaynak : LinuxG.net - Linux ve Unix Kimse Kullanıcısı Yok


Vikipedi'den yanlış paragraf çıkarıldıysa, bu cevap bir + 1 hak eder. Teşekkürler.
Sarnold

3

hiç kimse özel bir kullanıcı ve grup hesabı değildir. Gerçek bir kullanıcı adı (ve grup adı) olduğu ve işlemler ve hatta kullanıcılar tarafından kullanılabildiği için tam anlamıyla kimse değil . Örneğin, bazı Apache yapılandırmalarında, web sitesi dosyalarına ve dizinlerine sahip olan kullanıcı / grup olarak hiç kimse yoktur. Sorun, NFS dizinleri ve web sunucusu gibi birden fazla işlemin hiç kimseyi kullanmadığı zaman ortaya çıkar.


0

'Küçük kullanıcı düzeltme yalnızca kullanıcı NFS için ayrılmamıştır. ' Cevap. nobodyKullanıcı ayrıca şu anda bağlama kaidesi bulunan imtiyazsız kaplarda kullanılır.

Bu, systemd-nspawn'dan, özellikle de --bind mount seçeneğinden alınmıştır:

Bu seçeneğin --private-kullanıcılar ile birlikte kullanılması durumunda ortaya çıkan bağlama noktalarının hiç kimseye ait olmayacağını unutmayın. Bunun nedeni, bağlamanın ve dosyalarının ve dizinlerinin, kapta bulunmayan ilgili ana bilgisayar kullanıcılarına ve gruplara ait olmaya devam etmeleri ve böylece joker UID 65534 (hiç kimse) altında görünmeleridir. Bu tür bağlanma bağları oluşturulursa, --bind-ro = kullanarak salt okunur hale getirilmesi önerilir.

systemd-nspawn

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.