Linux pkexec запуск gui от имени другого пользователя

Что использовать для запуска GUI-программ от имени root?

Если su/sudo — корёжит права на файлы в хомяке, выставляя владельцем root. gksudo предлагается для gtk, kdesudo — для kde. В чём разница и есть ли универсальный вариант?

Что есть в системе, то и пользуйте.

Решение проще чем кажется. Не запускать GUI программы от root.

Я не спросил, запускать ли их. Я спросил, чем запускать.

всегда использовал gksu. оно работает как sudo, вроде ставится отдельным пакетом. Библиотека или gtk+ без темы, или что то на Х-виджетах

К стати тоже интресует относительно использования таких дистров, например, как Xubuntu с Xfce. Там даже вручную установленный gksu нифига не работает. А некоторый проги запускаются если в окошке Alt+F2 их запускать тупо через sudo. Другие же и так не запускаются. В общем как-то неочевидно.

xhost+ &&export DISPLAY=:0 &&program

Если su/sudo — корёжит права на файлы в хомяке, выставляя владельцем root.

Чтобы не забыть добавь alias в .bashrc

корёжит права на файлы в хомяке, выставляя владельцем root

А то ты делаешь от рута в своём хомяке?

sudo dolphin ломает права на временные файлы KDE до рестарта сессии.

лол, ничего подобного

su-to-root -X -c «название программы»

Пример с программой Synaptic

su-to-root -X -c synaptic

su-to-root -X -c bleachbit

Ага, спасибо, попробую. Кстати, в synaptic и gparted используется pkexec. Что это за зверь?

Debian Jessie Xfce

А права сабж не портит? Если я им открою файл юзера и что-то изменю, то что будет с правами?

наверное, как-то связано с policykit-1

С помощью команды запустить программу с правами администратора на протяжении всей сессии.

Что-то тебя глючит слегка.

Там даже вручную установленный gksu нифига не работает.

Потому что в окружениях не-KDE и не-GNOME проще использовать ktsuss.

Логинься в кеды рутом, тогда конфиги и все остальное будет в /root с владельцем root.

Корзина. Так — как я являюсь основным переводчик Xfce на болгарский язык, я позволил сделать себе собственный перевод, отличается от стандартной.

А если сделать sudo -H ?

ничего ни где не корежит.

Если надо писать в виндовс раздел, а у меня он специально на запись только от рута, то использую krusader, там кнопочка есть, запустить от рута

Долгое время пользовался gksu, но оно, хоть и умеет запоминать пароль, зависит от гномодемонов и временами отваливается. Слез, пробовал ktsuss, LXDE-шный polkit, ещё пару приблуд каких-то — задолбался, просто прописал себе NOPASSWD и запускаю всё через sudo. Мне б лучше способ из-под рутовой программы запускать софт под пользователем, поскольку ФМ держу только под рутом всегда, а файлы открываю из него — в результате дублирование настроек — пользую Geeqie, Atril, LibreOffice, SMPlayer под рутом, а M$O вообще только под рутом и ставил, ибо жирный. Уже плеер только под рутом не конает, поскольку пульса от рутовых прог ломается.

Источник

Linux pkexec запуск gui от имени другого пользователя

В данном материале описываются важные различия между популярными режимами работы с приложениями от лица пользователя root, а именно, режимами, связанными с использованием утилит su, sudo, pkexec, а также псевдопротокола admin://.

Читайте также:  Astra linux поиск пакетов

Основная мысль данного материала заключается в следующем: вы должны всегда использовать утилиту pkexec и псевдопротокол admin:// для запуска приложений с графическим интерфейсом, которые должны работать от лица пользователя root. Утилиты su и sudo должны использоваться исключительно для запуска утилит с интерфейсом командной строки от лица пользователя root. В случае пренебрежения этим простым правилом приложения с графическим интерфейсом могут изменить права доступа к файлам конфигурации в домашней директории, что приведет к появлению ряда сложно диагностируемых проблем.

Если вас интересуют подробности, вам стоит продолжить чтение.

Запуск файлового менеджера с привилегиями пользователя root

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

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

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

Например, для запуска файлового менеджера Nemo из состава дистрибутива Linux Mint Cinnamon может использоваться следующая команда:

Для запуска файлового менеджера Caja из состава дистрибутива Linux Mint Mate — следующая команда:

Для запуска файлового менеджера Thunar из состава дистрибутива Linux Mint Xfce и Xubunut — следующая команда:

Наконец, для запуска файлового менеджера Nautilus из состава дистрибутива Ubuntu и Fedora Workstation — следующая команда:

Примечание: закрытие окна терминала приведет к закрытию окна запущенного с помощью него файлового менеджера, поэтому терминал всегда должен быть открыт! Не закрывайте окно терминала до того момента, пока вы не выполните все необходимые действия.

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

Для редактирования конфигурационных файлов системы вам придется запустить файловый менеджер с привилегиями пользователя root. Для этой цели может использоваться псевдопротокол admin://.

Предположим, что нам нужно отредактировать файл конфигурации /etc/default/grub.

В дистрибутиве Linux Mint (Cinnamon, Mate, Xfce) для этой цели может использоваться следующая команда:

В дистрибутивах Ubuntu и Fedora Workstation — следующая команда:

Примечание: три слэша в командах — не опечатка; так и должно быть. При первом использовании псевдопротокола admin:// в рамках пользовательской сессии вам будет предложено ввести ваш пароль дважды; это также нормально. Ну и разумеется, закрытие окна терминала приведет к закрытию окна текстового редактора, поэтому стоит держать его открытым до завершения редактирования файла конфигурации.

Дополнительные подробности

Для работы с утилитой sudo вам нужно быть членом группы пользователей sudo. В случае утилит su, pkexec и псевдопротокола admin:// членства в дополнительных группах не требуется.

При использовании утилиты pkexec и псевдопротокола admin:// вам будет предложено ввести ваш пароль с помощью диалогового окна графической оболочки. В случае утилит sudo и su вы должны будет вводить пароль с помощью терминала.

Читайте также:  Компьютер не видит принтер brother hl l2300dr

Важные различия

1. Утилита pkexec и псевдопротокол admin:// предусматривают установку безопасного значения переменной окружения $HOME, а именно, пути к домашней директории пользователя root, следовательно, запущенное с помощью них приложение не сможет незаметно нарушить права доступа к файлам конфигурации из вашей домашней директории. Кроме того, они предусматривают установку безопасного значения переменной окружения $XAUTHORITY, а именно, пути к новому файлу, следовательно, запущенное с помощью них приложение будет работать со своей авторизацией оконной системы.

2. Утилита sudo не предусматривает установки значений двух перечисленных выше переменной окружения, а вместо этого использует путь к вашей домашней директории и вашему файлу авторизации оконной системы. По этой причине утилита sudo не должна использоваться для запуска приложений с графическим интерфейсом, ведь они всегда используют переменные окружения, такие, как $HOME.

3. Команда sudo -i позволяет установить безопасное значение переменной окружения $HOME, но не позволяет установить безопасного значения переменной окружения $XAUTHORITY, поэтому все запускаемые с помощью нее приложения запускаются без своей авторизации оконной системы. По этой причине она не должна использоваться для запуска приложений с графическим интерфейсом. Кроме того, она не завершает сессию пользователя root после завершения работы запущенного с помощью нее приложения, что небезопасно.

4. Команда su — выполняет ту же операцию, что и sudo -i. Единственное различие данных команд состоит в том, что в случае использования команды su — вам придется ввести пароль пользователя root, а в случае использования команды sudo -i — свой пароль.

5. Команда sudo -H также позволяет установить безопасное значение переменной окружения $HOME, но не позволяет установить безопасного значения переменной окружения $XAUTHORITY, поэтому все запускаемые с помощью нее приложения запускаются без своей авторизации оконной системы. По этой причине она также не должна использоваться для запуска приложений с графическим интерфейсом.

6. Утилита su устанавливает безопасное значение переменной окружения $HOME, но не устанавливает безопасного значения переменной окружения $XAUTHORITY, поэтому все запускаемые с помощью нее приложения запускаются без своей авторизации оконной системы. По этой причине она также не должна использоваться для запуска приложений с графическим интерфейсом. Вообще, при использовании данной утилиты без каких-либо параметров запуск приложений осуществляется с использованием большинства переменных окружения текущего пользователя.

Быстрое получение списка пользователей группы sudo

Вы можете без лишних сложностей получить список пользователей группы sudo с помощью следующей команды:

getent group sudo

