LINUX.ORG.RU

Запуск программы от другого пользователя.

 ,


1

2

Не получается запустить программу (application/x-executable) от другого пользователя.

Эмулятор терминала запущен под сеансом основного пользователя, который состоит в группе pesok.

Результат выдачи ls по этому файлу:

-rwxrwxr-x 1 pesok pesok 98428912 авг 10 01:14 /home/pesok/Загрузки/Telegram/Telegram

Ввожу команды:

su pesok
cd /home/pesok/Загрузки/Telegram/
./Telegram

И тут он выдает ошибку:

No protocol specified
QXcbConnection: Could not connect to display :0
./Telegram[0xe839df]
./Telegram[0x17fc263]
./Telegram(_ZN15google_breakpad16ExceptionHandler12GenerateDumpEPNS0_12CrashContextE+0x396)[0x1c3e4e6]
./Telegram(_ZN15google_breakpad16ExceptionHandler13SignalHandlerEiP9siginfo_tPv+0xa8)[0x1c3e828]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f9f9b51f390]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f9f9ac5a428]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f9f9ac5c02a]
./Telegram[0xbbdf79]
./Telegram[0x211ca1d]
./Telegram(_ZN15QXcbIntegrationC1ERK11QStringListRiPPc+0x2c1)[0x20ef571]
./Telegram[0x20ee41d]
./Telegram[0x2897163]
./Telegram[0x25fbc8f]
./Telegram[0x25fcc85]
./Telegram[0x2b47701]
./Telegram[0x25fe91c]
./Telegram[0x22e0279]
./Telegram(_ZN4Core7SandboxC1EN3gsl8not_nullIPNS_8LauncherEEERiPPc+0x22)[0x1833fd2]
./Telegram(_ZN4Core8Launcher18executeApplicationEv+0x44)[0x185ebc4]
./Telegram(_ZN4Core8Launcher4execEv+0x3c)[0x185ecbc]
./Telegram(main+0x25)[0xbf4475]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f9f9ac45830]
./Telegram[0xbf740c]
Аварийный останов (сделан дамп памяти)

Когда тоже самое делаю в эмуляторе терминала под сеансом пользователя pesok, то все запускается нормально.

P.S

Ниже описана паранойя и домыслы, которые вполне вероятно основываются на моих плохих знаниях, вкупе с желанием чтобы все лежало на своих полочках.

На андроиде телеграмм постоянно запрашивает доступ ко всему. Например к записи звука, хотя я пользуюсь им только для чата. Это меня немного раздражает и кажется, что в других системах он будет так же вести. Если разрешу доступ, то разве есть гарантия, что андроид не допустит телеграмм к кондефициальным данным? Да, клиент с открытым исходным кодом. Но а вдруг при релизе обновления его плохо проверят и он будет творить на смартфонах все, что вздумается?

Клиент с апдейтером скачан с официального сайта Телеграмма. Вот если я запущу телеграмм под основным пользователем linux, то получается он будет иметь права доступа к файлам, которые принадлежат основному пользователю. Тут так же может прилететь обновление с официального сайта. Обновление, которое может дискредитировать компанию, но при этом нанести мне ущерб.

Чтобы избежать этого, то можно поступить так: Владелец программы «Телеграмм» pesok, который не имеет доступа к файлам основного пользователя. Основной пользователь член группы pesok и может открывать данную программу и закидывать туда свои файлы.



Последнее исправление: Plaranum (всего исправлений: 3)

наверное

DISPLAY=:0 ./Telegram

Ещё копай в сторону firejail, но вообще заизолировать графическое приложение толком на линуксе будет нетривиально.

Gary ★★★★★
()
Ответ на: комментарий от targitaj

В терминале нормально авторизуется под «pesok» с помощью команды su pesok. Попробовал как ты написал и команда не сработала.

Plaranum
() автор топика
Ответ на: комментарий от Gary

О песочниц думал, но подумалось, что в ubuntu есть готовое решение.

Plaranum
() автор топика
Ответ на: комментарий от ValdikSS

Программа пытается обратиться к определенному окну, которое не доступно в сеансе основного пользователя? Для этого надо изменить код программы, чтобы подменить какое-то id окна. Наверное даже подменить id окна у пользователя pesok. В любом случаи, чтобы это понимать мне надо как минимум вкурить работу с X Window System. Программа песочница выглядит уже более подходящим вариантом.

Plaranum
() автор топика
Ответ на: комментарий от Plaranum

Программа пытается открыть запущенные X, но не может этого сделать, т.к. X Cookie доступны только для пользователя, от которого запущены X.

Такое будет с любой графической программой, если её запустить через sudo или su от имени другого пользователя.

Как вариант, можно попробовать pkexec.

ValdikSS ★★★★★
()

Этот ваш Телеграм распространяется в виде flatpak. Установите его, и запретите ему в манифесте все что можно и не можно. Относительно безопасный вариант.

anonymous
()
Ответ на: комментарий от ValdikSS

Запросило пароль от пользователя, но вылетела ошибка о том, что не хватает прав.

Plaranum
() автор топика
Ответ на: комментарий от anonymous

Поставил пакет с портала flathub. После чего поменял права:

sudo flatpak override --nofilesystem=home --filesystem="/home/pesok/Рабочий стол/Telegram":rw org.telegram.desktop

Проверил права командой

flatpak info --show-permissions org.telegram.desktop

Вывод:

[Context]
shared=network;ipc;
sockets=x11;wayland;pulseaudio;
devices=dri;
filesystems=xdg-config/kdeglobals:ro;xdg-run/dconf;xdg-download;/home/pesok/Рабочий стол/Telegram;~/.config/dconf:ro;!home;

[Session Bus Policy]
org.kde.StatusNotifierWatcher=talk
com.canonical.AppMenu.Registrar=talk
com.canonical.Unity=talk
org.freedesktop.portal.Fcitx=talk
org.freedesktop.Notifications=talk

По всей видимости !home; говорит о том, что в папку home закрыт доступ.

Спасибо за помощь.

Plaranum
() автор топика
Ответ на: комментарий от Plaranum

В запущенном телеграмме смог загрузить в чат картинку из домашней папки. Причем загружено не из разрешенной папки «/home/pesok/Рабочий стол/Telegram». Что я сделал не так?

Plaranum
() автор топика
Ответ на: комментарий от anonymous

Похоже, что XDG это пользовательские директории.

Ввел команду

sudo flatpak override --nofilesystem=xdg-download

Вывод же показывает, что он закрыт:

[Context] shared=network;ipc; sockets=x11;wayland;pulseaudio; devices=dri; filesystems=xdg-config/kdeglobals:ro;xdg-run/dconf;!xdg-download;/home/pesok/Рабочий стол/Telegram;~/.config/dconf:ro;!home;

Файл в чат из пользовательской папки загрузился как и в прошлый раз.

Может в программу внутри песочницы что-либо можно загрузить без всяких проблем, а вот из песочницы все эти запрещающие правила работают? Тогда не понятно как это проверить.

Plaranum
() автор топика
Ответ на: комментарий от Plaranum

Я никогда не пользовался Телегой. Скажите, они для выбора файла для загрузки испльзует стандартный диалог kde/gnome?

anonymous
()
Ответ на: комментарий от anonymous

Не знаю как узнать какой диалог там используется.

Вот команду ввел:

tail -100 /var/log/syslog

Там появляются ошибки при запуске телеги, где упоминается gtk. Скорее всего он и для выбора и загрузки так же используется.

Plaranum
() автор топика
Ответ на: комментарий от Plaranum

как узнать какой диалог там используется

На вид?)

Если используется стандатрный диалог, то это нормально, что файлы загружаются и сохраянются. Существует механизм организации доступа из приложения в контейнере к разным системным ресусам, но _только_ при помощи стандартных средств. То есть, без вашего явного согласия нажатием кнопки Open в диалоги выбора файла, приложение ни к чему доступа не получит.

Это стандартный механизм в flatpak, чтобы приложениями можно было худо-бедно пользоваться, не разрешая им доступ ко всему и сразу в манифесте, а выдавая разрешение каждый раз с санкции пользователя. Можете погуглить flatpak portals, если интересно больше. Это, конечно, можно запретить, но это вредная практика, которая побуждает добавлять в filesystems все новые и новые разрешения.

anonymous
()

Обновление, которое может дискредитировать компанию, но при этом нанести мне ущерб

Т.е., если не ткнете сами Open, то не может. И 100 пользователей заводить не надо, не надо перекидывать данные между ними. Если волнует доступ к микрофону, не забудьте там де отрубить ему доступ к pulseaudio.

Если жк вы не доверяете пользователю, то это уже другой вопрос.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.