Я пытаюсь запустить startx как пользователь без полномочий root на моем Ubuntu-сервере 16.04(Linux nanopim1 3.4.113-sun8i #16 SMP PREEMPT Tue Jun 13 14:15:57 CEST 2017 armv7l armv7l armv7l GNU/Linux) с установленным openbox на Это.

Я пытался поместить каждый из этих файлов по одному в /rc.local но не получилось! единственное, что работает, так это помещает startx без каких-либо дополнений в /etc/rc.local и он запускается от имени пользователя root!

su -l m -c startx

su -s /bin/bash -c startx m&

su - m -c startx

Также я попробовал другой способ, я создал файл здесь: /etc/systemd/system/autologin.service со следующим содержимым:

[Unit]
Description=Autologin service

[Service]
Type=fork
user=m
group=m
ExecStart=/usr/bin/startx
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Затем: sudo systemctl daemon-reload но снова не работает !!!

Работает только startx внутри /etc/local но я не хочу быть пользователем root !

1 ответ1

1

Версия диспетчера отображения (проще)

Обычно менеджер дисплеев должен показывать экран входа в систему и запускать сеанс пользователя. Если бы у вас был один, это был бы путь наименьшего сопротивления, чтобы настроить его на аутологин. Это широко используемое и, вероятно, хорошо протестированное и поддерживаемое решение. Вам нужно установить его на 1) autologin и 2) использовать предпочитаемый вами сеанс, но оба обычно поддерживаются обычными менеджерами отображения, поддерживаемыми вашим linux (lightdm, xdm и т.д.).

В Ubuntu 16.04 (не на сервере) у меня есть следующее в /etc/lightdm/lightdm.conf

[Seat:*]
autologin-guest=false
autologin-user=xyz
autologin-user-timeout=0

Вам нужно будет установить и, возможно, включить lightdm

apt-get install lightdm

Lightdm - менеджер дисплеев Ubuntu по умолчанию. Он не устанавливается по умолчанию в Ubuntu Server Edition, и вы будете устанавливать несколько пакетов, так что если вы хотите избежать их, потребуется более сложный ручной способ.

Способы настройки графического входа в систему на сервере Ubuntu лучше описаны здесь https://askubuntu.com/questions/53822/how-do-you-run-ubuntu-server-with-a-gui#788193, после чего вы можете настроить автологин, если хотите.

Вы можете выбрать тип сеанса с префиксом (openbox), установив для /home/username/.dmrc что-то вроде

[Desktop]
Session=openbox

Ручной (startx)

Я не знаю, что именно требуется для запуска x-сессии startx при загрузке, но я бы предложил разбить проблему на пошаговый процесс:

  1. вы говорите, что startx работает как root. Было бы неплохо убедиться, что вы можете войти в систему как пользователь root на консоли и начать сеанс x с:

    root@xyz # startx
    
  2. Убедитесь, что вы можете начать сеанс X, войдя в систему под вашим привилегированным пользователем.

    myuser@xyz $ startx
    
  3. Убедитесь, что вы можете запустить сеанс X как привилегированный пользователь, но, войдя в систему как пользователь root, опираясь на предыдущую команду:

    а) Используйте что-то вроде:

    root@xyz # su -l myuser -c startx
    

    введите команду, если вам нужно несколько аргументов:

    root@xyz # su -l myuser -c "startx arg1 arg2 .."
    

    б) Вы можете пропустить этот шаг, если установите пользователя в системном блоке.

  4. Сделай автозапуск.

    а) Добавьте команду (3a) в /etc/rc.local и перезагрузите компьютер.

    б) Используйте системный модуль, как вы описали, с командой, установленной в соответствии с 2/3. Чтобы проверить, вы можете использовать что-то вроде

    root@xyz # systemctl stop autologin  # make sure to reset service
    root@xyz # systemctl daemon-reload   # don't know if needed
    root@xyz # systemctl start autologin
    

    Как только это сработает, вам может понадобиться включить автозапуск или все, что нужно для systemd (не эксперт).

    root@xyz # systemctl enable autologin
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .