Как остановить пользователя root от удаления файла?

8

Я хотел бы знать, могу ли я запретить пользователю root удалять файл. Является ли это возможным?

Aniruddha
источник
2
Выключить компьютер Невозможно что-либо сделать, чтобы остановить это!
SLM
2
Root - это то, что в мире Windows называется «superadmin», это учетная запись, предназначенная для специального использования, поскольку она может делать все, что захочет. Даже если вы не допустите, чтобы root что-то сделал, у вас не будет возможности это сделать. Люди должны получать root-доступ только в том случае, если ничего не может быть сделано с помощью permissions / acls / setuid /abilities / sudo или если это займет больше времени, чем оно того стоит. Если вас это беспокоит, напишите сценарий, чтобы сделать то, для чего им нужен root, и предоставьте им права sudo для этого сценария.
Братчли
почему ты хочешь сделать это?
Нильс

Ответы:

13

Нет, это невозможно Вы можете установить атрибут immutable с помощью chattr +i, который по крайней мере сделает это раздражающим и неочевидным, что нужно сделать, чтобы разрешить запись в файл, но они могут просто сбросить его снова. Кроме того, ваша файловая система должна поддерживать это и иметь включенную функциональность.

SELinux также может делать некоторые ограничения, но, опять же, его можно отключить.

Лучшее решение состоит в том, чтобы должным образом контролировать пользователей и программы, ограничивая их доступ и не позволяя им запускаться от имени root, если в этом нет крайней необходимости.

Крис Даун
источник
1
Но, конечно, SELinux и тому подобное могут предотвратить его отключение root. :-)
Хауке Лагинг
@HaukeLaging Root может с помощью различных конфигураций изменять произвольную память, поэтому с каждым барьером это только усложняется. Игра в кошки-мышки с root'ом на самом деле не имеет особого смысла (но да, теоретически можно было бы предотвратить это от root).
Крис Даун
@ChrisDown, SELinux, безусловно, может преобразовать root в «обычного пользователя» с разрешения. На самом деле это часть всей идеи.
vonbrand
1
@vonbrand Хотя это может быть то, что SELinux желает сделать, это трудно сделать на практике. Как я уже сказал, это теоретически возможно, но практически невероятно.
Крис Даун
@ChrisDown, очень возможно, но очень un-Unixy, так мало кто это делает. Пальцы слишком привыкли делать определенные вещи ... кроме того, это имеет смысл только для окончательно параноидальных конфигураций.
vonbrand
6

Как уже говорили другие, идея root заключается в том, что пользователю разрешено заставлять машину делать все, что может сделать машина. Таким образом, нет простого флага, который может предотвратить намеренное удаление пользователем root ( chattr +iможет предотвратить случайное удаление).

Но, несмотря на это, есть несколько решений:

  1. Поместите файл на файловый сервер и настройте файловый сервер так, чтобы он не разрешал удаление. Это работает, потому что локальный корень не является корневым на файловом сервере.
  2. Поместите файл на носитель WORM . Это работает, потому что оборудование не позволяет перезаписывать данные, поэтому данные защищены. (Перезаписать это не то, что может сделать аппарат.) Дешевые варианты - CD-R и DVD-R. Убедитесь, что ваш диск действительно не может перезаписать (уничтожить) уже написанные разделы. Также есть WORM SD карты.
derobert
источник
0

Нет.

Любой пользователь с привилегиями "sudo" или пользователь root может видеть и удалять все.

Однако в идеальной системе вам не придется беспокоиться об этом, потому что только один пользователь имеет супер-привилегии, и он будет использовать только тогда, когда это необходимо и всегда быстро.

RSFalcon7
источник
0

Это возможно при очень определенных обстоятельствах:

Вы можете отключить USB-накопитель, на котором произошли изменения, или отсоединить кабель Ethernet между компьютером и NAS. Но есть вероятность, что файл будет поврежден или останется недоступным, или и то, и другое.

Помимо аппаратных действий, вы можете восстановить файл из предыдущей резервной копии.

mouviciel
источник