Intereting Posts
Сравните два столбца и вставьте значение в следующий столбец Xen загружает старое ядро ​​после обновления Документ с отступом здесь вызывает синтаксическую ошибку Как начать сервис в systemd сразу после cryptsetup? Не удалось получить беспроводные драйверы Broadcom, работающие в Arch Linux Отключить инверсию цвета для отмеченной панели в tmux Ограничение для каждого процесса грязных байтов без замедления всей системы Что будут выпускать выпуски Debian после того, как у них закончились персонажи Toy Story? Используйте SED или AWK для перемещения строки в новый столбец и строку Fedora 28 работает на сервере Apache и в приложении Laravel Удалить старую установленную версию приложения при установке новой версии из исходного кода? Java на FreeBSD CUPS отказывает в доступе к принтеру Превращение стандартного вывода в одну команду Как настроить nginx для динамического чтения папок, учетных записей пользователей / доменов?

Почему у вас много счетов? Я единственный пользователь

Я запускаю настольную систему Ubuntu 12.04. Пока я только установил некоторые программы (у меня есть права sudo).

  1. Когда я проверяю список пользователей в системе, я вижу длинный список, например, более 20 пользователей – когда были созданы эти пользователи (например, демон, sys, sync, games, pulse и т. Д.)? Как они связаны с установкой новых программ?

  2. Если я запускаю программу в своей системе, она должна работать с моим UID. Но при выполнении ps я вижу много других программ, работающих с разными UID (например, root, daemon, avahi, syslog, colord и т. Д.) – как эти программы запускались с разными UID?

Учетные записи пользователей используются не только для реальных пользователей, но и для запуска системных служб, а иногда и для владельцев системных файлов. Это делается потому, что для разделения ресурсов пользователей (процессов, файлов и т. Д.) И разделения ресурсов системных служб требуются те же механизмы под капотом.

Программы, которые вы запускаете, обычно запускаются с вашим идентификатором пользователя. Это только системные демоны, которые запускаются под их собственным аккаунтом. Либо файл конфигурации, указывающий, когда запускать демон, также указывает, какой пользователь должен его запустить, либо демон запускает непривилегированную учетную запись после запуска. Некоторые демоны требуют полных административных прав, поэтому они запускаются под учетной записью root . Многим демонам нужен только доступ к определенному аппаратным устройствам или к определенным файлам, поэтому они запускаются под отдельной учетной записью пользователя. Это делается для обеспечения безопасности: таким образом, даже если в одной из этих служб есть ошибка или неправильная настройка, она не может привести к полной атаке системы, поскольку злоумышленник будет ограничен тем, что может сделать эта служба, и не будет возможность перезаписывать файлы, отслеживать процессы и т. д.

В Ubuntu при установке системы создаются идентификаторы пользователей в диапазоне 0-99. 0 – корень; многие из них в диапазоне 1-99 существуют только по историческим причинам и сохраняются только для обратной совместимости с некоторыми локальными установками, которые их используют (несколько дополнительных записей не мешают). Идентификаторы пользователей в диапазоне 100-999 создаются и удаляются динамически, когда установлены или удалены службы, для которых требуется выделенный идентификатор пользователя. Диапазон от 1000 до и для пользователей или любой другой учетной записи, созданной системным администратором. То же самое касается групп.

Я полагаю, вы находите этот список пользователей, проверяя /etc/passwd ? Это абсолютно нормально – «пользователи» служат для переноса набора разрешений, полезных для блокировки не только «реальных пользователей», но и программ для определенных областей вашей системы и отслеживания изменений, которые они изменили (одна и та же концепция с группами).

Я добавил один из моих файлов Raspberry Pi /etc/passwd ниже для вашей справки; вы заметите пользователя ntop внизу этого файла, созданного программой ntop (мониторинг сети). Аналогично sshd , сообщения об ошибках gnats и т. Д.

 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh pi:x:1000:1000:,,,:/home/pi:/bin/bash sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin ntp:x:102:104::/home/ntp:/bin/false statd:x:103:65534::/var/lib/nfs:/bin/false messagebus:x:104:106::/var/run/dbus:/bin/false usbmux:x:105:46:usbmux daemon,,,:/home/usbmux:/bin/false lightdm:x:106:109:Light Display Manager:/var/lib/lightdm:/bin/false smmta:x:107:110:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false smmsp:x:108:111:Mail Submission Program,,,:/var/lib/sendmail:/bin/false Debian-exim:x:109:113::/var/spool/exim4:/bin/false ntop:x:110:115::/var/lib/ntop:/bin/false 

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

Когда были созданы эти пользователи?

