Як я можу запустити додаток із графічним інтерфейсом як адміністратор із сеансу, який не має адміністратора?


33

Я визначив 2 облікові записи користувачів:

  • один з привілеєм адміністратора ( sudoправоруч) => дозволяє викликати його adminuser.
  • другий без будь-яких привілеїв => дозволяє викликати його, і я налаштовую автологін для цього 2-го користувача . normaluser
    normaluser

Отже, коли я відкриваю normaluserсеанс і хочу запустити програму з правами адміністратора,
я відкриваю термінал Ctrl+ Alt+ Tі:

su adminuser
sudo anyapplication ...

Це прекрасно працює, не виходячи з normaluserсеансу (не потрібно відкривати adminuserсеанс).


Але що робити, якщо програмі потрібно працювати з графічним інтерфейсом (графічний інтерфейс користувача)?
Я хоч про це:

su adminuser
gksu anyapplication ...

але я отримую

** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0

Тож питання: чому ви налаштували свою систему таким чином? Як ви думаєте, це покращує безпеку? Це не так: Натомість ви могли налаштувати автоматичний вхід у свій "адміністратор" обліковий запис, щоб він не запитав вас під час входу в систему - він все одно вимагатиме пароля під час виконання адміністративних завдань.
Сергій

5
@Sergey Якщо normaluserіноді використовується хтось, хто не має змоги запускати команди як root, то створення normaluserне адміністратора безумовно покращує безпеку . Небезпека надання комусь облікового запису користувача, але не давати їм знати свій власний пароль, виходить далеко за межі ситуації у Борисі за труднощами та складністю. Якщо ви хочете отримати повне пояснення, чому це проблематично, я пропоную опублікувати нове запитання, але 3 причини полягають у тому, що користувач повинен мати можливість заблокувати та розблокувати екран, вийти з системи та повернутися назад з іншим типом сеансу, і розшифрувати ecryptfsдані.
Елія Каган

2
саме для мене немає сенсу використовувати ПК моєї родини, даючи всім знати пароль адміністратора, щоб розблокувати екран. Це normaluserта adminuserналаштування - це золоте правило.
Борис

1
Досить справедливо, я просто вразив, що ОП використовувала normaluserобліковий запис для повсякденної роботи та adminрахунок для виконання адміністративних завдань, що насправді нічого не покращує. На багатокористувацькій машині це абсолютно має сенс.
Сергій

Відповіді:


5

PAM може подбати про це

Це працює для мене на Ubuntu 16.04 (редагувати: він також працює на 18.04 LTS):

поставити рядок:

session optional pam_xauth.so

десь:

/etc/pam.d/su

та / або

/etc/pam.d/sudo

а потім роблячи "su -" або "sudo su -" я можу використовувати графічні програми як корінь.


Підтверджуючи, що це працює і на Kubuntu 16.04. Спасибі!
Ахмед

Дякую, він працює і для мене 18.04! це , здається, кращий варіант для suxі gksuякі більше не доступні.
Борис

29

Термінологія

У цій відповіді:

  • normaluserце звичайний користувач, який не є адміністратором і не може запускати команди, як rootз sudo.
  • adminце адміністратор, який може запускати команди, як rootі в sudo. (Звичайно, будь-які графічні команди повинні використовувати графічний фронт, як gksu/gksudo , а не sudoбезпосередньо.)
  • anyapplicationце ім'я графічної програми, яку normaluserхоче запускати як root. normaluserзнає adminпароль і йому (імовірно) було сказано, він може використовувати його для цієї мети.

Проблема

Причиною вашої проблеми, і причина більшості інших відповідей до сих пір не працюють (за винятком Marty Фрід «s відмінний відповідь ), це:

  • gksuможе бути налаштований на використання sudo або su як його резервного сервера. Поведінка gksuв Ubuntu за замовчуванням полягає в тому, щоб діяти як фронтмен для sudo, а не для su. Тобто сказати , що, за замовчуванням, gksuі gksudoповодяться точно так же . Див . Сторінку .
  • normaluserне є адміністратором, тому не може запускати команди, як rootу sudo. sudoпідкаже пароль користувача, який він працює , а не пароль користувача, яким він хоче стати . Якщо ви не можете використовувати свій пароль, щоб виконувати дії як люди, які не є вами, це означає не бути адміністратором .
  • normaluser, При умови , що це не обліковий запис гостя, може виконувати команди , як інший користувач зsu , поставивши в пароль іншого користувача . Але gksuвиступає як фронтенд для sudo, а не su.
  • normaluserне може безпосередньо запустити жодну команду як root, тому що normaluserне може використовувати sudo, і ніхто не може стати rootз нею, suоскільки немає rootпароля .

