118 votes

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

Après avoir lu List all human users, j'ai remarqué qu'il y a un compte utilisateur nommé 'nobody' dans mon système Ubuntu.

J'ai également remarqué que je pouvais me connecter à ce compte depuis le 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 lors d'une installation fraîche d'Ubuntu ou est-il créé en installant un paquet particulier?

96voto

Mufaka Points 54

Il est là pour exécuter des choses qui n'ont pas besoin de permissions spéciales. Il est généralement réservé pour les services vulnérables (httpd, etc) afin que s'ils sont piratés, les dommages soient minimaux sur le reste du système.

Contrastez cela avec 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 qu'utilisateur et aurait accès à tout ce que cet utilisateur avait. Dans la plupart des cas, c'est aussi grave que d'obtenir un accès root.

Vous pouvez en lire un peu plus sur l'utilisateur nobody sur le Wiki Ubuntu :

Pour répondre à vos questions supplémentaires :

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

sudo grep nobody /etc/shadow vous montrera que nobody n'a pas de mot de passe et vous ne pouvez pas utiliser su sans mot de passe de compte. La méthode la plus propre est d'utiliser sudo su nobody à la place. Cela vous laissera avec un shell sh assez désolé.

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

Quand des permissions ne sont pas nécessaires pour les opérations d'un programme. Cela est particulièrement notable lorsqu'il n'y aura jamais d'activité disque.

Un exemple réel de cela est memcached (une base de données/thing cache en mémoire clé-valeur), tournant sur mon ordinateur et mon serveur fonctionnant sous le compte nobody. Pourquoi ? Parce qu'il n'a tout simplement pas besoin de permissions et lui donner un compte qui avait accès en écriture aux fichiers ne serait qu'un risque inutile.

41voto

PeterG Points 965

L'utilisateur nobody est réservé uniquement pour NFS.

Les réponses ci-dessus sont plutôt incorrectes, car elles supposent que nobody est un identifiant d'utilisateur "générique" anonyme/invité.

Dans le modèle de contrôle d'accès UNIX/Linux, les identifiants d'utilisateur anonymes/invités n'existent pas et ce sont de mauvaises suggestions :

  • "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 prendrait 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 cette manière, car prendre le contrôle d'un démon permettrait de contrôler tous les démons.".
  • "Un exemple concret est memcached (une base de données/cache en mémoire de type clé-valeur), installé sur mon ordinateur et mon serveur fonctionnant sous le compte nobody. Pourquoi ? Parce qu'il n'a tout simplement pas besoin de permissions et lui attribuer un compte ayant le droit d'écrire des fichiers ne serait qu'un risque inutile."

Le nom d'utilisateur nobody avec l'identifiant d'utilisateur 65534 a été créé et réservé à des fins spécifiques et ne doit être utilisé que pour cette raison : en tant que substitut pour les utilisateurs et les identifiants d'utilisateur "non mappés" dans les exports d'arborescence NFS.

C'est-à-dire que, sauf si une correspondance utilisateur/identifiant est configurée pour les exports d'arborescence NFS, tous les fichiers de l'exportation apparaîtront comme étant propriété de nobody. Le but est d'empêcher tous les utilisateurs du système importateur d'accéder à ces fichiers (à moins qu'ils aient des permissions "autre"), car aucun d'entre eux (à l'exception de root) ne peut être/devenir nobody.

Il est donc très mauvais d'utiliser nobody pour quelconque autre usage, car son but est d'être un nom d'utilisateur/identifiant d'utilisateur pour les fichiers qui ne doivent être accessibles à personne.

L'entrée du Wiki est également très incorrecte.

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 séparé, et de ne jamais réutiliser nobody en dehors de NFS.

31voto

Joseph Holsten Points 4116

Dans de nombreuses variantes d'Unix, "nobody" est le nom conventionnel d'un utilisateur qui ne possède aucun fichier, n'appartient à aucun groupe privilégié et ne dispose d'aucune capacité excepté celles que tout autre utilisateur a.

Il est courant d'exécuter des démons en tant que nobody, surtout des serveurs, afin de limiter les dommages qui pourraient être causés par un utilisateur malveillant qui les aurait contrôlés. Cependant, l'utilité de cette technique est réduite si plusieurs démons sont exécutés de cette manière, car prendre le contrôle d'un démon permettrait d'en contrôler tous. La raison en est que les processus appartenant à nobody ont la capacité de s'envoyer des signaux mutuellement et même de se déboguer mutuellement, ce qui leur permet de lire voire de modifier la mémoire des autres.

Information prise sur http://en.wikipedia.org/wiki/Nobody_(username).

17voto

Alaa Ali Points 29075

L'utilisateur nobody est créé par défaut lors d'une installation fraîche (vérifié sur Ubuntu Desktop 13.04).

Dans de nombreuses variantes *nix, nobody est le nom conventionnel d'un compte utilisateur qui ne possède aucun fichier, n'appartient à aucun groupe privilégié, et n'a aucune capacité sauf celles que chaque autre utilisateur possède (l'utilisateur nobody et le groupe n'ont aucune entrée dans le fichier /etc/sudoers).

Il est courant d'exécuter des daemons en tant que nobody, en particulier des serveurs, afin de limiter les dommages qui pourraient être causés par un utilisateur malveillant qui les contrôlerait. Cependant, l'utilité de cette technique est réduite si plus d'un daemon est exécuté ainsi, car prendre le contrôle d'un daemon fournirait le contrôle sur tous. La raison en est que les processus appartenant à nobody ont la possibilité de s'envoyer des signaux les uns aux autres et même de se déboguer mutuellement, leur permettant de lire voire modifier la mémoire des autres.

<strong>Source</strong>: <a href="http://en.wikipedia.org/wiki/Nobody_%28username%29">Wikipedia - Nobody (username)</a>


Les processus appartenant à nobody peuvent envoyer des signaux aux uns aux autres et même se ptracer mutuellement sous Linux, ce qui signifie qu'un processus appartenant à nobody peut lire et écrire la mémoire d'un autre processus appartenant à nobody.

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 pouvez le constater, l'utilisateur nobody a /bin/sh comme shell de connexion et /nonexistent comme répertoire personnel. 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 comme /usr/sbin/nologin et ainsi refuser la connexion ssh pour l'utilisateur nobody.

<strong>Source</strong>: <a href="http://linuxg.net/the-linux-and-unix-nobody-user/">LinuxG.net - The Linux and Unix Nobody User</a>

3voto

jeffmcneill Points 218

Nobody est un compte utilisateur et de groupe spécial. Parce que c'est un nom d'utilisateur (et de groupe) réel et peut être utilisé par des processus et même des utilisateurs, ce n'est pas littéralement nobody. Par exemple, certaines configurations Apache ont nobody en tant qu'utilisateur/groupe qui possède les fichiers et répertoires du site web. Le problème survient lorsque plusieurs processus peuvent utiliser l'utilisateur nobody, comme les répertoires NFS et le serveur web.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X