В тех случаях, о которых вы говорили, они были созданы при установке системы. Эти учетные записи пользователей являются обычными, некоторые из них относятся к десятилетиям. Они также стандартизированы. Стандартная база Linux разделяет их на:

  • требуемые стандартные учетные записи пользователей, root , bin и daemon ; а также
  • дополнительные стандартные учетные записи пользователей, lp , sync , shutdown , halt , mail , news , uucp , operator , man и nobody

Другие учетные записи пользователей, которые упоминаются здесь, – pulse , avahi , colord и Debian-exim (чтобы выбрать один из файла паролей py4on) – привести нас к следующему вопросу.

Как они связаны с установкой новых программ?

Нестандартные учетные записи пользователей создаются и уничтожаются «сценариями поддержки» для различных пакетов, поскольку эти пакеты устанавливаются и очищаются. Учетная запись пользователя будет создаваться так называемым скриптом-сценаристом postinst , который запускает getent чтобы узнать, существует ли учетная запись пользователя, и useradd если это не так. Теоретически он будет удален с помощью так называемого postrm сценариста postrm , запускающего userdel .

На практике учетные записи пользователей для пакетов не удаляются. В вики (qv) Fedora объясняется, что это будет сопряжено с большими трудностями. См. Ошибка Debian # 646175 для примера этого обоснования в действии, где принято решение просто не удалять rabbitmq запись пользователя rabbitmq при rabbitmq пакета, чтобы решить проблему с dæmon, которая продолжает работать под эгидой этой учетной записи.

Как эти программы начинались с разных UID?

В Unix и Linux процесс, выполняемый под эгидой суперпользователя, может изменить учетную запись пользователя на что-то еще и продолжить выполнение одной и той же программы, но обратное не разрешено. (Необходимо использовать механизм set-UID.)

Система управления dæmon работает как суперпользователь. Его данные конфигурации указывают, что определенные dæmons выполняются под эгидой определенных учетных записей пользователей:

  • С помощью System 5 rc скрипт в /etc/init.d использует вспомогательный инструмент, такой как start-stop-daemon и его опция --chuid .
  • С помощью сервис-менеджера setuidgid сценарий run вызывает setuidgid , s6-setuidgid , chpst или runuid с именем учетной записи пользователя. Есть примеры этого в https://unix.stackexchange.com/a/179798/5132, которые устанавливают учетную запись пользователя nagios .
  • С выскочкой в ​​файле задания есть setuid stanza, который указывает учетную запись пользователя. Это не особенно мелкозернистая, и иногда требуется то, что описано на https://superuser.com/a/723333/38062 .
  • С systemd в файле служебной единицы есть параметр User= , определяющий учетную запись пользователя.

Когда система управления dæmon запускает процесс как dæmon, эти механизмы отбрасывают привилегии суперпользователя, так что процесс dæmon продолжает выполняться под эгидой непривилегированной учетной записи пользователя.

Существует довольно длинное объяснение, почему хорошее управление dæmon осуществляется таким образом. Но вы не спрашивали, почему; только когда, как, и откуда. ☺ Очень короткая премия, поэтому:

Операционные системы Unix и Linux изолируют процессы, выполняемые под эгидой разных учетных записей пользователей друг от друга. Исторически сложилось так, что если бы кто-то смог взять на себя dæmon, который работал как суперпользователь, можно было бы сделать все, что угодно. С другой стороны, dæmon, который работает под эгидой непривилегированной учетной записи, может получить доступ только к файлам, каталогам, устройствам и процессам, которые может использовать эта непривилегированная учетная запись. Таким образом, система взаимно не доверяющих программ dæmon, работающих под эгидой разных учетных записей пользователей и неспособных получить доступ / управлять друг другу (внутренними, надежными) файлами / каталогами / процессами / устройствами, гораздо труднее взломать.

дальнейшее чтение

  • Джонатан де Бойн Поллард (2014). Бок о бок смотрите сценарии запуска и сервисные единицы. , Часто задаваемые ответы.
  • Обработка учетных записей в скриптах Maintainer . Debian wiki.
  • Упаковка: UsersAndGroups . Вики-проект Fedora.
  • «Глава 15. Пользователи и группы» . Стандартная базовая спецификация Linux 2.1 . 2004. Группа бесплатных стандартов.
  • «9.2 Пользователи и группы» . Руководство по политике Debian . 2014-11-22. Список рассылки политики Debian.
  • «37.3. Стандартные пользователи» . Руководство по развертыванию RHEL . 11-е издание. 2013. Red Hat.
  • Пользователи и группы . Arch wiki.
  • Кэрол Гурвиц и Скотт МакПик (2001-02-12). Отменить коренные демоны! , DOI 10.1.1.120.3567 .