web-dev-qa-db-fra.com

Quel est le but de l'utilisateur 'personne'?

Après avoir lu Liste de tous les utilisateurs humains J'ai remarqué qu'il existe un compte d'utilisateur nommé "personne" dans mon système Ubuntu.

De plus, j'ai remarqué que je peux me connecter à ce compte à partir d'un terminal en utilisant la commande suivante et mon mot de passe:

Sudo su nobody

su nobody

Cela ne me dérange pas du tout, mais je veux savoir quel est le but de cet utilisateur? Est-il créé par défaut sur une nouvelle installation d'Ubuntu ou est-il créé en installant un paquet particulier?

90
Radu Rădeanu

Il est là pour exécuter des tâches qui ne nécessitent aucune autorisation spéciale. Il est généralement réservé aux services vulnérables (httpd, etc.) afin que, s’ils sont piratés, ils causent des dommages minimes sur le reste du système.

Comparez cela à l'exécution de quelque chose en tant que utilisateur réel. Si ce service était compromis (les serveurs Web sont parfois exploités pour exécuter du code arbitraire), il s'exécuterait en tant que cet utilisateur et aurait accès à tout. cet utilisateur avait. Dans la plupart des cas, c'est aussi mauvais que d'obtenir la racine.

Vous pouvez en savoir plus sur l'utilisateur nobody sur le wiki d'Ubuntu:

Pour répondre à vos suivis:

Pourquoi je ne peux pas accéder à ce compte avec su nobody?

Sudo grep nobody /etc/shadow vous montrera que personne n'a pas de mot de passe et vous ne pouvez pas su sans mot de passe de compte. Le moyen le plus propre consiste à Sudo su nobody à la place. Cela vous laissera dans un assez désolé sh Shell.

Pouvez-vous donner un exemple particulier quand est-il indiqué d'utiliser ce compte?

Lorsque les autorisations ne sont pas requises pour les opérations d'un programme. Ceci est d'autant plus remarquable qu'il n'y aura jamais d'activité disque.

Un exemple réel est memcached (cache/base de données/objet en mémoire clé-valeur) assis sur mon ordinateur et mon serveur fonctionnant sous le compte nobody. Pourquoi? Car il ne nécessite aucune autorisation et lui donner un compte disposant d'un accès en écriture aux fichiers constituerait un risque inutile.

83
Oli

Dans de nombreuses variantes d'Unix, "nobody" est le nom conventionnel d'un compte utilisateur qui ne possède aucun fichier, ne fait partie d'aucun groupe privilégié et n'a aucune autre possibilité que celles de tous les autres utilisateurs.

Il est courant d'exécuter les démons en tant que personne, en particulier les serveurs, afin de limiter les dommages pouvant être causés par un utilisateur malveillant qui en a pris le contrôle. Cependant, l'utilité de cette technique est réduite si plusieurs démons sont exécutés de la sorte, car le contrôle d'un démon permettrait de tous les contrôler. En effet, aucun processus appartenant à une personne n'a la capacité de s'échanger des signaux et même de se déboguer, ce qui lui permet de lire ou même de modifier la mémoire de chacun.

Informations extraites de http://en.wikipedia.org/wiki/Nobody_ (nom d'utilisateur) .

28
Paulius Šukys

Les réponses ci-dessus sont plutôt fausses, car elles supposent que nobodyest un ID utilisateur "générique" de style anonyme/invité.

Dans le modèle de contrôle d'accès UNIX/Linux, les ID utilisateur de style anonyme/invité n'existent pas et il s'agit de mauvaises suggestions:

  • " commun pour exécuter les démons en tant que nobodyname__, en particulier les serveurs, afin de limiter les dommages pouvant être causés par un utilisateur malveillant qui en a pris le contrôle. " En raison de ce qui suit: " Cependant, l’utilité de cette technique est réduite si plusieurs démons sont exécutés de la sorte, car le contrôle d’un démon leur permettrait de les contrôler tous ".
  • " Un exemple concret de ceci est memcached(cache-base de données clé/valeur/chose), assis sur mon ordinateur et mon serveur s'exécutant sous le compte nobodyname__. Pourquoi? Parce que tout simplement pas besoin d'autorisations et lui donner un compte qui avait un accès en écriture aux fichiers serait un risque inutile. "

