Qual è lo scopo dell'utente 'nessuno'?


93

Dopo aver letto Elenca tutti gli utenti umani ho notato che esiste un account utente chiamato "nessuno" nel mio sistema Ubuntu.

Inoltre ho notato che posso accedere a questo account dal terminale usando il seguente comando e la mia password:

sudo su nobody

su nessuno

Non mi dispiace affatto, ma voglio sapere qual è lo scopo di questo utente? Viene creato per impostazione predefinita su una nuova installazione di Ubuntu o viene creato installando un pacchetto specifico?


8
Nota che quando accedi usando la tua password, stai usando la tua password per il passaggio sudo, non per l'account nessuno (e che il motivo per cui funziona è perché il superutente può fare un sopralluogo a chiunque senza bisogno di inserire la sua password (anche se come menzionato di seguito, credo almeno sui derivati ​​RH, se la shell di nessuno è impostata su / sbin / nologin, non saresti ancora in grado di accedere anche usando superuser (aka root)
Foon

Questo è il caso per impostazione predefinita ora (18.04+?). sudo su nobodyreturn Questo account non è al momento disponibile. perché la shell per l'utente nobody è impostata su/usr/sbin/nologin ( getent passwd nobody).
Pablo A

@sarnold - per favore, vedi il mio commento sulla risposta, credo che tu stia alludendo a. È una risposta piuttosto scarsa, in quanto non ragiona né cita fonti. Inoltre va contro tutto ciò che so sull'account nobody e su come funziona NFS: con root_squashesso mapperà root a nessuno su sistemi remoti. Questo è più o meno esattamente il contrario di ciò che afferma questa risposta
vidarlo

Risposte:


85

È lì per eseguire cose che non richiedono autorizzazioni speciali. Di solito è riservato ai servizi vulnerabili (httpd, ecc.) In modo che se vengono hackerati, avranno un danno minimo sul resto del sistema.

In contrasto con l'esecuzione di qualcosa come un vero utente, se quel servizio fosse compromesso (i server Web vengono occasionalmente sfruttati per eseguire codice arbitrario), funzionerebbe come quell'utente e avrebbe accesso a tutto ciò che l'utente aveva. Nella maggior parte dei casi, questo è tanto grave quanto ottenere root.

Puoi leggere un po 'di più sull'utente nessuno sul Wiki di Ubuntu:

Per rispondere ai tuoi follow-up:

Perché non riesco ad accedere a questo account con su nobody?

sudo grep nobody /etc/shadowti mostrerà che nessuno non ha una password e non puoi farlo susenza una password dell'account. Il modo più pulito è sudo su nobodyinvece. Ti lascerà in un shguscio piuttosto desolato .

Puoi fare un esempio particolare quando viene indicato di utilizzare questo account?

Quando non sono necessarie autorizzazioni per le operazioni di un programma. Ciò è particolarmente evidente quando non ci sarà mai alcuna attività sul disco.

Un esempio reale di questo è memcached(una cache / database / cosa in valore-chiave in memoria), seduto sul mio computer e il mio server in esecuzione con l'account nobody. Perché? Perché semplicemente non ha bisogno di autorizzazioni e assegnargli un account che avesse accesso in scrittura ai file sarebbe solo un rischio inutile.


Solo altre due cose se puoi spiegare: 1) perché non riesco ad accedere a questo account con su nobodye 2) puoi dare un esempio particolare quando è indicato per usare questo account?
Radu Rădeanu,

@ RaduRădeanu 1) Immagino che non abbia una password impostata e, quando sei suun utente normale, devi fornire la password dell'utente di destinazione. Prova sudo -iquindi su nobodydalla shell di root (che non richiede una password).
un CVn

2
Network File Systemle mappe roota nobodytale radice locale non possono accedere a tutto ciò che può fare la radice remota.
Sylwester,

1
@ RaduRădeanu Nota la cronologia delle modifiche. Quando ho testato il comando originale (non quello che c'è) in origine stavo finendo in una shell dash (/ bin / sh) ma non riesco a replicarlo ora. La tua modifica originale andava bene. Non sono stato io a cambiarlo.
Oli

1
Ho sempre pensato che nobodysia effettivamente / principalmente usato da NFS come afferma linuxstandardbase .
dgonzalez,

29

In molte varianti di Unix, "nobody" è il nome convenzionale di un account utente che non possiede file, non appartiene a gruppi privilegiati e non ha abilità se non quelle di cui dispongono tutti gli altri utenti.

È comune eseguire demoni come nessuno, in particolare i server, al fine di limitare il danno che potrebbe essere fatto da un utente malintenzionato che ha acquisito il controllo di essi. Tuttavia, l'utilità di questa tecnica si riduce se più di un demone viene eseguito in questo modo, perché ottenere il controllo di un demone fornirebbe il controllo di tutti. Il motivo è che i processi di proprietà di nessuno hanno la capacità di scambiarsi segnali e persino di eseguire il debug a vicenda, consentendo loro di leggere o persino modificare la memoria dell'altro.

Informazioni tratte da http://en.wikipedia.org/wiki/Nobody_(username) .


-1: nobodyè rigorosamente per NFS e non deve essere utilizzato da altri servizi e certamente non dagli amministratori di sistema. Grazie.
Sarnold,

22

L'utente nessuno è riservato solo a NFS.

Le risposte sopra sono piuttosto sbagliate, perché presumono che nobodysia un ID utente "generico" in stile anonimo / ospite.

Nel modello di controllo di accesso UNIX / Linux non esistono ID utente anonimi / guest style e questi sono cattivi suggerimenti:

  • " comune per eseguire demoni come nobody, in particolare i server, al fine di limitare il danno che potrebbe essere fatto da un utente malintenzionato che ha acquisito il controllo di essi. " a causa di ciò che segue: " Tuttavia, l'utilità di questa tecnica è ridotta se più di un demone viene eseguito in questo modo, perché ottenere il controllo di un demone fornirebbe il controllo di tutti ".
  • " Un esempio reale di questo è memcached(una cache / database / cosa in valore-chiave-chiave), seduto sul mio computer e il mio server in esecuzione sotto l' nobodyaccount. Perché? Perché non ha bisogno di alcuna autorizzazione e darlo un account che avesse accesso in scrittura ai file sarebbe solo un rischio inutile " .

Il nobodynome utente con ID utente 65534 è stato creato e riservato per uno scopo specifico e deve essere utilizzato solo a tale scopo: come segnaposto per utenti "non mappati" e ID utente nelle esportazioni dell'albero NFS.

Cioè, a meno che il mapping utente / ID non sia impostato per le esportazioni dell'albero NFS, tutti i file nell'esportazione appariranno di proprietà nobody. Lo scopo è impedire a tutti gli utenti del sistema di importazione di accedere a tali file (a meno che non dispongano di autorizzazioni "altre"), poiché nessuno (tranne root) può essere / diventare nobody.

Pertanto è una pessima idea da utilizzare nobodyper qualsiasi altro scopo, perché il suo scopo è quello di essere un nome utente / ID utente per i file che non devono essere accessibili a nessuno.

Anche la voce Wiki è molto sbagliata.

La pratica UNIX / Linux è quella di creare un nuovo account per ogni "applicazione" o area di applicazione che necessita di un dominio di controllo accessi separato e di non riutilizzare mai nobodyal di fuori di NFS .


Questa risposta non cita tutte le fonti, e contraddice esplicitamente molte delle altre risposte, che fanno citare fonti. L'attuale generosità indica che questa risposta è particolarmente buona, nel qual caso dovrebbe citare alcune fonti, o alla lista avere qualche ragionamento.
vidarlo,


@ mook765 Quella parte va bene. Il paragrafo su NFS, tuttavia, non grok. Ad esempio con root_squashon, rootviene mappato all'utente nobody, quindi i file con proprietario nobodynon hanno assolutamente senso. Inoltre, l'affermazione secondo cui i file di proprietà di nessuno sono destinati a essere inaccessibili a nessuno ha poco senso, poiché le autorizzazioni per i file sono separate dalla proprietà in UNIX. Non sto dicendo che tutto nella risposta sia sbagliato, solo che alcuni elementi hanno poco o nessun senso per me :)
vidarlo

