Какова цель пользователя "никто"?

После того, как я прочитал Перечислите всех пользователей-людей Я заметил, что в моей системе Ubuntu есть учетная запись пользователя с именем "никто".

Также я заметил, что я могу войти в эту учетную запись из терминала, используя следующую команду и свой пароль:

sudo su nobody

su nobody

Это совсем не возражает против меня, но я хочу знать, какова цель этого пользователя? Создается ли он по умолчанию при новой установке Ubuntu или создается путем установки определенного пакета?

Он предназначен для запуска вещей, которые не требуют каких-либо специальных разрешений. Обычно он зарезервирован для уязвимых служб (httpd и т.д.), Так что, если они будут взломаны, они нанесут минимальный ущерб остальной части системы.

Сравните это с запуском чего-то как реальный пользователь, если бы эта служба была скомпрометирована (веб-серверы иногда используются для запуска произвольного кода), она бы работала от имени этого пользователя и имела доступ ко всему, что было у пользователя. В большинстве случаев это как плохо как получение корня.

Вы можете прочитать немного больше о пользователе nobody в Ubuntu Wiki:

Чтобы ответить на ваши последующие вопросы:

Почему я не могу получить доступ к этой учетной записи с помощью su nobody?

sudo grep nobody /etc/shadow покажет вам, что ни у кого нет пароля, и вы не можете su без пароля учетной записи. Самый чистый способ - это sudo su nobody вместо. Это оставит вас в довольно опустошенном sh ракушка.

Можете ли вы дать конкретный пример когда указано использовать эту учетную запись?

Когда разрешения не требуются для работы программы. Это особенно заметно, когда на диске никогда не будет никакой активности.

A реальный мир примером этого является memcached (кэш/ база данных / объект с ключом-значением в памяти), находящийся на моем компьютере, и мой сервер работает под учетной записью nobody. Почему? Потому что ему просто не нужны какие-либо разрешения, и предоставление ему учетной записи, у которой был доступ на запись к файлам, было бы просто ненужным риском.

Пользователь nobody зарезервирован только для NFS.

Приведенные выше ответы довольно ошибочны, потому что они предполагают, что nobody это "общий" анонимный / гостевой идентификатор пользователя.

В модели управления доступом UNIX / Linux идентификаторы пользователей анонимного / гостевого стиля не существуют, и это плохие предложения:

  • "обычно для запуска демонов как nobody, особенно серверы, чтобы ограничить ущерб, который может быть нанесен злоумышленником, получившим над ними контроль."из-за того, что следует:"Однако полезность этого метода снижается, если таким образом запускается более одного демона, потому что тогда получение контроля над одним демоном обеспечит контроль над ними всеми".
  • "Примером этого в реальном мире является memcached (кэш/ база данных/ объект с ключом-значением в памяти), сидящий на моем компьютере, и мой сервер работает под nobody счет. Почему? Потому что ему просто не нужны какие-либо разрешения, и предоставление ему учетной записи, у которой был доступ на запись к файлам, было бы просто ненужным риском."

То nobody имя пользователя с идентификатором пользователя 65534 было создано и зарезервировано для определенной цели и должно использоваться только для этой цели: в качестве заполнителя для "не сопоставленных" пользователей и идентификаторов пользователей при экспорте дерева NFS.

То есть, если только сопоставление пользователя и идентификатора не настроено для экспорта дерева NFS, все файлы при экспорте будут отображаться как принадлежащие nobody. Цель этого состоит в том, чтобы запретить всем пользователям в системе импорта доступ к этим файлам (если у них нет "других" разрешений), поскольку ни один из них (кроме root) может быть/стать nobody.

Поэтому это очень плохая идея использовать nobody для какой-нибудь другая цель, потому что его цель - быть именем пользователя / идентификатором пользователя для файлов, которые не должны быть доступны никому.

Запись в Вики тоже очень неверна.

Практика UNIX/Linux заключается в создании новой учетной записи для каждого "приложения" или области приложений, которым требуется отдельный домен управления доступом, и для никогда не используйте повторно nobody за пределами NFS.

Во многих вариантах Unix "никто" - это обычное имя учетной записи пользователя, которая не владеет файлами, не входит ни в какие привилегированные группы и не имеет никаких возможностей, кроме тех, которые есть у любого другого пользователя.

Обычно демоны запускаются как никто, особенно серверы, чтобы ограничить ущерб, который может быть нанесен злоумышленником, получившим над ними контроль. Однако полезность этого метода снижается, если таким образом запускается более одного демона, потому что тогда получение контроля над одним демоном обеспечит контроль над ними всеми. Причина в том, что процессы, не принадлежащие никому, имеют возможность посылать сигналы друг другу и даже отлаживать друг друга, позволяя им считывать или даже изменять память друг друга.

Информация, взятая из http://en.wikipedia.org/wiki/Nobody_ (имя пользователя).

То nobody пользователь создается по умолчанию при новой установке (проверено на Ubuntu Desktop 13.04).

Во многих вариантах *nix, nobody это обычное имя учетной записи пользователя, которая не владеет файлами, не входит в привилегированные группы и не имеет никаких возможностей, кроме тех, которые есть у любого другого пользователя (the nobody пользователь и группа не имеют никакой записи в /etc/sudoers файл).

Это обычное дело для запуска демоны как nobody, особенно серверы, чтобы ограничить ущерб, который может быть нанесен злоумышленником, получившим над ними контроль. Однако полезность этого метода снижается, если таким образом запускается более одного демона, потому что тогда получение контроля над одним демоном обеспечит контроль над ними всеми. Причина в том, что nobody-принадлежащие процессы имеют возможность посылать сигналы друг другу и даже отлаживать друг друга, позволяя им считывать или даже изменять память друг друга.

Источник: Википедия - Никто (имя пользователя)


То nobodyпринадлежащие процессы могут посылать сигналы друг другу и даже отслеживать друг друга в Linux, что означает, что никому не принадлежащий процесс может читать и записывать память другого никому не принадлежащего процесса.

Это примерная запись в nobody пользователь в /etc/passwd файл:

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

Как вы можете заметить, в nobody пользователь имеет /bin/sh в качестве оболочки входа в систему и /nonexistent в качестве домашнего каталога. Как следует из названия, /nonexistent каталог по умолчанию не существует.

Если вы параноик, вы можете установить nobodyоболочка по умолчанию как /usr/sbin/nologin и так, откажите в входе по ssh для nobody пользователь.

Источник: LinuxG.net - Пользователь Linux и Unix Nobody

никто не является специальной учетной записью пользователя и группы. Поскольку это фактическое имя пользователя (и имя группы) и может использоваться процессами и даже пользователями, оно не является буквальным никто. Например, в некоторых конфигурациях Apache никто не указан в качестве пользователя/группы, которой принадлежат файлы и каталоги веб-сайта. Проблема возникает, когда несколько процессов могут использовать одного и того же пользователя, например каталоги NFS и веб-сервер.

Незначительная поправка к 'Пользователь nobody зарезервирован только для NFS.- отвечай. То nobody пользователь также используется для непривилегированных контейнеров с привязкой монтирования в настоящее время.

Это взято из systemd-nspawn, в частности, из опции --bind mount.:

Обратите внимание, что когда этот параметр используется в сочетании с --private-users, результирующие точки монтирования будут принадлежать пользователю nobody. Это связано с тем, что монтирование и его файлы и каталоги продолжают принадлежать соответствующим пользователям и группам хоста, которые не существуют в контейнере, и, таким образом, отображаются под подстановочным UID 65534 (никто). Если такие привязки создаются, рекомендуется сделать их доступными только для чтения, используя --bind-ro=.

systemd-nspawn

Обратите внимание, что когда вы входите в систему, используя свой пароль, вы используете свой пароль для шага sudo, а не для учетной записи nobody (и что причина, по которой это работает, заключается в том, что суперпользователь может подать в суд на кого угодно без необходимости вводить свой пароль (хотя, как упоминалось ниже, я полагаю, по крайней мере, на RH-производных, если ничейная оболочка не установлена в / sbin /nologin, вы все равно не сможете войти в систему, даже используя суперпользователя (он же root).

Сейчас это происходит по умолчанию (18.04+?). возврат “sudo su nobody” _ Эта учетная запись в настоящее время недоступна._ потому что оболочка для пользователя nobody имеет значение /usr/sbin/nologin (getent passwd nobody).

@sarnold - пожалуйста, посмотрите мой комментарий к ответу, на который, как я полагаю, вы намекаете. Это довольно плохой ответ, поскольку в нем нет аргументов или ссылок на источники. Кроме того, это противоречит всему, что я знаю об учетной записи nobody и о том, как работает NFS: с включенным root_squash он будет ** сопоставлять root с nobody ** в удаленных системах. Это более или менее прямо противоположно тому, что говорится в этом ответе