Le nom d'utilisateur nobodyavec l'ID utilisateur 65534 a été créé et réservé à des fins spécifiques. Il ne doit être utilisé qu'à cette fin: en tant qu'espace réservé pour des utilisateurs "non mappés" et des ID utilisateur dans les exportations d'arborescence NFS.

Autrement dit, à moins que le mappage utilisateur/identifiant ne soit configuré pour les exportations d'arborescence NFS, tous les fichiers de l'exportation apparaîtront comme appartenant à nobodyname__. Ceci a pour but d'empêcher tous les utilisateurs du système importateur d'accéder à ces fichiers (à moins qu'ils ne disposent d'autorisations "autres"), car aucun d'entre eux (à l'exception de rootname__) ne peut être/devenir nobodyname__.

Par conséquent, il est très déconseillé d’utiliser nobodypour any à d’autres fins, car son objectif est d’être un nom d’utilisateur/un identifiant d’utilisateur pour les fichiers qui ne doivent être accessibles à personne.

L'entrée du wiki est très fausse aussi.

La pratique UNIX/Linux consiste à créer un nouveau compte pour chaque "application" ou domaine d'application nécessitant un domaine de contrôle d'accès distinct, et à ne jamais réutiliser nobodyen dehors de NFS.

22
PeterG

L'utilisateur nobody est créé par défaut lors d'une nouvelle installation (vérifié dans Ubuntu Desktop 13.04).

Dans de nombreuses variantes * nix, nobody est le nom classique d'un compte utilisateur qui ne possède aucun fichier, ne fait partie d'aucun groupe privilégié et ne possède aucune autre possibilité. que tous les autres utilisateurs ont (l'utilisateur et le groupe nobody n'ont aucune entrée dans le fichier /etc/sudoers).

Il est courant d'exécuter des démons en tant que nobody, en particulier des serveurs, afin de limiter les dommages pouvant être causés par un utilisateur malveillant qui en a pris le contrôle. Cependant, l'utilité de cette technique est réduite si plusieurs démons sont exécutés de la sorte, car le contrôle d'un démon permettrait de tous les contrôler. La raison en est que les processus appartenant à nobody ont la capacité de s’envoyer des signaux et même de se déboguer, leur permettant de lire ou même de modifier la mémoire de chacun.

Source : Wikipedia - Personne (nom d'utilisateur)


Les processus possédés par nobody peuvent envoyer des signaux les uns aux autres et même se trace sous Linux, ce qui signifie qu'un processus n'appartenant à personne peut lire et écrire la mémoire d'un autre processus appartenant à personne.

Voici un exemple d'entrée de l'utilisateur nobody dans le fichier /etc/passwd:

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

Comme vous le remarquerez peut-être, l'utilisateur nobody a /bin/sh en tant que shell de connexion et /nonexistent en tant que répertoire de base. Comme son nom l'indique, le répertoire /nonexistent n'existe pas par défaut.

Si vous êtes paranoïaque, vous pouvez définir le shell par défaut de nobody en /usr/sbin/nologin et ainsi refuser l’identifiant SSH de l’utilisateur nobody.

Source : LinuxG.net - L'utilisateur Nobody de Linux et Unix

15
Alaa Ali

personne n'est un utilisateur spécial et un compte de groupe. Puisqu'il s'agit d'un nom d'utilisateur réel (et d'un nom de groupe) pouvant être utilisé par les processus et même par les utilisateurs, il ne s'agit pas littéralement de personne. Par exemple, certaines configurations Apache n'ont personne en tant qu'utilisateur/groupe propriétaire des fichiers et répertoires du site Web. Le problème survient lorsque plusieurs processus peuvent utiliser l'utilisateur nobody, tels que les répertoires NFS et le serveur Web.

2
jeffmcneill