Почему для чтения устройства требуются права администратора?
Во-первых, здесь возникает пара проблем
монтирование
физического запоминающего устройства и разделов, которые оно содержит. Если файловая система основана на разрешениях, например ext2,3,4, тогда разрешения определяются для каждого файла.
Что касается того, почему вам потребуется, чтобы у пользователя были особые права администратора для подключения устройства, есть несколько причин, которые с большей вероятностью применимы к ситуациям корпоративного типа и с меньшей вероятностью применимы к персональным компьютерам - хотя это все еще может быть актуальным
Вы можете обойти проблему sudo, запустив весь сценарий как sudo, а затем используя sudo
, чтобы переключиться обратно на обычного пользователя внутри сценария для команд, которые вы не хотите запускать от имени пользователя root ( да, вы можете сделать это) например
файл: скрипт.sh
#!/bin/sh
# this dd command now works
dd if=<source> of=<target> bs=<byte size>
# normal cammand you want to run as "mathmaniac" user
sudo -u "MathManiac" bash -c "touch foo.bar"
Затем вы запускаете этот скрипт с помощью:
sudo ./script.sh
Другой быстрый и грязный, но обычно не рекомендуемый способ - просто поместить sudo перед командой внутри скрипта, когда интерпретатор встречает sudo
он остановит выполнение скрипта и попросит вас ввести пароль sudo перед продолжением.
с еще парой виртуальных машин я проследил проблему до того, как VMware добавила
svga.guestBackedPrimaryAware = "TRUE"
в файл VMX, что указывает на то, что VMware знает, что на виртуальной машине установлены инструменты VMware. Похоже, что когда этот флаг установлен, VMware не предоставляет более высокие разрешения через VBE, поэтому GRUB не может использовать более высокие разрешения. Удаление этой строки из файла VMX решает проблему для одной загрузки, но VMware добавляет ее обратно при выключении машины.
Такое поведение не возникает, если версия оборудования 10, но происходит 11 или 12. Чтобы навсегда решить проблему, удалите строку svga.guestBackedPrimaryAware = "TRUE"
из файла VMX, и измените строку virtualHW.version = "11"
или virtualHW.version = "12"
на virtualHW.version = "10"
.