Чому в / etc / passwd є людина


23

Я помітив, що у моєму /etc/passwdфайлі є запис для користувача користувача . Яка мета цього користувача?

man:x:6:12:man:/var/cache/man:/bin/sh

Відповіді:


31

man(команда, а не користувач) - це довідка. Програми надають підручні сторінки у своїх пакунках, але manвони повинні знати, де вони знаходяться, а також яку допомогу вони надають. Для прискорення роботи - тому manпід час введення не виконується пошук всієї файлової системи man <command>- ці довідкові сторінки індексуються в базу даних командою, що називається mandb.

У Ubuntu mandbзберігаються індекси в GNU gdbm базі даних за адресою /var/cache/man/index.db(та декількома мовними версіями в одному каталозі). Це база даних хешування ключових значень, що не відрізняється від пам’ятної пам’яті, або сотня інших реалізацій за подібними ідеями. Це двійкове, легке та швидке. Я наведу приклад того, як грати з ним наприкінці.

Цю індексацію планується проводити щодня в Ubuntu /etc/cron.daily/man-db. Весь скрипт працює як корінь і виконує деяке очищення спочатку, але в кінці ми бачимо, що mandbвін працює як manкористувач:

# --pidfile /dev/null so it always starts; mandb isn't really a daemon,
# but we want to start it like one.
start-stop-daemon --start --pidfile /dev/null \
                  --startas /usr/bin/mandb --oknodo --chuid man \
                  $iosched_idle \
                  -- --no-purge --quiet

Це не міняє групу, через що всі права власності на групу /var/cache/manдосі залишаються кореневими.

Але чому взагалі mandbпрацює як інший користувач? Він (можливо) може працювати так само добре, rootале він обробляє вхід з різних джерел (дивіться manpath). Працюючи як власний користувач, ізолює систему від процесу вибуху - або ще гірше - від експлуатації неправильно сформованими, зіпсованими чи шкідливими сторінками.

Найгірше, що може статися, вплине лише на manіндекс сторінок. Бу-ху. Ви можете підтвердити це чимось на зразок:

sudo -u man find / -writable 2>/dev/null

І ви можете використовувати такий підхід, щоб побачити, скільки шкоди може заподіяти будь-який користувач у системі. Це гарна ідея перевірити свої файлові дозволи (наприклад, я лише дізнався, що будь-який користувач може видалити всю мою музичну колекцію, наприклад).


Ви можете зазирнути до бази даних за допомогою accessdb. Ось кілька випадкових записів:

$ accessdb | shuf -n3
fpurge -> "- 3 3 1380819168 A - - gz purge a stream"
fcgetlangs -> "FcGetLangs 3 3 1402007131 A - - gz Get list of languages"
ipython -> "- 1 1 1393443907 A - - gz Tools for Interactive Computing in Python."

Хоча це не зовсім зрозуміло з вищезазначеного, там насправді є поля, розділені вкладками:

<name> -> <ext> <sec> <mtime> <ID> <ref> <comp> <whatis> 

Детальніше про фактичний вміст поля ви можете прочитати в технічному посібнику .


3
Можливо, ви можете додати пояснення, чому у цієї служби (та багатьох інших) є власний користувач, а вони не просто запускаються як root або щось таке?
Томас Падрон-Маккарті

@ ТомасПадрон-Маккарті Досконалий?
Олі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.