Замена нескольких сопоставленных последовательностей с помощью столбцов в файле руководства

Скорее всего, узлы устройства нового диска в новой системе не совпадают со старыми, которые вы клонировали вместе с разделом (разделами). Запустите аварийную систему (Knoppix или любую другую живую систему), определите, какой узел в /dev используется для какого раздела, смонтируйте корневой раздел и настройте /etc/fstab и конфигурацию загрузчика (вероятно, в /boot, или на загрузочном разделе, если он у вас есть).

Если схема узлов устройств/разделов кажется идентичной, возможно, вам не хватает некоторых основных узлов в /dev, которые необходимы до того, как devtmpfs будет смонтирован в /dev; создайте их из системы спасения, например. например,

mknod <mountpoint>/dev/console c 5 1

Вы должны быть в состоянии определить тип/идентификаторы узла и их разрешения из /dev аварийной системы. Я не совсем уверен, но думаю, что /dev/null и еще один или два других тоже необходимы, но это может варьироваться в каждом дистрибутиве.

4
10.06.2019, 13:10
2 ответа

В вашем скрипте две проблемы:

1 )Вы забыли пробелы в тестовой команде[`whoami` = myuser]

2 )Из-за раскрытия переменной "$@" в два шага цитирование теряется.

В моей системе работает следующее:

[ `whoami` = myuser ] || exec sudo -S -u myuser bash -- "$0" "$@"
3
27.01.2020, 20:48

Если весь сценарий должен быть запущен конкретным пользователем, то я оставлю на усмотрение пользователя, запускающего сценарий, возможность изменить его на правильное имя пользователя любым способом, который он увидит. подходят (либо через su, sudo, либо каким-то другим способом ).

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

Сценарий по-прежнему может проверять, что он запускается нужным пользователем, очевидно:

if [ "$USER" != "correctuser" ]; then
    echo 'Must be run by "correctuser"' >&2
    exit 1
fi

Затем обычный пользователь запускал скрипт, используя

sudo -u correctuser./script.sh -e dev -v 1.9

в то время как пользователь root может захотеть сделать

su correctuser -c./script.sh -e dev -v 1.9
3
27.01.2020, 20:48

Теги

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