выйти из текущего пользователя из сценария

Флаг загрузки - активный раздел. И Windows загружает, ремонтирует или устанавливает раздел с флагом загрузки на диске, установленном для загрузки из BIOS. Вы должны изменить BIOS для загрузки из sda и установить флаг загрузки на sda1. Каждый диск может иметь один и только один флаг загрузки, но Windows устанавливает загрузочные файлы на диск и amp; раздел с флагом загрузки. Мы видели, что пользователи устанавливают на sdb, но поскольку BIOS был установлен в sda, загрузочный раздел 100MB перешел на sda. Окно будет установлено в одном разделе, но, как и отдельный раздел загрузки, в первую очередь, вы можете зашифровать основную установку. Но в загрузочном разделе также есть ремонтная консоль, поэтому, если она установлена ​​в одном разделе, обязательно сделайте repairCD или флешку.

1
задан 19 June 2015 в 14:57

2 ответа

Как правило, для запуска команды с правами 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
1
ответ дан 23 May 2018 в 19:41
  • 1
    Зачем вам делать sudo su -c "command" вместо sudo command напрямую? – muru 19 June 2015 в 12:59
  • 2
    @muru я бы не стал. OP хотел запустить оболочку и несколько команд в качестве другого пользователя, так вот что я ему дал. Заголовок говорит «текущий пользователь», поэтому я предполагаю, что OP не просто хочет root, но и других пользователей – Sergiy Kolodyazhnyy 19 June 2015 в 13:08
  • 3
    весь процесс состоит в том, чтобы получить интерактивную оболочку, чтобы OP мог запускать произвольные команды. Что касается других пользователей: sudo -u. – muru 19 June 2015 в 13:09
  • 4
    Я забыл об этом флаге. Хорошая точка зрения ! Я отредактирую свой ответ за секунду – Sergiy Kolodyazhnyy 19 June 2015 в 13:12

А logout в скрипте ничего не влияет, так как logout работает только для окон входа в систему, а сценарии обычно не запускаются как оболочки для входа.

Мне кажется, что вы «Зайти в систему через SSH (или что-то еще), работать как другой пользователь и немедленно выйти из системы. В этом случае просто отправьте сценарий, чтобы команды запускались в вашей текущей оболочке. Затем logout будет работать.

Или вы можете использовать exec, но в этом случае эффект logout не вступает в силу - logout потерпит неудачу, а конец сценарий просто заставляет его выйти. Различие без разницы, я полагаю.

Или, если вам кажется неудобным использовать . ./script, определите функцию с фигурными скобками:

switchuser () {
  echo "test script"
  sudo su -
  exit
}

Команды в фигурных скобках выполняются в текущая оболочка и команды в круглых скобках выполняются в подклассе. Добавьте это к своему .bashrc, тогда вы можете просто сделать:

switchuser
1
ответ дан 23 May 2018 в 19:41

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

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