Я использую Ubuntu 17.10 с установленным Gnome Desktop. В моем файле rc.local я запускаю Java-программу, которая взаимодействует с TCP-сервером. Как только определенная последовательность будет получена этим приложением сокета, я хотел бы выйти из текущего запущенного рабочего стола и вместо этого запустить новый для полученного пользователя u. В то же время я не хочу , чтобы у должен ввести свой пароль, именно так , как вам не придется при смене пользователя к и выполняя su u с привилегиями суперпользователя.

Так как мой фоновый сервис запущен из rc.local, он имеет привилегии root.

В моем приложении я хотел бы выполнить набор команд для достижения этой цели, но я понятия не имею, что выполнять. Мой первый подход состоял в том, чтобы убить x, войти в tty2 как u и там запустить startx, но я не смог ни зарегистрировать указанного пользователя в данной оболочке tty, ни выполнить команду в данном tty с помощью команды. Я попробовал openvt -c 2 -f -s -u u -- startx как мне было предложено сделать в этой теме: Ubuntu входит в определенную оболочку tty как отдельный пользователь, но, похоже, это работает не так, как я ожидал.

Итак, вкратце: как запустить рабочий стол gnome для данного пользователя из rc.local минуя проверку пароля?

Я благодарен за любую помощь. С наилучшими пожеланиями, Галвестон01

0