У меня есть сценарий оболочки, который устанавливает несколько программ с помощью sudo apt-get, затем открывает vncserver, а затем устанавливает дополнительные компоненты.
Это работает:
#!/bin/sh
vncserver
>./my_script.sh
Но это не работает:
#!/bin/sh
sudo apt-get update
vncserver
>./my_script.sh
И это не работает:
#!/bin/sh
vncserver
>sudo ./my_script.sh
Когда это не работает возвращает ошибку vncserver: Wrong type or access mode of /home/username/.vnc
.
Кто-то на этот вопрос сказал, что это известная проблема. Итак, как я могу запустить vncserver в my_script?
Можно использовать sudo -u
вернуться некорневому пользователю для конкретной команды.
Напр.:
$ cat myscript.sh
#!/bin/sh
whoami
sudo -u $SUDO_USER whoami
затем
$ sudo ./myscript.sh
[sudo] password for steeldriver:
root
steeldriver