Який найбезпечніший спосіб дозволити користувачеві читати доступ до файлу журналу?


21

Моя програма вимагає доступу до читання /var/log/messages, що належить користувачеві та групі root. Який мінімальний рівень експозиції необхідний, /var/log/messagesщоб моя програма могла прочитати його?

Наразі мій план полягає в тому, щоб змінити право власності на групу /var/log/messagesна нову групу та додати до неї root та мого користувача програми, але це також надасть додатку для запису програми /var/log/messages.

ОС: Centos 5.5

Відповіді:


7

Не потрібно додавати корінь до групи, оскільки вона матиме доступ через приватні дані користувача, просто дайте групі прочитати будь-яку групу, яку ви вирішите. Не забудьте внести зміни і з логротатом, інакше зміни групи будуть видалені щоночі.


Де розміщені сценарії логротату?
gAMBOOKa

1
/etc/logrotate.d/ - папка для розбитих сценаріїв logrotate. / var / log / messages знаходиться в /etc/logrotate.d/syslog. Вам потрібно буде перемістити / var / log / messages у власний файл всередині /etc/logrotate.conf, а потім, використовуючи щось на зразок 'create 0640 root new_group', сказати йому, щоб створити файл належним чином.
rfelsburg

Вам потрібно буде перемістити / var / log / messages у власний файл всередині /etc/logrotate.d/
Massimo

17

Просто розширити трохи вищезазначені відповіді - це справжній випадок використання у світі. Я запускаю програму аналізу журналу підприємства Splunk у вікні Redhat. Він працює під користувачем Splunk та Splunk. Це перешкоджає доступу до журналів у / var / log, оскільки вони доступні лише root (або адміністратор sudo)

Для того, щоб дозволити доступ лише для читання лише для запиту, я використовував деякі ACL та модифікований логротат, щоб зберегти його.

Ви можете вручну встановити ACL за допомогою

sudo setfacl -m g:splunk:rx /var/log/messages

Це не збережеться, оскільки logrotate не повторно застосує налаштування ACL, тому для більш постійного рішення я додав правило logrotate для скидання ACL. Я додав файл ..

/etc/logrotate.d/Splunk_ACLs

з

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

Перевірте стан файлу ACL за допомогою

$ getfacl /var/log/messages

Для отримання додаткової інформації про ACL див. Https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/


також опубліковано на сплюнкі відповіді answer.splunk.com/answers/4253/…
nick fox

1
Зауважте, що для прокрутки не потрібен дозвіл на виконання файлів журналів, просто читайте.
rojs

@nickfox Це весь вміст того, /etc/logrotate.d/Splunk_ACLsщо ви там розмістили? Насправді вам не потрібно вказувати будь-які шляхи для logrotate для обробки біту postrotate?
Дейл Андерсон

хммм, не думаю так. Я не хотів змінювати існуючі конфігурації logrotate для системних журналів, а також не хотів замінювати їх власними. Таким чином, користувацька модифікація для плавки існує незалежно. Дозволяє розгортати пакунок або маріонетку тощо. Для чого призначені каталоги /app.d/. Звичайно, я можу помилитися, це було більше року тому, як я це зробив
нік лисиця

1
Лише зауваження, що припускає, що якщо ви використовуєте параметр X (як, наприклад, з великої літери X, а не x), він додасть Execute лише у тому випадку, якщо файл є каталогом або вже має дозвіл на виконання для якогось користувача
steoleary

5

Ваш план прийнятний, і в "традиційній" схемі дозволів Unix це найкращий шлях.
Інший варіант полягає в тому, щоб системний журнал переадресував цікаві повідомлення до іншого файлу (що дозволяє уникнути надання користувачу програми доступу до будь-якого чутливого, що може бути /var/log/messages).

Якщо вам не здається, що ви пов'язані традиційною схемою дозволів користувача / групи / іншого, ви також можете використовувати POSIX ACL (інші, можливо, кращі хаоти / інформацію, доступні через Google), щоб надати користувачеві програми доступ лише для читання /var/log/messages- це трохи більш дрібнозернисто і не ризикує випадково помістити когось іншого в групу програми та надати їм доступ до речей, які вони не зможуть бачити.


2

Я раніше setfaclце робив, щоб отримати доступ до mail.logфайлу для клієнта, але вам також не потрібно буде дотримуватися команди у logrotate.confфайлі, щоб повторно встановити ACL після обертання журналів, наприклад:

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

Зауважте, що я тільки що це налаштував, і не перевіряв, але, хоч це буде опубліковано тут, я можу побачити, чому він би працював, хтось мене виправить, якщо я помиляюся.


0

Ви можете використовувати ACL для цього. Це дозволяє встановлювати конкретні додаткові правила доступу для конкретних користувачів та файлів.


-1

як тільки ви налаштували ACL, як казали інші, замість того, щоб усі ваші правила ACL вводити в конфігурацію postrotate, ви можете swith logrotate використовувати copytruncate, а не створювати новий файл журналу кожен раз

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