Как избежать использования sudo для определенных программ под xrdp на Raspbian?
Справочная информация: Я смотрю на версию Scratch Raspberry Pi для Фонда. В основном это вопрос программирования на Smalltalk, разработки виртуальных машин и некоторых очень неприятных моментов с использованием сценариев оболочки.
Прямо сейчас я сбит с толку и раздражен тем, что, по-видимому, может быть разрешением Unix или связанной с этим проблемой при использовании xrdp для подключения к Pi с любой другой машины. Я знаю, что это не проблема напрямую с Squeak VM, так как Google обнаружил довольно много других приложений, имеющих похожие проблемы. Часть моей проблемы в том, что я недостаточно знаю об этой области, чтобы действительно знать, что искать, чтобы сузить круг вопросов.
Итак, описание проблемы - текущая система Scratch работает на виртуальной машине Squeak Cog (см. https://github.com/OpenSmalltalk/opensmalltalk-vm), которая, помимо прочего, использует pthreads и должна установить приоритет потока. Раньше это было чем-то, что требовало модификации некоторого конфига, но у более новых (Raspbian) ядер с этим проблем нет.
За исключением случаев использования xrdp, что является болью, потому что я в основном работаю с моим Pi через xrdp к своему iMac. Чтобы справиться с этим, я должен добавить "sudo -E", который приемлем для разработчика, но не очень хорош для обычных пользователей. У меня есть похожая проблема с тривиальной командой копирования файлов, используемой также в процессе создания виртуальной машины, и она не использует никаких потоков или приоритетной работы, но требует от меня sudo make
в окне терминала.
В качестве эксперимента я попытался использовать thinvnc, чтобы посмотреть, может ли что-то работать лучше. После прочтения полной инструкции по установке ( https://www.raspberrypi.org/documentation/remote-access/vnc/) и добавления сценария автозапуска init.d и т. Д. Казалось, что нам повезло, потому что sudo не не нужно! Ура! Конечно, я был немного разочарован, по-видимому, более медленной обработкой дисплея, но не берите в голову.
К сожалению, это даже не близко к концу истории. Недавно я работал над завершением поддержки оконной системы ввода композиции X, которая позволяет японским и другим языковым пользователям, не относящимся к латинице1, более легко вводить символы. Это довольно умно, как только вы установили iBus, Anthy, много шрифтов и выполнили некоторые настройки. Но, хотя он отлично работает на Pi с прямым отображением и отлично работает на xrdp -дисплее (конечно, с sudo, позволяющим запускать Scratch в первую очередь), он просто не будет работать через vnc с или без Судо.
Google показывает большое количество других приложений, имеющих странные проблемы с соответствующим вызовом XCreateIC() (см. https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/unix/vm-display-X11/sqUnixX11.c:1659 для нашего использования), но я ничего не могу установить для соединения с VNC. Чтобы добавить к раздражению, комбо-окно выглядит нормально для терминалов!
Для суммирования прямого отображения - нет проблем ни с приоритетом pthread, ни с окном компоновки xrdp - требуется sudo для приоритета pthreads, но окно компоновки работает нормально, vnc - не требуется sudo для приоритета pthread, но окно компоновки не работает.
Что мне нужно: помочь выяснить, что вызывает эти проблемы и, возможно, даже решения. Было бы неплохо настроить xrdp на отсутствие sudo.
1 ответ
К моему восхищению коллега нашел то, что кажется очень эффективным ответом на это; кажется, что файл /etc/pam.d/common-session нуждается в добавлении одной строки. Отредактируйте файл и добавьте требуемый сеанс pam_limits.so. Это позволяет всем приложениям, которые у меня ранее были проблемы с разрешением, запускаться под xrdp. Другой пользователь Scratch, у которого была похожая проблема с использованием PuTTY, сообщает, что он также решил эту проблему.