Каковы отношения между эмулятором терминала, оконным менеджером и X-серверными процессами?

Это способ упаковки приложения. На большинстве * nix по умолчанию непривилегированный пользователь не может прослушивать порт

Все Linux 2.2+, Solaris 10+ и FreeBSD позволяют пользователям без полномочий root прослушивать порты. ниже 1024, но не по умолчанию. Большинство из них согласились с использованием root , поэтому он остается в использовании.

Помимо доступа для привязки к привилегированному порту, вам необходимо убедиться, что пользователь, запускающий nginx, имеет доступ ко всем нужным файлам. Вам, вероятно, не нужно заходить так далеко, как это , а просто установите правильные разрешения для файлов / каталогов. Вам также необходимо убедиться, что сценарии запуска не делают ничего хитрого, вроде изменений ulimit (как всегда кажется, что mysql).

Возможности Linux

setcap и getcap позволяют изменять или просматривать возможности cap_net_bind_service для исполняемого файла. Это будет действовать для всех, кто запускает двоичный файл.

setcap cap_net_bind_service=+ep /usr/sbin/nginx

SELinux предоставляет возможность настраивать и контролировать возможности на уровне пользователя.

Системные настройки Freebsd

Настройки зарезервированного порта являются глобальными для системы

sysctl net.inet.ip.portrange.reservedhigh=0
sysctl net.inet.ip.portrange.reservedlow=0

Привилегии Solaris

Solaris обеспечивает точный контроль привилегий на уровне пользователя. Это привилегии для apache, но они, вероятно, будут работать и для nginx.

/usr/sbin/usermod -K defaultpriv=basic,proc_exec,proc_fork,net_privaddr nginx

1
05.12.2018, 06:20
2 ответа

xlsclients— это простое приложение, в котором перечислены свойства WM_CLIENT_MACHINEи WM_COMMAND, установленные в верхних окнах (, т.е. окна, которые являются дочерними элементами корневого окна или имеют свойство WM_STATE).

Это почти все, что он делает. Нет никакой магии.

Например, я использую свой собственный оконный менеджер, который открылInputOnly(невидимое )окно как дочернее по отношению к корневому окну, чтобы использовать его для ewmh 's wm проверьте . Если я установлю для него эти два свойства, произойдет ожидаемое;-)

$ xprop -id 0x400001 -f WM_CLIENT_MACHINE 8s -set WM_CLIENT_MACHINE kgbvax
$ xprop -id 0x400001 -set WM_COMMAND /sbin/reboot
$ $ xlsclients
kgbvax  /sbin/reboot
...

Но чтобы ответить на ваш вопрос:

how do a terminal emulator process and a window manager (e.g. openbox) process communicate? Is a terminal emulator process a client of a window manager process, based on Unix domain socket?

Они оба являются клиентами сервера X11 и обычно взаимодействуют, отправляя клиентские сообщения с помощью XSendEvent (3 )и устанавливая свойства в окнах. Протокол описан в icccm и ewmh . Обратите внимание, что у клиента нет окна; любой клиент может выполнять любые операции с любым окном, включая, помимо прочего, установку и получение любого свойства из него.

2
27.01.2020, 23:23

Я не знаю, что означает APUE, и гугление не дает ничего полезного, но я могу объяснить это для эмуляторов терминала, таких как xterm. В то время как xtermиспользует только одну оболочку плюс PTY (, например. левая часть картинки ), ничто не мешает эмуляторам терминала делать это несколько раз, т.е. в подокнах с вкладками, так что, возможно, APUE является такой программой.

1 )Эмулятор терминала — это просто обычное X-приложение, и, как таковое, взаимодействует с оконным менеджером X так же, как любое другое X-приложение :опосредованно через X-сервер. Детали этого сложны и включают свойства X, события X и другие вещи. Они не связаны с какими-либо отношениями между клиентом -и сервером (, поскольку соединение является непрямым )или сокетом домена Unix.

2 )Любое приложение X, включая эмулятор терминала, является клиентом сервера X через сокет домена Unix, если они работают на одном компьютере, или через сеть, если они этого не делают. И да, xlsclientsперечисляет все клиентские приложения X-сервера, к которому он подключается, как следует из названия.

3 )Оконный менеджер X, такой как openbox, является просто приложением X, которое выполняет несколько специальных команд при подключении к серверу X. Таким образом, оконный менеджер X является клиентом X сервера (, если вы не настаиваете на забавном определении «клиент» ), и взаимодействует так же, как описано выше. Если xlsclientsне перечисляет его в разделе «клиенты», это потому, что X-сервер обрабатывает его особым образом. На самом деле я не уверен в механике того (, что xlsclientsможет его отфильтровать, или сам X-сервер может отфильтровать ).

Редактировать

X-клиент — это (по крайней мере, согласно моему мнению, )все, что открывает соединение с X-сервером, даже если оно не отображает окно. Таким образом, xlsclientsявляется X-клиентом (, пока он работает ), как и другие команды, запрашивающие X-сервер.

«Управляющий терминал» — понятие совершенно независимое. Вы можете запускать X-приложения, которые (по крайней мере изначально )имеют управляющий терминал :Это обычный случай, если вы запускаете их через командную строку. Но приложения X также могут быть запущены без управляющего терминала, например. из диспетчера отображения X или из других клиентов X, таких как оконный менеджер, которые были запущены без управления терминалом.

1
27.01.2020, 23:23

Теги

Похожие вопросы