Обмежити доступ до файлу лише для додавання


12

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

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

Наступне не працює:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

Чи є для цього якесь інше рішення? Дякую за підказки


Ви впевнені, що це XFS? chattr +aпрацює для мене тут (3.2 ядра). Зауважте, що вам потрібно користуватися рутом chattr( $запит передбачає, що не є суперпользователем), хоча ви отримаєте інше повідомлення про помилку, якби chattr +aйого підтримували, а ви не були root.
Стефан Шазелас


Які варіанти кріплення на перегородці? Можливо, він може зберігати його за допомогою xattr, для чого може знадобитися відповідний варіант кріплення? (У сукупності для XFS про це теж багато не згадується ...)
Герт ван ден Берг

Це закрито на SF, тому я залишаю його відкритим тут
Michael Mrozek

Відповіді:


8

chattrУтиліта написана для Ext2 / Ext3 / ext4 , файлових систем. Він випромінює ioctls у файлах, тож вирішувати, що з ними робити, вирішувати саме за основою файлової системи. Драйвер XFS у новіших ядрах Linux підтримує той самий FS_IOC_SETFLAGSioctl, що і ext [234], для управління прапорцями, такими як лише додавання, але ви можете запускати старе ядро ​​там, де його немає (CentOS?). Спробуйте скористатися xfs_ioутилітою:

echo chattr +a | xfs_io test.log

Зауважте, що для XFS, як для ext [234], тільки root може змінити прапор, який додається лише для того, щоб додати додаток (точніше, вам потрібна CAP_LINUX_IMMUTABLEможливість).


1

У вас є дозволи на це? Від man 1 chattr:

Файл із набором атрибутів `a 'може бути відкритим лише в режимі додавання для запису. Лише суперпользователь або процес, що володіє функцією CAP_LINUX_IMMUTABLE, може встановити або очистити цей атрибут.


0

Крім того, ви можете досягти того ж за допомогою SELinux , ймовірно, він увімкнено та працює, якщо ви використовуєте сумісний дистрибутив Red Hat. Це працює у будь-якій файловій системі, SELinux блокує процеси виконання заборонених операцій.

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

У мене є приклад того, як написати правило лише для файлів, що додається, у цій розмові: https://www.youtube.com/watch?v=zQcYXJkwTns

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