Чому syslog є користувачем?


15

Коли я перевіряю /var/log, я виявляю щось дуже дивне

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

Зауважте, що власник першого чотирьох файлів журналу є syslog. Це дивно, адже в моїй системі є лише один користувач:

me@me~$ users
me

Чому ім'я файлу syslogможе бути користувачем?


6
Запевняю, що у вашій системі є набагато більше, ніж один користувач. Я знаю, ви маєте на увазі "людський користувач, пов'язаний з обліковим записом та домашнім каталогом", але поняття "користувач" для всіх систем ширше, ніж це.

Погляньте /etc/passwdколись. Я рахую 36 рольових користувачів, виключаючи root. Також спробуйте - man usersви припускаєте (неправильно), що робить команда.
chrylis -на страйк-

Відповіді:


26

Це стосується безпеки та дозволів на доступ до вашої системи.

І ні, у вас набагато більше користувачів, ніж просто ваш власний користувач. Є "корінь", "демон", "бін", "ігри", "ніхто" та "список".

Зробіть more /etc/passwdсписок для користувачів у вашій системі. Ви побачите безліч рядків з "/ usr / sbin / nologin". Це означає, що їх не можна використовувати як звичайний користувач із входом, як ваш власний користувач. Третій стовпець - ідентифікатор користувача. Усі ідентифікатори користувачів нижче 1000 - це псевдокористувачі. У вашого першого користувача sudo (того, хто встановив систему) 1000 за замовчуванням.

В основному, користувачеві syslog дозволяється використовувати /var/log/каталог, встановлений як каталог, що належить root . Щоб не потрібно компрометувати дозволи на каталог (тобто зменшити дозволи, щоб інші користувачі могли ним користуватися), цей користувач був створений.

Те ж саме робиться з користувачем для Apache та MySQL (ви побачите користувач та групу даних-даних та користувач та групу MySQL при їх встановленні), але він використовується для завантаження речей. Є група "діалот", яка використовується для доступу пристроїв до зовнішніх. Користувачів додають до цієї групи, щоб дозволити користувачеві користуватися цими пристроями. В іншому випадку ви отримаєте помилку, у якій відмовлено у дозволі. Це працює двома способами: забороняти доступ користувача означає видалення групи.


Це число не завжди було 1000. Я працював над системами, які мали досить довгу історію, що ідентифікатори реальних користувачів починалися з 20
kasperd

1
Я знаю, але Ubuntu завжди починається з 1000. Наприклад, Redhat починається з 500.
Rinzwind

Так, але користувачі не обов’язково створюються локально. У моєму випадку їх отримували через NIS, напевно, це було б LDAP.
kasperd

Справжні користувачі, які починають з 20 років, серйозно розіб'ють дистрофію на основі Debian. Ідентифікатори UID 0-99 для систем на базі Debian статично розподіляються проектом Debian для певного використання.
Пітер Зелений

1
@PaddyLandau / bin / false закриє логін, не повідомляючи про це. nologin повинен показати повідомлення "Цей обліковий запис наразі недоступний." (/etc/nologin.txt тримає це повідомлення)
Rinzwind

8

Служба syslog, яка записує повідомлення журналів, створені ядром та іншими службами, в різні файли журналів, консолі та / або інших напрямках, працює під власним спеціальним обліковим записом користувача. Так само роблять багато інших послуг. Це для реалізації принципу найменшої пільги :

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

У будь-якій операційній системі, схожій на unix (яка включає всі дистрибутиви GNU / Linux, такі як Ubuntu), ви можете найлегше призначити привілеї (це здебільшого право читати та / або писати з / до певних файлів або подібних до файлів речей, таких як вузли пристроїв) на основі користувачів та груп. Є й інші можливості, але вони часто є більш виснажливими та схильними до помилок, або вони працюють лише у конкретних контекстах.

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

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


usersКоманда , яку ви використовували, в відповідно до його сторінки людини , показує тільки тих, хто, які в даний час увійшли в систему . Оскільки користувач syslog є користувачем системи , він ніколи не входитиме, тому він ніколи не відображатиметься у цьому списку. Ви можете заглянути у файл /etc/passwdабо скористатися будь-яким іншим описаним тут методом, щоб отримати список усіх (людей та системних) користувачів вашої системи.


7

Тому що syslog не є файлом; це демон, який використовується системою для зберігання системних демонів і повідомлень програми (налагодження, помилки, попередження та інформації) у файли.

Прочитайте тут коротку історію syslog.

В інших дистрибутивах, наприклад, заснованих на Red Hat Linux, вихід системного журналу для системи зберігається у файлі під назвою /var/log/messages. Це залежить від конфігурації.

Як каже Rinzwind, з міркувань безпеки різні компоненти операційної системи працюють із конкретним користувачем, і кожен користувач має свої права. Наприклад, syslog принаймні має дозвіл на запис на/var/log папку.

У системі багато послуг, і зазвичай є користувачі для кожної послуги або для невеликої групи послуг. Наприклад, apache get www-data|httpd|apache. Зазвичай ці користувачі демонів не отримують доступ до Bash, щоб уникнути витоків безпеки.

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