Флаг загрузки - активный раздел. И Windows загружает, ремонтирует или устанавливает раздел с флагом загрузки на диске, установленном для загрузки из BIOS. Вы должны изменить BIOS для загрузки из sda и установить флаг загрузки на sda1. Каждый диск может иметь один и только один флаг загрузки, но Windows устанавливает загрузочные файлы на диск и amp; раздел с флагом загрузки. Мы видели, что пользователи устанавливают на sdb, но поскольку BIOS был установлен в sda, загрузочный раздел 100MB перешел на sda. Окно будет установлено в одном разделе, но, как и отдельный раздел загрузки, в первую очередь, вы можете зашифровать основную установку. Но в загрузочном разделе также есть ремонтная консоль, поэтому, если она установлена в одном разделе, обязательно сделайте repairCD или флешку.
Как правило, для запуска команды с правами root sudo достаточно.
#!/bin/bash
echo test
sudo whoami
Если вы настаиваете на использовании su, по какой-то причине вы можете использовать флаг -c:
#!/bin/bash
echo test
sudo su -c whoami
И вот результат в обоих случаях:
$ ./test.sh
test
[sudo] password for xieerqi:
root
Если вы хотите ввести корневую оболочку, используйте sudo -i
serg@ubuntu[/home/xieerqi]
$ sudo -i
# date
Fri Jun 19 13:16:15 EEST 2015
# whoami
root
# exit
serg@ubuntu[/home/xieerqi]
$
С su:
serg@ubuntu[/home/xieerqi]
$ sudo su -c /bin/bash
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
root@anaconda:/home/xieerqi# date
Fri Jun 19 12:41:06 EEST 2015
root@anaconda:/home/xieerqi# echo blah
blah
root@anaconda:/home/xieerqi# exit
exit
serg@ubuntu[/home/xieerqi]
$ whoami
xieerqi
Если вы хотите запускать команды как другой пользователь, а не только root, вы можете использовать sudo -u username command
$ sudo -u testuser whoami
testuser
То же самое с su:
serg@ubuntu[/home/xieerqi]
$ sudo su -c bash testuser
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
testuser@anaconda:/home/xieerqi$ whoami
testuser
testuser@anaconda:/home/xieerqi$ exit
exit
serg@ubuntu[/home/xieerqi]
$ whoami
xieerqi
А logout в скрипте ничего не влияет, так как logout работает только для окон входа в систему, а сценарии обычно не запускаются как оболочки для входа.
Мне кажется, что вы «Зайти в систему через SSH (или что-то еще), работать как другой пользователь и немедленно выйти из системы. В этом случае просто отправьте сценарий, чтобы команды запускались в вашей текущей оболочке. Затем logout будет работать.
Или вы можете использовать exec, но в этом случае эффект logout не вступает в силу - logout потерпит неудачу, а конец сценарий просто заставляет его выйти. Различие без разницы, я полагаю.
Или, если вам кажется неудобным использовать . ./script, определите функцию с фигурными скобками:
switchuser () {
echo "test script"
sudo su -
exit
}
Команды в фигурных скобках выполняются в текущая оболочка и команды в круглых скобках выполняются в подклассе. Добавьте это к своему .bashrc, тогда вы можете просто сделать:
switchuser