Рішення

Рішення вимагає написання команди, яка виконує два етапи аутентифікації:

  • normaluserповинен стати adminдля виконання графічної команди. Для цього normaluserнеобхідно запустити gksuз -wпрапором , щоб запустити його в су-режимі , а не за замовчуванням Судно-режимі , і -uпрапор для виконання команди , як adminзамість root.
  • Команда запуску , як adminповинен викликати gksu без з -wпрапором використовувати , sudoщоб стати root.

Ось команда (так, я перевірив її ;-) ):

gksu -w -u admin gksu anyapplication

Вам буде запропоновано ввести пароль двічі :

  1. По-перше, ви повинні ввести adminпароль, щоб дозволити normaluserвиконувати команду, як adminі в suсерверній програмі.
  2. По-друге, ви повинні ввести adminпароль, щоб дозволити adminвиконувати команду, як rootі в sudoсервісному сервері.

Це вірно. Ви вводите adminпароль двічі.

Різні нотатки:

  • Якщо ви хочете, ви можете замінити другу gksuз , gksudoщоб зробити його менш заплутаним. У Ubuntu вони рівноцінні. (Ви також можете замінити перший gksuна gksudo, але це було б вкрай контрутивно та заплутано.)
  • -wє короткою формою --su-mode.
  • -Sє короткою формою, --sudo-modeале жоден з них не повинен використовуватися, оскільки режим sudo є типовим.
  • Ви можете спробувати перевірити це спочатку якоюсь нешкідливою командою, щоб переконатися, що вона робить те, що ви хочете. (Буде, але немає необхідності, щоб ви мені довіряли це.) Наприклад:
    gksu -w -u admin gksu xclock
    xclock це приємне просте додаток для годинника-вікна.

1
Досконало, я додаю псевдонім у свій .bashrc одразу, щоб не забути цю розумну пораду
Борис

не знаю чому, але зараз (з ubuntu 14.04) я повинен почати з sudoтого, щоб він працював. Приклад:sudo gksu -w -u thedude gksu xclock
Борис

FYI: kdesudoвиглядає на роботу чистіше, принаймні на KUbuntu.
MDTech.us_MAN

на жаль, здається, що gksuйого більше немає
Борис

11

Один із способів, який, ймовірно, спрацює, - це використовувати "sux", а не "su", коли ви вперше перейдете на користувача адміністратора. sux виправляє проблему запуску x додатків від підробленого користувача. Він знаходиться в стандартному репо, і його можна встановити, ввівши sudo apt-get install suxв командному рядку.

Тоді просто використовуйте "sux" замість "su", і це має працювати так, як ви очікуєте.

Давайте повторно використовувати приклад програми xclock:

sux admin
gksu xclock

