26

Я только что заметил на своей машине с Ubuntu (файловая система ext3), что удаление разрешений на запись из файла не удерживает root от записи в него.

Это общее правило разрешений файлов UNIX? Или специфичный для Ubuntu? Или неверная конфигурация на моей машине?

# touch abc
# chmod ugo-w abc
# python
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> open('abc','w').write('AAA\n')
>>> 
# cat abc
AAA

Запись в файл не выполняется (как и ожидалось), если я делаю это из своей обычной учетной записи пользователя.

  1. Это нормальное поведение?

  2. Есть ли способ предотвратить случайную запись root в файл? (Желательно использовать обычные механизмы файловой системы, а не AppArmor и т.д.)

Пожалуйста, научите меня чему-то, что я совершенно определенно не понимаю.

ПРИМЕЧАНИЕ. Я понимаю, что root имеет полный контроль над системой и может, например, изменять разрешения для любого файла. Мой вопрос заключается в том , применяются ли установленные в настоящее время разрешения для кода, работающего от имени root Идея заключается в том, чтобы пользователь root не допустил случайной записи в файл.

ПРИМЕЧАНИЕ: я также понимаю, что для нормальной работы не следует входить в систему как root . Я только заметил это поведение и прошу вас об этом.

4 ответа4

41

1) Это нормальное поведение. root имеет постоянный доступ ко всем файлам.

2) Вы можете защитить файл даже от пользователя root (не намеренного действия, а случайного, в любом случае), используя

chattr +i filename.ext

То есть "изменить атрибуты добавить неизменным". Чтобы снять защиту:

chattr -i filename.ext

взгляните на man chattr для получения дополнительной информации

3

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

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

3
  1. Да, это нормально. Корень это бог.

  2. Да, есть способы предотвратить перезапись файлов пользователем root.

    • Установите неизменный бит с помощью chattr (+i set, -i unsets). Требуется доступ с правами root, работает только на ext2/ext3 (предположительно, тоже ext4), но в остальном практичен.
    • Не запускайте приложения как root. Нет корневых привилегий, нет перезаписи файлов. Используйте sudo для доступа к системным функциям.
    • Размонтируйте файловую систему. Нет смонтированных файлов, нет перезаписи файлов. [*]
    • Выключить компьютер. Нет электричества, нет перезаписи файлов.

Эти методы логически следуют из # 1. Как видите, последние два метода, как правило, бесполезны, так же как и защита Windows от вирусов путем отключения от сети, как правило, бесполезна. Вот почему root опасен. [+]

[*] Конечно, не исключая возможность "случайной" записи непосредственно на блочное устройство. Да, root может сделать это. Да, вы можете предотвратить это: отключите устройство.

[+] Это также то, откуда берутся эти мифы о BOFH. Они не все мифы.

0

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

Так что нет, скорее всего, вы бы только деактивировали учетную запись root, чтобы предотвратить ее неправильное использование.

С уважением

[примечание к себе: вы будете скромны ... может быть, вы не правы]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .