Можно ли предотвратить случайное монтирование и / или переформатирование диска или раздела пользователем 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, если я где-то установлю разрешения или добавлю себя в нужную группу?
Вместо того, чтобы делать все как 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
Это невозможно. По определению, «root» - это пользователь, которому разрешено делать все. Думаю об этом. Если бы что-то, что root не разрешал делать, это не было бы в корне иерархии привилегий.
Вы могли бы, вероятно, ввести ручные проверки, но это, вероятно, было бы не безопаснее, чем просто убедиться, что вы не делаете глупостей при использовании «sudo».