3
Більше не існує версії sux64-bit Ubuntu 14.04;(
Борис

2
Здається, що є альтернатива
Борис

@Boris Це сценарій оболонки, ви можете просто завантажити його з історичного репо і покласти його на свій шлях, наприклад, з пакунків.debian.org/
Ніхто

2

pkexec

Існує всюдисуща альтернатива kdesudo та gksu - pkexecце policykit-1пакет, який вимагається великою кількістю пакетів.


Я рекомендую розширити цю відповідь, щоб пояснити, як звичайний користувач (який не є адміністратором і не може отримати корінь з sudoабо polkit), який знає пароль адміністратора (тобто того, хто може отримати root sudoабо polkit), може використовувати pkexecдля запустити графічну програму як корінь. Ось що тут задається питанням. Це мені не ясно , що pkexecбуде робити це, принаймні , без широко редагування конфігураційних файлів, тим більше , що в pkexecцілому не може бути використано для запуску довільних графічних програм (без профілів polkit) на всіх . Чи є спосіб?
Елія Каган

@EliahKagan Це працює на Ubuntu з конфігурацією за замовчуванням - просто запустіть pkexec commandі вона працює. Конфігурація знаходиться у файлі /usr/share/polkit-1/actions/org.freedesktop.policykit.policy, встановленому названим пакетом. І насправді потрібно вимагати, щоб ви написали пароль адміністратора лише один раз
pqnet

0

Замість

су адмін
gksu будь-яке застосування ...

Я пропоную вам спробувати gksu -u admin anyapplication, де ви робите все, використовуючи саму gksuкоманду. Також зауважте, що вам потрібно ввести пароль користувача, зазначеного в команді, тобто в цьому випадку вам потрібно ввести пароль адміністратора .


1
У налаштованій за замовчуванням системі Ubuntu, якщо вона normaluserзапущена, gksu -u admin anyapplicationбуде запропоновано, щоб normaluserпароль почав adminвикористовувати sudoбекенд, так само, як gksu anyapplicationі запит на отримання normaluserпароля для rootвикористання sudoбекенда. Обидва вийдуть з ладу з тієї ж причини normaluser- не має сили запускати команди sudo.
Елія Каган

-1

Ось команда виконати це.

gksu app-name

Запустіть його, не запускаючи suспочатку. Ви повинні запустити вищевказану команду лише з звичайного сеансу користувача, і програма запуститься як root.


1
це не працює - зауважте, що я намагаюся користуватися сеансом користувача без привілеїв
Борис

Що таке повідомлення про помилку?
SirCharlo

введення мого normalпароля користувача - я отримую повідомлення "Неможливо запустити як користувач root"
Борис

введіть свій superuser/adminпароль - я отримую повідомлення "неправильний пароль, спробуйте ще раз"
Борис

-1

Ви повинні використовувати:

gksudo AppName

Це викликає запит графічний пароль першої (пароль вашого користувача), а потім запускає GUI-додаток в якості кореня (я тільки спробував, це дійсно смішна річ: я намагався. gksu AppNameВідразу ж після цього, і працював так само - як це певно, як припускає префікс "gk". Тому я не зовсім впевнений, де може бути ваша проблема).


1
це працює у вашому випадку, тому що ви спробували з користувачем сеансу користувача адміністратора з правами sudo. Що з сеансом, який не використовується адміністратором без права sudo?
Борис

Я використовував gksudo зі звичайного термінального вікна з користувачем, який не адміністратор (власний користувач). Ти маєш рацію для другої спроби, так як у мене тоді ще були судові візки. Але проблема Бориса інша: його додаток не може підключитися до X, що в моєму випадку працювало обидва рази. Як видно з оригінального питання, sudoв текстовому режимі працює на нього.
Іззі

-1

Є лише один супер користувач, і це root.

Користувач 1 є адміністратором і має права судо.
Користувач 2 не є адміністратором і не має прав sudo.

Спробуйте увійти як користувач 1, а потім скористайтеся командою

gksudo app-name  

(замінюючи ім'я програми на ім’я програми)
Сподіваюся, що це допомагає - повідомте мене. : o)

РЕДАКТУВАННЯ: Більше інформації за запитом

Якщо це лише ви на комп’ютері,
то використання користувача 1 (який має дозвіл на використання sudo)
нічим не відрізняється від використання користувача 2 (який не має дозволу використовувати sudo).
Користувач 1 має ті ж права, що і користувач 2.
Якщо тільки користувач 1 не видає команду з префіксом sudo та / або надає свій пароль, щоб програма могла працювати з кореневими привілеями.
Єдина відмінність полягає в тому, що користувач 2 не може запускати програми як root.

Сподіваюся, що це допоможе вам трохи пояснити. : o)


дякую за роз’яснення між супер користувачем та адміністратором, я відредагую своє запитання. Що ви маєте на увазі під "реєстрацією як користувач 1" => відкрити сеанс з користувачем 1? ну саме цього я хотів би уникнути.
Борис

додано більше інформації, щоб відповісти на запит: o)
Fernhill Linux Project

добре, що моя дружина та мої діти використовують user2 з autologin, тому мені більше подобається не мати права судо з цим користувачем.
Борис

Здається, гарна ідея - у мене теж діти; o). Ви спробували увійти як користувач1 ще й запустили команду?
Проект Fernhill Linux

1
Так, я можу, але боляче змінювати сеанс користувача. Зазвичай мені доводиться робити це кілька разів: перейдіть на сеанс адміністрування, щоб визначити деякі параметри, перейдіть на звичайний користувальницький сеанс для тестування, і знову і знову дуже приємно мати можливість це робити, залишаючись на звичайному сеансі. Більшу частину часу я обробляю це з прикладом su admin+ , за винятком програми із графічним інтерфейсомsudo ...sudo vi file
Борис
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.