1
@vidarlo, questa risposta non suggerisce che dovresti impostare i file di proprietà nobody. Ti sta dicendo che nobodyè NFS da utilizzare quando si mappano le autorizzazioni, e questo è il punto più importante per me. Come NFS utilizza nobodyè meno interessante il fatto che esso fa uso nobody. Grazie.
Sarnold,

A mio avviso, la risposta è ancora chiaramente sbagliata in questa materia. Se un utente legge la risposta e man exports, potrebbe essere molto confuso.
vidarlo,

17

L' nobodyutente viene creato per impostazione predefinita su una nuova installazione (selezionato su Ubuntu Desktop 13.04).

In molte varianti * nix, nobodyè il nome convenzionale di un account utente che non possiede file, non appartiene a gruppi privilegiati e non ha capacità tranne quelle che hanno tutti gli altri utenti (l' nobodyutente e il gruppo non hanno alcuna voce nel /etc/sudoersfile) .

È comune eseguire demoni come nobody, in particolare i server, al fine di limitare il danno che potrebbe essere fatto da un utente malintenzionato che ha acquisito il controllo di essi. Tuttavia, l'utilità di questa tecnica si riduce se più di un demone viene eseguito in questo modo, perché ottenere il controllo di un demone fornirebbe il controllo di tutti. Il motivo è che i nobodyprocessi di proprietà hanno la capacità di inviare segnali l'un l'altro e persino di eseguire il debug a vicenda, consentendo loro di leggere o persino modificare la memoria dell'altro.

Fonte : Wikipedia - Nessuno (nome utente)


I nobodyprocessi di proprietà sono in grado di inviare segnali gli uni agli altri e persino scambiarsi l'un l'altro in Linux, il che significa che un processo di proprietà di nessuno può leggere e scrivere la memoria di un altro processo di proprietà di nessuno.

Questa è una voce di esempio nobodydell'utente nel /etc/passwdfile:

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

Come puoi notare, l' nobodyutente ha /bin/shcome shell di login e /nonexistentcome home directory. Come suggerisce il nome, la /nonexistentdirectory non esiste, per impostazione predefinita.

Se sei paranoico, puoi impostare nobodyla shell predefinita come /usr/sbin/nologine così, negare il login ssh per l' nobodyutente.

Fonte : LinuxG.net - Nessuno e utente Linux e Unix


Questa risposta meriterebbe un +1 se il paragrafo errato di Wikipedia fosse rimosso. Grazie.
sarnold,

3

nessuno è un utente speciale e un account di gruppo. Poiché è un vero nome utente (e nome gruppo) e può essere utilizzato dai processi e persino dagli utenti, non è letteralmente nessuno . Ad esempio, alcune configurazioni di Apache non hanno nessuno come utente / gruppo proprietario dei file e delle directory del sito Web. Il problema si presenta quando più processi potrebbero utilizzare l'utente nobody, come le directory NFS e il server web.


0

Correzione minore di " L'utente nessuno è riservato solo a NFS. ' risposta. Al momento l' nobodyutente viene utilizzato anche per i contenitori non privilegiati con attacchi di associazione.

Questo è preso da systemd-nspawn, in particolare l'opzione di montaggio --bind:

Nota che quando questa opzione viene usata in combinazione con --private-users, i punti di mount risultanti saranno di proprietà dell'utente nessuno. Questo perché il mount, i suoi file e le sue directory continuano ad essere di proprietà degli utenti e dei gruppi host pertinenti, che non esistono nel contenitore, e quindi vengono visualizzati con il carattere jolly UID 65534 (nessuno). Se vengono creati tali mount di bind, si consiglia di renderli di sola lettura, usando --bind-ro =.

systemd-nspawn

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.