Как запустить скрипт за пределами терминала с администраторскими полномочиями?

После загрузки netbeans 10.0 я учил создания файла на рабочем столе запускать его, Так, я не должен работать sudo /home/abc/Downloads/netbeans/bin/netbeans каждый раз.

Я создал маленький сценарий для запуска netbeans в администраторских полномочиях.

#!/bin/sh
cd /home/abc/Downloads/netbeans/bin/ 
echo "password" | sudo -S ./netbeans

Я поместил этот файл в /usr/bin/ и

созданный netbeans.desktop файл следующим образом

[Desktop Entry]
Version=1.0
Type=Application
Terminal=False
Exec=/usr/bin/netbeans
Name=Netbeans
Comment=Java IDE
Icon=/home/abc/Downloads/netbeans/nb/netbeans.icns

путем ввода

netbeans в терминале это открывает netbeans в административных привилегиях.

Но нажатие на файл на рабочем столе или файл оболочки ничто не отвечает

Извините, если глупо, что я - Новичок.

Править

Попробованный все указанное здесь =>, Как я выполняю команду 'sudo' в сценарии? но ничто не работало.

Поскольку @dessert предложил использовать pkexec. Это работает, но дает другую проблему.

/home/abc/Downloads/netbeans/platform/lib/nbexec: WARNING: environment variable DISPLAY is not set

Я думаю, что netbeans нужен терминал для выполнения. и таким образом, я попробовал xdf-open и gksu но не их работал. Помогите!

2
задан 24 March 2019 в 15:22

1 ответ

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

К счастью, не легко запустить скрипты за пределами терминала с административными привилегиями. Система меню GUI не позволяет легко создавать средства запуска, которые запускают программы с корневыми полномочиями без любых мер безопасности.

В редких случаях существует потребность иметь графические интерфейсы пользователя, выполняют административные действия. Ранее, gksudo команда позволила пользователю с полномочиями пользователя root запустить просто любое графическое приложение с полномочиями пользователя root. Эта плохая модель обеспечения безопасности обесценивалась в пользу большего количества защищенных систем, которые любой 1) не требуйте, чтобы графический интерфейс пользователя был выполнен как корень вообще, но все еще допускайте доступ к системным файлам и папкам, или 2) все еще запускает все графическое приложение как корень, но имеет в распоряжении более сильную безопасность.

1) покрыт "admin://" URI. Приложения такой как gedit и nautilus может быть запущен с такого URI, например, как в

gedit admin:///etc/fstab

С этим подходом, gedit самим просто работает как обычный пользователь. Система предоставляет ему временную копию системного файла в этом примере/etc/fstab. После того как пользователь сохраняет временную копию, система обновляет исходный/etc/fstab. Также "Диски" разработаны этот путь. Приложение, т.е. графический интерфейс пользователя, работает как обычный пользователь в любое время, но запрашивает пароль администратора в точке, где задача администрирования собирается быть выполненной.

2) обрабатывается через pkexec. Здесь, после аутентификации, целое приложение запущено с корневыми полномочиями. Это также как gksudo используемый для работы. Большая разница, однако, то, что, дополнительно, системный файл политики о приложении должен существовать. Таким образом только ранее разрешенные приложения могут быть запущены как корень привилегированным пользователем.

1
ответ дан 2 December 2019 в 04:38

Другие вопросы по тегам:

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