Предотвратить случайный низкоуровневый доступ (форматирование) системного диска от рута?

Можно ли предотвратить случайное монтирование и / или переформатирование диска или раздела пользователем root во время нормальной работы системы?

Например, это случилось со мной некоторое время назад:

  • При нормальной работе у меня /dev/sda1 смонтировано как / и /dev/sdb1 смонтировано как /var/disk2.
  • В один конкретный день я переписывал привод большого пальца (/dev/sdc) с различными изображениями LiveCD три или четыре раза, пытаясь починить другой компьютер.
  • Один из тех раз, когда я размонтировал /dev/sdb1 вместо /dev/sdc1 и по ошибке переписал sdb1 новой файловой системой.

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

Мне бы хотелось иметь возможность заблокировать себя из /dev/sda и /dev/sdb в любое время, когда я запускаю живую операционную систему из /dev/sda1 (в отличие от загрузки с LiveCD, которую я бы никогда не хочу накладывать никаких ограничений.)

Обновление в ответ на loevborg (спасибо): Я думаю, что мне действительно нужен полный неограниченный доступ к /dev/sdc (или любому другому устройству, которое может отображаться при подключении блочного устройства USB) от имени пользователя без полномочий root. Возможно ли это - стереть, создать файловую систему, смонтировать - как не-root, если я где-то установлю разрешения или добавлю себя в нужную группу?

1
задан 2 May 2011 в 23:07

2 ответа

Вместо того, чтобы делать все как root, вы можете использовать права доступа к файлам. Файлы /dev/sd* можно рассматривать как обычные файлы, которым могут быть назначены права доступа к файлам.

  • Вы вошли как ubuntu, который является членом группы ubuntu
  • Вы должны быть в состоянии написать /dev/sdc1
  • Вы необходимо иметь возможность читать из /dev/sdb1, но не записывать в него
  • По умолчанию разрешения для файлов /dev/sd* установлены на 660 (rw-rw----), принадлежащих root с группой root

Решение: дать группе ubuntu права на запись в /dev/sdc1 и прочитать в /dev/sdb1:

sudo chmod 640 /dev/sdb1
sudo chgrp ubuntu /dev/sdc1 /dev/sdb1

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

Я нашел это поведение полезным при восстановлении данных с диска (операция только для чтения), не беспокоясь о том, что команда записывает на него.

Дополнительная информация: /dev/sdc это диск. /dev/sdc1, /dev/sdc2, ... являются разделами на этом диске. Разрешения не наследуются, поэтому даже если вы можете читать из /dev/sdc напрямую, это не означает, что вы можете читать из /dev/sdc1. Если ваши диски помечены, вы можете избежать ошибок, проверив, что /dev/sdc1 действительно действительно ваш USB-диск, показав список устройств-меток:

ls -lA /dev/disk/by-label
0
ответ дан 2 May 2011 в 23:07

Это невозможно. По определению, «root» - это пользователь, которому разрешено делать все. Думаю об этом. Если бы что-то, что root не разрешал делать, это не было бы в корне иерархии привилегий.

Вы могли бы, вероятно, ввести ручные проверки, но это, вероятно, было бы не безопаснее, чем просто убедиться, что вы не делаете глупостей при использовании «sudo».

0
ответ дан 2 May 2011 в 23:07

Другие вопросы по тегам:

Похожие вопросы: