Создайте сценарий оболочки, который выводит пароль, и сохраните его где-нибудь, например, /home/user/getpass.sh
. Затем запустите это:
SUDO_ASKPASS=/home/user/getpass.sh sudo -A timeout 4 strace -p 2829 -f -e trace=write -s 9999
Это можно сделать, добавив службу systemd для запуска сервера x11vnc. After=
LightDM запущен. Убедитесь, что служба запущена под пользователем lightdm
, чтобы не возникали надоедливые ошибки XAuthority No protocol specified
.
/etc/systemd/system/x11vnc@.service:
[Unit]
Description=Remote desktop service (VNC)
After=display-manager.service
[Service]
Type=simple
User=lightdm
ExecStart=/usr/bin/x11vnc -display %i
Restart=always
RestartSec=3
[Install]
WantedBy=graphical.target
After=display-manager.service
сообщает systemd, что диспетчер дисплея (LightDM )должен быть запущен, прежде чем эта служба может быть запущена.
Type=simple
говорит, что процесс не -разветвляется, команда под ExecStart
продолжает работать в течение всего срока службы VNC-сервера.
User=lightdm
говорит, что процесс под ExecStart
должен запускаться пользователем lightdm
, системным пользователем, целью которого является запуск X-клиентов на время запроса на вход в LightDM. Этот пользователь владеет X-сервером, поэтому, чтобы приложения запускались в приглашении входа в систему, вам нужно запускать их от имени этого пользователя.
ExecStart=/usr/bin/x11vnc -display %i
— это команда, которую нужно запустить, когда эта служба активирована, она говорит о запуске x11vnc
на дисплее %i
, что относится ко всему, что следует после символа «@» при запуске службы.
Restart=always
говорит, что всякий раз, когда служба не запускается, попробуйте еще раз.
RestartSec=3
просит подождать 3 секунды при каждой повторной попытке.
WantedBy=graphical.target
говорит запускать службу всякий раз, когда systemd запускает графическую систему (устаревший уровень запуска 5 ).
Чтобы загрузить юнит (заставьте systemd «увидеть» его ), выполните команду
# systemctl daemon-reload
Чтобы включить его, (запустите его при загрузке ), выполните команду
# systemctl enable x11vnc@<your-$DISPLAY-here>
где <your-$DISPLAY-here>
— X-дисплей, которому вы хотите предоставить доступ к VNC (обычно:0
)
Для его запуска выполните команду
# systemctl start x11vnc@<your-$DISPLAY-here>
То же самое о <your-$DISPLAY-here>
.
Обратите внимание, что вы можете запускать несколько независимых сервисов в одном и том же файле модуля, передавая разные дисплеи после «@». Например, вы можете запустить несколько серверов VNC на X-дисплеях :0
, :1
и :2
, на портах 5900
, 5901
и 5902
с x11vnc@:0
, x11vnc@:1
и x11vnc@:2
.