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 peux 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 nouvelle installation d'Ubuntu ou est-il créé en installant un paquet particulier ?

96voto

Mufaka Points 54

C'est là pour exécuter des choses qui n'ont pas besoin d'autorisations spéciales. C'est généralement réservé aux services vulnérables (httpd, etc) afin que s'ils sont piratés, ils auront un impact minimal sur le reste du système.

Contrastez cela avec le fait d'exécuter quelque chose en tant que vrai utilisateur, 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 mauvais que d'obtenir les droits root.

Vous pouvez en savoir 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 faire de su sans mot de passe de compte. La manière la plus propre est de faire sudo su nobody à la place. Cela vous laissera dans un shell sh assez désolé.

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

Lorsque des autorisations ne sont pas requises pour les opérations d'un programme. C'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/mémoire cache clé-valeur en mémoire), tournant sur mon ordinateur et mon serveur sous le compte nobody. Pourquoi ? Parce qu'il n'a simplement pas besoin d'autorisations 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 erronées, car elles supposent que nobody est un identifiant utilisateur "générique" anonyme/invité.

Dans le modèle de contrôle d'accès UNIX/Linux, les identifiants d'utilisateurs 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, surtout des serveurs, afin de limiter les dommages qu'un utilisateur malveillant qui aurait pris le contrôle pourrait causer." 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 autres.".
  • "Un exemple concret est memcached (une cache/base de données/clé en mémoire), tournant sur mon ordinateur et mon serveur sous le compte nobody. Pourquoi? Parce qu'il n'a besoin d'aucune permission et lui donner un compte avec accès en écriture aux fichiers serait simplement un risque inutile."

Le nom d'utilisateur nobody avec l'identifiant utilisateur 65534 a été créé et réservé à des fins spécifiques et ne devrait être utilisé que pour ces fins : comme espace réservé pour les utilisateurs et identifiants d'utilisateurs "non mappés" dans les exports de l'arborescence NFS.

Cela signifie que, sauf si la cartographie utilisateur/identifiant est configurée pour les exports de l'arborescence NFS, tous les fichiers dans l'export seront appartenir à nobody. Le but est d'empêcher tous les utilisateurs sur le système importateur d'accéder à ces fichiers (sauf s'ils ont des permissions "autre"), car aucun d'entre eux (sauf root) ne peut être/devenir nobody.

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

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

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

31voto

Joseph Holsten Points 4116

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

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 aurait pris le contrôle d'eux. 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 fournirait le contrôle de tous. La raison en est que les processus propriétaires de nobody ont la capacité de s'envoyer des signaux les uns aux autres et même de se déboguer mutuellement, ce qui leur permet de lire ou même de modifier la mémoire des autres.

Informations prises sur http://en.wikipedia.org/wiki/Nobody_(username).

17voto

Alaa Ali Points 29075

L'utilisateur nobody est créé par défaut lors d'une nouvelle installation (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'est membre d'aucun groupe privilégié et n'a aucune capacité excepté celles que tout autre utilisateur a (l'utilisateur et le groupe nobody n'ont pas d'entrée dans le fichier /etc/sudoers).

Il est courant d'exécuter des daemons en tant que nobody, notamment des serveurs, afin de limiter les dommages qu'un utilisateur malveillant pourrait causer s'il les contrôlait. Cependant, l'utilité de cette technique est réduite si plus d'un daemon est exécuté de cette manière, car alors prendre le contrôle d'un daemon fournirait le contrôle de tous. La raison en est que les processus détenus par nobody ont la capacité d'envoyer des signaux à d'autres et même de les déboguer, ce qui leur permet de lire ou même de 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 détenus par nobody peuvent s'envoyer des signaux les uns aux autres et même se ptracer mutuellement dans Linux, ce qui signifie qu'un processus détenu par nobody peut lire et écrire dans la mémoire d'un autre processus détenu par 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 remarquer, 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

Personne n'est un utilisateur spécial et un compte de groupe. Parce que c'est un nom d'utilisateur (et un nom de groupe) réel et peut être utilisé par des processus et même des utilisateurs, ce n'est pas littéralement personne. Par exemple, certaines configurations Apache ont nobody comme utilisateur/groupe propriétaire des fichiers et répertoires du site web. Le problème survient lorsque plusieurs processus pourraient 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