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

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

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

sudo su nobody

su nobody

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

111
задан 13 April 2017 в 15:23

6 ответов

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

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

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

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

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

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

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

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

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

91
ответ дан 13 April 2017 в 15:23

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

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

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

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

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

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

Вики-запись тоже очень неправильная.

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

30
ответ дан 13 April 2017 в 15:23

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

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

Информация взята из http: // en.wikipedia.org/wiki/Nobody_(username)[11113556ght.

30
ответ дан 13 April 2017 в 15:23

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

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

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

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


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

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

 alaa  @ aa-lu: ~ $ grep никто / etc / passwd
никто: x: 65534: 65534: никто: / несуществующий: / bin / sh
 

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

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

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

17
ответ дан 13 April 2017 в 15:23

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

3
ответ дан 13 April 2017 в 15:23

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

Это взято из systemd-nspawn, в частности, параметр --bind mount:

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

systemd-nspawn

0
ответ дан 10 October 2019 в 15:18

Другие вопросы по тегам:

Похожие вопросы: