видалення дозволу на запис не перешкоджає root запису у файл


29

Щойно я помітив на своїй машині Ubuntu (файлова система ext3), що видалення дозволів на запис з файлу не захищає коренів від його запису.

Це загальне правило дозволів на файли UNIX? Або специфічно для Ubuntu? Або неправильна конфігурація на моїй машині?

# touch abc
# chmod ugo-w abc
# пітон
Python 2.6.4 (r264: 75706, 7 грудня 2009, 18:45:15) 
[GCC 4.4.1] на linux2
Введіть "довідка", "авторське право", "кредити" або "ліцензія" для отримання додаткової інформації.
>>> відкрити ('abc', 'w'). write ('AAA \ n')
>>> 
# кішка абс
ААА

Запис у файл не вдається (як очікувалося), якщо я це роблю зі свого звичайного облікового запису користувача.

  1. Це нормальна поведінка?

  2. Чи є спосіб запобігти випадковому запису root у файл? (Переважно, використовуючи звичайні механізми файлової системи, а не AppArmor тощо)

Будь ласка, навчіть мене про щось, чого я напевно не розумію.

ПРИМІТКА. Я розумію, що root має повний контроль над системою і може, наприклад, змінювати дозволи на будь-який файл. Моє запитання - чи застосовуються в даний час встановлені дозволи на код, що працює як root . Ідея полягає в тому, щоб користувач root не дав їй випадково записати файл.

ПРИМІТКА. Також я розумію, що не слід входити в систему як корінь для звичайних операцій. Я щойно помітив цю поведінку і прошу вас про це.

Відповіді:


44

1) Це нормальна поведінка. root має rw доступ до всіх файлів у будь-який час.

2) Ви можете захистити файл навіть від root (не навмисно, але випадково, все одно), використовуючи

chattr +i filename.ext

Тобто "зміни атрибутів додають незмінні". Щоб зняти захист:

chattr -i filename.ext

подивіться man chattrдля отримання додаткової інформації


@brice: велике спасибі безпосередньо стосується мого питання. не знав про chattr.
laramichaels

моїй системі, здається, для запуску потрібен кореневий доступ chattr. чи є в режимі користувача спосіб встановлення таких атрибутів?
крякати кіхот

1
... хоча це чудова відповідь на питання, "може rootтак добре захистити файл, що навіть він не може його видалити"!
шарлатаний кіхот

4
Точніше (у будь-якому випадку з Linux у будь-якому випадку), root має CAP_DAC_OVERRIDEможливість дозволяти йому ігнорувати ACL та дозволи.
grawity

1
FYI, еквівалент цього в OS X полягає sudo chflags <s|u>chg <file>в тому, щоб зробити його незмінним для системи або користувача, відповідно, і sudo chflags no<s|u>chg <file>для встановлення незмінного прапора для системи або користувача відповідно.
ВВП2

3
  1. Так, це нормально. Корінь - бог.

  2. Так, є способи запобігти перезапису файлів root.

    • Встановити незмінний біт за допомогою chattr( +iвстановлює, -iзнімає). Потрібен кореневий доступ, працює лише на ext2 / ext3 (імовірно, ext4 теж), але в іншому випадку є практичним.
    • Не запускайте програми як root. Ні кореневих приватних файлів, ні перезаписування файлів. Використовувати sudoдля доступу до системних функцій.
    • Демонтуйте файлову систему. Жодних змонтованих файлів, жодних файлів перезапису. [*]
    • Вимкніть комп’ютер. Ні електрики, ні перезаписування файлів.

Ці методи логічно випливають з №1. Як бачите, останні два способи, як правило, не корисні, так само як захист Windows від вірусів шляхом відключення мережі, як правило, не корисно. Ось чому корінь небезпечний. [+]

[*] Звичайно, знижка можливості "випадкового" запису безпосередньо на блоковий пристрій. Так, root може це зробити. Так, ви можете запобігти цьому: відключіть пристрій.

[+] Тут також походять ці міфи про BOfH. Вони не всі міфи.


@ ~ quack: метод бриса набагато практичніший, ніж три списки. :)
laramichaels

@ ~ quack: моє запитання дало зрозуміти, що я розумію проблеми із запущеними командами як корінь.
laramichaels

3

Ви також можете обмежити доступ до файлу для кореневого користувача, скориставшись ядром Linux "Можливості": http://www.securityfocus.com/infocus/1400

Існує також можливість використання SE-Linux або якогось іншого виправлення ядра, щоб зробити деякі файли незмінними навіть для root.


0

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

Тож ні, швидше за все, ви б лише відключили кореневий рахунок, щоб запобігти його поганому використанню.

З повагою

[зверніть увагу на себе: ви будете покірними ... можливо, ви помиляєтесь]

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