Страница 1 из 1

Запуск без консоли приложения, требующего повышение привелегии для запуска

Добавлено: 10 авг 2018, 19:40
Sandralex
Есть установленная программа LinsSid но её нужно запускать только с помощью терминала и только с sudo. Вопрос: Как сделать так чтобы без помощи терминала по клику на ярлычке в меню запустить данную программу?
Снимок экрана от 2018-08-10 21-16-18.png
alexandr@X550CL:~$ inxi -Fxz
System: Host: X550CL Kernel: 4.15.0-30-generic x86_64 bits: 64 gcc: 7.3.0
Desktop: Cinnamon 3.8.8 (Gtk 3.22.30-1ubuntu1)
Distro: Linux Mint 19 Tara
Machine: Device: laptop System: ASUSTeK product: X550CL v: 1.0 serial: N/A
Mobo: ASUSTeK model: X550CL v: 1.0 serial: N/A
UEFI: American Megatrends v: X550CL.201 date: 08/02/2013
CPU: Dual core Intel Core i3-3217U (-MT-MCP-)
arch: Ivy Bridge rev.9 cache: 3072 KB
flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 7183
clock speeds: max: 1800 MHz 1: 903 MHz 2: 884 MHz 3: 885 MHz
4: 906 MHz
Graphics: Card-1: Intel 3rd Gen Core processor Graphics Controller
bus-ID: 00:02.0
Card-2: NVIDIA GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M]
bus-ID: 01:00.0
Display Server: x11 (X.Org 1.19.6 )
drivers: modesetting,nvidia (unloaded: fbdev,vesa,nouveau)
Resolution: 1366x768@59.99hz
OpenGL: renderer: GeForce GT 710M/PCIe/SSE2
version: 4.6.0 NVIDIA 390.77 Direct Render: Yes
Audio: Card Intel 7 Series/C216 Family High Def. Audio Controller
driver: snd_hda_intel bus-ID: 00:1b.0
Sound: Advanced Linux Sound Architecture v: k4.15.0-30-generic
Network: Card-1: Qualcomm Atheros AR9485 Wireless Network Adapter
driver: ath9k bus-ID: 03:00.0
IF: wlp3s0 state: up mac: <filter>
Card-2: Realtek RTL8111/8168/8411 PCIE Gigabit Ethernet Controller
driver: r8169 v: 2.3LK-NAPI port: d000 bus-ID: 04:00.2
IF: enp4s0f2 state: down mac: <filter>
Drives: HDD Total Size: 500.1GB (32.8% used)
ID-1: /dev/sda model: WDC_WD5000LPVX size: 500.1GB
Partition: ID-1: / size: 57G used: 11G (21%) fs: ext4 dev: /dev/sda3
ID-2: /home size: 398G used: 139G (37%) fs: ext4 dev: /dev/sda4
ID-3: swap-1 size: 4.10GB used: 0.00GB (0%)
fs: swap dev: /dev/sda2
RAID: No RAID devices: /proc/mdstat, md_mod kernel module present
Sensors: System Temperatures: cpu: 55.0C mobo: N/A gpu: 0.0:54C
Fan Speeds (in rpm): cpu: 2800
Info: Processes: 222 Uptime: 3:56 Memory: 2786.7/7863.1MB
Init: systemd runlevel: 5 Gcc sys: 7.3.0
Client: Shell (bash 4.4.191) inxi: 2.3.56
alexandr@X550CL:~$

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 19:44
rogoznik
Тут посмотри Контекстное меню ФМ nemo (Пост root #57935) там для контекстного меню, но для ярлыка аналогично

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 19:49
Sandralex
darkfenix писал(а):
10 авг 2018, 19:44
но для ярлыка аналогично
А может вы мне поможете?
[Desktop Entry]
Version=2.9
Name=LinSSID
GenericName=
Comment=Find local wireless attach points
Exec=linssid
Icon=/usr/share/pixmaps/linssid48.png
Terminal=false
Type=Application
Categories=Application;Network;
Name[en]=LinSSID
Name[en_US]=linssid
Keywords=Network;Wireless;WiFi;Monitor;Channel;Power

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 19:54
rogoznik
Сделай для своей программы как написано тут Запуск привилегированных приложений с pkexec (PolicyKit)
А после исправить эту строчку
Sandralex писал(а):
10 авг 2018, 19:49
Exec=linssid
так

Код: Выделить всё

Exec=pkexec linssid

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 19:56
Sandralex
darkfenix писал(а):
10 авг 2018, 19:54
Сделай для своей программы как написано тут Запуск привилегированных приложений с pkexec (PolicyKit)
Буду пробовать. Потом отпишусь.

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 20:15
root
Sandralex, в терминале вводите xed ~/.local/share/applications/linssid.desktop

Вставляете этот код:

Код: Выделить всё

[Desktop Entry]
Name=LinsSid
Comment=Графическая программа для поиска Wi-fi сетей
Keywords=wi-fi; linssid; 
Exec=gnome-terminal --hide-menubar -x sh -c 'pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY linssid'
Type=Application
Icon=gnome-dev-wavelan
Categories=Network;
NoDisplay=false
и сохраняете.
Затем chmod ugo+x ~/.local/share/applications/linssid.desktop
Готово, теперь приложение нах-ся в главном меню в разделе "интернет".

При таком раскладе
darkfenix писал(а):
10 авг 2018, 19:54
Сделай для своей программы как написано тут Запуск привилегированных приложений с pkexec (PolicyKit)
этим сексом заниматься не нужно.

-----------------
P.S.: если вас бесит окно терминала, можно создать отдельно скрипт, например linssid.sh:

Код: Выделить всё

#!/bin/bash
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY linssid
сделать его исполняемым с помощью chmod ugo+x путь_до_скрипта,
а в файле ~/.local/share/applications/linssid.desktop заменить строку Exec=gnome-terminal --hide-menubar -x sh -c 'pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY linssid' на Exec=путь_до_скрипта

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 20:28
Sandralex
Sandralex писал(а):
10 авг 2018, 19:56
Буду пробовать. Потом отпишусь.
Заработало. :thumbs:
root писал(а):
10 авг 2018, 20:15
этим сексом заниматься не нужно
Поздно, уже курю... Но всё равно спасибо.

Вы не являетесь владельцем и бла-бла-бла

Добавлено: 10 авг 2018, 21:34
colonel
Sandralex писал(а):
10 авг 2018, 19:40
Вы не являетесь владельцем и бла-бла-бла
Есть установленная программа LinsSid но её нужно запускать только с помощью терминала и только с sudo. Вопрос: Как сделать так чтобы без помощи терминала по клику на ярлычке в меню запустить данную программу?
ну вот опять и снова ... бла бла бла и может кому-то описание проблемы кажется более-менее ... ведь вывод inxi -Fxz пришпилен ( с кучей ненужной инфы )
но вот версия LinsSid которая установлена не указана
к вопросу Как сделать так чтобы без помощи терминала по клику на ярлычке в меню запустить данную программу? т в теме уже рассказали и даже ТС отписался что заработало

но вот по картинке из первого поста непонятно что мешало открыть ФМ Немо, зайти в каталог /usr/sbin/ с правами root(админа) и в свойсвах файлика linssid и менять там как нужно?

но собсно .... на РРА http://ppa.launchpad.net/wseverin/ppa/u ... l/linssid/ откуда скорее всего и была установлена програмка есть несколько версий
так таки в крайней версии linssid_3.6-1 если заглянуть в потроха дебки видно что, после установки программы

- в каталоге /usr/sbin/ - файлик собсно программы linssid

- в каталоге /usr/bin/ имеется файлик linssid-pkexec - для запуска с правами админа
вот с таким содержанием

Код: Выделить всё

 #!/bin/sh
pkexec "/usr/sbin/linssid" "$@"   
- в каталоге /usr/share/applications/ - файлик пункта меню(ярлыка) linssid.desktop для запуска программы вот с таким содержанием
во с таким содержанием

Код: Выделить всё

 #!/usr/bin/env xdg-open

[Desktop Entry]
Encoding=UTF-8
Name=LinSSID
GenericName=
Comment=Find local wireless attach points
Exec=linssid-pkexec
Icon=/usr/share/pixmaps/linssid48.png
Terminal=false
Type=Application
Categories=Network
Name[en]=LinSSID
Name[en_US]=LinSSID   


- и ещё есть файлик /usr/share/polkit-1/actions/com.warsev.pkexec.linssid.policy
с содержанием

Код: Выделить всё

  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
  <action id="com.warsev.pkexec.linssid">
    <message>Authentication is required to run LinSSID</message>
    <icon_name>linssid</icon_name>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/linssid</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>            
- ну и ещё всяко разное типа картинок и тд и тп.

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