После окончания ввода команды следует нажать Enter для ее исполнения.

Исправление прав доступа к файлам из домашней директории

Если вы случайно воспользовались утилитой sudo или su для запуска приложения с графическим интерфейсом, после чего оно начало работать некорректно от лица обычного пользователя, вы можете исправить права доступа к файлам его конфигурации с помощью следующей команды (это одна строка):

find /home/$SUDO_USER ! -user $SUDO_USER -exec chown $SUDO_USER:$SUDO_USER ‘<>‘ ;

После окончания ввода команды следует нажать Enter для ее исполнения.

Источник

Linux pkexec запуск gui от имени другого пользователя

20 июл 2018, 16:13

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

Тут самое время в очередной всплакнуть по gksu , но не будем, т.к. выпилили его вполне обснованно

  • последняя на сегодня версия 2.02 была выпущена еще в 2009 году , после чего патчилась уже мейнтенерами дистрибутивов
  • На сегодня известна как минимум одна немолодая уязвимость данного пакета, компрометирующая безопасность системы
  • В отличии от sudo — подменялся идентификатор пользователя, и корректировал права и владельца по умолчанию.
  • На странице проекта gksu кррасуется мощная надпись «gksu is being replaced by PolicyKit«
  • Выпилен сначала из debian testing, следом не вошел в очередной LTS Ubuntu 18.04 и LM 19, Arch Linux выкинул пакет из основного репозитория в AUR
Читайте также:  Sane utils astra linux

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

Для этого достаточно только описать его разрешения в отдельном xml-конфиге. для xed — cоздадим файлик /usr/share/polkit-1/actions/org.gnome.xed.policy

Краткое пояснение по значениям полей блока

  • vendor — название разработчика программного обеспечения (вендора) или имя проекта (необязательный элемент).
  • vendor_url — URL проекта или вендора (необязательный элемент).
  • icon_name — имя значка, представляющего проект или вендора (необязательный элемент).
  • action — это элемент, который содержит внутри себя другие элементы. В открывающем тэге action обязательно указывается идентификатор действия — id, который передается по шине D-Bus.
    Элементов action в одном файле может быть несколько. Внутри элемента action можно найти:
    • description — краткое описание действия, понятное человеку. Элементов description может быть несколько, например, для разных языков.
    • message — понятное оператору сообщение, которое будет появляться в окне запроса авторизации, если она потребуется. Элементов message может быть несколько, например, для разных языков.
    • defaults — этот элемент определяет необходимость и тип авторизации по умолчанию для действия, указанного в элементе action.
      Здесь возможно использование трех необязательных элементов, определяющих неявные разрешения для клиентов, работающих в локальной консоли:
      • allow_any — для любых клиентов;
      • allow_inactive — для клиентов неактивных сеансов;
      • allow_active — для клиентов активных сеансов;
        Элементы allow_any, allow_inactive и allow_active могут содержать следующие значения:
        • no — действие не разрешается;
        • yes — действие разрешается;
        • auth_self — требуется аутентификация от имени владельца сеанса;
        • auth_admin — требуется аутентификация от имени суперпользователя, что является более серьезным ограничением, чем предыдущий вариант;
        • auth_self_keep — то же, что и auth_self, но разрешение имеет силу в течение некоторого небольшого периода времени (например, пять минут);
        • auth_admin_keep — то же, что и auth_admin, но разрешение имеет силу в течение некоторого небольшого периода времени (например, пять минут);

несмотря на обилие строк в XML, по факту, для разных приложений, если не требуется настраивать тонкие политики — в данном шаблоне будут правиться только строки action id , description , message и exec.path

Вот и все, в общем-то Для запуска редактора с нужными правами достаточно выполнить pkexec xed (этот вызов можно использовать в кнопках запуска и пунктах меню)
окошко с полиси org.gnome.xed запросит пароль и отдаст приложение

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

В завершении можно отметить, что большинство приложений как и xed норм отработает от sudo appname , а те которые действительно требовали для запуска этих манипуляций — уже обычно несут в пакете файлы полиси, например Gparted (ранее работавший от gksu):

но в мышетыкательных сценариях run as root может вполне пригодиться

UPD. Для любителей старых привычек — можно сделать симлинк с pkexec на gksu , чтоб было почти «как раньше»
sudo ln /usr/bin/pkexec /usr/bin/gksu

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector