Vraag Wat is het doel van de 'nobody' gebruiker?


Nadat ik heb gelezen Maak een lijst van alle menselijke gebruikers Ik heb gemerkt dat er een gebruikersaccount met de naam 'nobody' is in mijn Ubuntu-systeem.

Ook heb ik gemerkt dat ik vanaf de terminal in dit account kan inloggen met behulp van de volgende opdracht en mijn wachtwoord:

sudo su nobody

su nobody

Ik vind het helemaal niet erg, maar ik wil weten wat het doel van deze gebruiker is? Wordt het standaard aangemaakt op een nieuwe installatie van Ubuntu of wordt het gemaakt door een bepaald pakket te installeren?


77
2017-08-07 12:52


oorsprong


Merk op dat wanneer u zich aanmeldt met uw wachtwoord, u uw wachtwoord gebruikt voor de sudo-stap, niet voor het nobody-account (en dat de reden waarom het werkt, is omdat de supergebruiker iedereen kan su doen zonder zijn wachtwoord in te hoeven voeren (hoewel als hieronder genoemd, geloof ik dat het op zijn minst op RH-derivaten is, als niemand shell is ingesteld op / sbin / nologin, zou je nog steeds niet in staat zijn om in te loggen, zelfs met superuser (aka root) - Foon


antwoorden:


Het is daar om dingen uit te voeren die geen speciale rechten nodig hebben. Het is meestal gereserveerd voor kwetsbare services (httpd, enz.), Zodat ze, als ze worden gehackt, minimale schade aan de rest van het systeem hebben.

Vergelijk dit met het uitvoeren van iets als een echte gebruiker, als die service werd aangetast (webservers worden af ​​en toe uitgebuit om willekeurige code uit te voeren), zou het als die gebruiker worden uitgevoerd en toegang hebben tot alles wat die gebruiker had. In de meeste gevallen is dit zo net zo slecht als wortel schieten.

Je kunt wat meer lezen over de nobody-gebruiker op de Ubuntu Wiki:

Om uw follow-ups te beantwoorden:

Waarom ik geen toegang tot dit account kan krijgen su nobody?

sudo grep nobody /etc/shadow zal je laten zien dat niemand een wachtwoord heeft en dat kan niet su zonder een wachtwoord. De schoonste manier is om sudo su nobody in plaats daarvan. Dat zal je in een behoorlijk verlaten omgeving achterlaten sh shell.

Kun je een geven bijzonder voorbeeld wanneer wordt aangegeven om dit account te gebruiken?

Wanneer machtigingen niet vereist zijn voor de bewerkingen van een programma. Dit is het meest opvallend wanneer er nooit enige schijfactiviteit zal zijn.

EEN echte wereld voorbeeld hiervan is memcached (een cache / database / ding met sleutelwaarde in het geheugen), zittend op mijn computer en mijn server die draait onder het niemand-account. Waarom? Omdat het gewoon geen rechten nodig heeft en een account geven dat schrijftoegang tot bestanden had, zou gewoon een onnodig risico zijn.


74
2017-08-07 13:02



Nog twee dingen als je het kunt uitleggen: 1) waarom ik geen toegang tot dit account kan krijgen su nobody en 2) kun je geven een bijzonder voorbeeld wanneer wordt aangegeven om dit account te gebruiken? - Radu Rădeanu
@ RaduRădeanu 1) Ik vermoed dat dat komt omdat er geen wachtwoord is ingesteld, en wanneer u su als gewone gebruiker moet u het wachtwoord van de doelgebruiker opgeven. Proberen sudo -i dan su nobody vanuit de rootshell (waarvoor geen wachtwoord vereist is). - Michael Kjörling
Network File System kaarten root naar nobody dus lokale root heeft geen toegang tot alles zoals de externe root kan. - Sylwester
@ RaduRădeanu Ik heb deze bewerkt om je vragen in te dienen en te beantwoorden. - Oli♦
@ RaduRădeanu Let op de bewerkingsgeschiedenis. Toen ik het oorspronkelijke commando testte (niet wat er is), kwam dit oorspronkelijk in een streepje (/ bin / sh) terecht, maar dat kan ik nu niet repliceren. Je originele bewerking was in orde. Ik heb het niet veranderd. - Oli♦


In veel Unix-varianten is "nobody" de conventionele naam van een gebruiker   account dat geen bestanden bezit, geen bevoorrechte groepen heeft en nee heeft   capaciteiten behalve die welke elke andere gebruiker heeft.

Het is normaal om daemons uit te voeren als niemand, vooral servers, om dat te doen   beperk de schade die een kwaadwillende gebruiker zou kunnen oplopen   controle over hen. Het nut van deze techniek is echter verminderd   als meer dan één daemon op deze manier wordt uitgevoerd, omdat dan controle wordt verkregen   van één daemon zou ze allemaal controleren. De reden is dat   processen die niemand bezit, hebben de mogelijkheid om signalen naar elkaar te verzenden   en zelfs debuggen met elkaar, waardoor ze elk kunnen lezen of zelfs wijzigen   andermans geheugen.

Informatie overgenomen van http://en.wikipedia.org/wiki/Nobody_(username).


26
2017-08-07 13:02





De nobody gebruiker wordt standaard aangemaakt bij een nieuwe installatie (aangevinkt op Ubuntu Desktop 13.04).

In veel * nix-varianten, nobody is de conventionele naam van een gebruiker   account dat geen bestanden bezit, geen bevoorrechte groepen heeft en nee heeft   capaciteiten behalve die welke elke andere gebruiker heeft (de nobodygebruiker   en groep hebben geen vermelding in de /etc/sudoers het dossier).

Het is normaal om te rennen daemons als nobody, vooral servers, in   om de schade te beperken die zou kunnen worden gedaan door een kwaadwillende gebruiker die   kreeg controle over hen. Het nut van deze techniek is echter   gereduceerd als meer dan één daemon op deze manier wordt uitgevoerd, omdat dan wint   controle over één daemon zou hen allemaal kunnen controleren. De reden is   dat nobodybekende processen hebben de mogelijkheid om signalen naar elk te verzenden   andere en zelfs debuggen met elkaar, waardoor ze kunnen lezen of zelfs wijzigen   elkaars geheugen.

Bron:    Wikipedia - Niemand (gebruikersnaam)


De nobodybekende processen kunnen signalen naar elkaar sturen   en zelfs ptrace elkaar in Linux, wat betekent dat er niemand in het bezit is   proces kan het geheugen van een ander proces dat niemand bezit, lezen en schrijven.

Dit is een voorbeeld van de nobody gebruiker in de /etc/passwd het dossier:

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

Zoals u wellicht opmerkt, de nobody gebruiker heeft /bin/sh als login-shell   en /nonexistent als de hoofddirectory. Zoals de naam al doet vermoeden, de    /nonexistent map bestaat standaard niet.

Als je paranoïde bent, kun je instellen nobodyStandaard shell als    /usr/sbin/nologin en dus, ontken de ssh login voor de nobody gebruiker.

Bron:    LinuxG.net - De Linux en Unix niemand gebruiker


15
2017-08-07 13:13





De antwoorden hierboven zijn nogal verkeerd, omdat ze dat aannemen nobody is een "generiek" gebruikers-ID voor anonieme gebruikersnamen.

In het UNIX / Linux-toegangscontrolemodel bestaan ​​anonieme / gaststijl-gebruikers-ID's niet en dit zijn slechte suggesties:

  • "gebruikelijk om daemons uit te voeren nobody, in het bijzonder servers, om de schade te beperken die zou kunnen worden gedaan door een kwaadwillende gebruiker die de controle over hen heeft gekregen."vanwege het volgende:"Het nut van deze techniek is echter kleiner als meer dan één daemon op deze manier wordt uitgevoerd, omdat het dan controle krijgen over één daemon zou zijn om ze allemaal te regelen".
  • "Een voorbeeld uit de echte wereld hiervan is memcached (een cache / database / ding met sleutelwaarde in het geheugen), zittend op mijn computer en mijn server die draait onder de nobody account. Waarom? Omdat het gewoon geen rechten nodig heeft en een account geven dat schrijftoegang tot bestanden had, zou gewoon een onnodig risico zijn."

De nobody gebruikersnaam met gebruikers-id 65534 is gemaakt en gereserveerd voor een specifiek doel en mag alleen voor dat doel worden gebruikt: als tijdelijke aanduiding voor "niet-toegewezen" gebruikers en gebruikers-ID's in NFS-boomuitvoer.

Dat wil zeggen, tenzij de gebruiker / id-toewijzing is ingesteld voor NFS-boomuitvoer, alle bestanden in de export verschijnen in eigendom van nobody. Het doel hiervan is om te voorkomen dat alle gebruikers van het importsysteem toegang hebben tot die bestanden (tenzij ze "andere" rechten hebben), aangezien geen van deze bestanden (behalve root) kan zijn / worden nobody.

Daarom is het een heel slecht idee om te gebruiken nobody voor ieder ander doel, omdat het de bedoeling is om een ​​gebruikersnaam / gebruikers-ID te zijn voor bestanden die voor niemand toegankelijk moeten zijn.

De Wiki-vermelding is ook erg verkeerd.

De UNIX / Linux-praktijk is om een ​​nieuw account te maken voor elke "toepassing" of toepassingsgebied dat een afzonderlijk toegangscontroledomein nodig heeft, en om nooit opnieuw te gebruiken nobody buiten NFS.


15
2017-09-15 12:07





nobody is een speciaal gebruikers- en groepsaccount. Omdat het een echte gebruikersnaam (en groepsnaam) is en kan worden gebruikt door processen en zelfs gebruikers, is dit niet letterlijk niemand. Sommige Apache-configuraties hebben bijvoorbeeld niemand als de gebruiker / groep die eigenaar is van de websitebestanden en -directory's. Het probleem ontstaat wanneer meerdere processen de nobody-gebruiker gebruiken, zoals NFS-mappen en de webserver.


1
2017-11-11 07:31