Я определил 2 учетные записи пользователей:
- один с правами администратора (с
sudo
правом) => давайте позвонимadminuser
. - 2-й без каких-либо привилегий => давайте вызовем его,
и я настраиваю автологин для этого 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
normaluser
иногда используется кем-то, кто не должен быть в состоянии выполнять команды какroot
, то созданиеnormaluser
не-администратора определенно повышает безопасность . Опасность предоставления кому-либо учетной записи пользователя, но не позволяющая ему узнать собственный пароль, выходит далеко за рамки сложностей и сложности Бориса. Если вы хотите получить полное объяснение того, почему это проблематично, я предлагаю опубликовать новый вопрос, но 3 причины состоят в том, что пользователь должен иметь возможность блокировать и разблокировать экран, выходить из системы и входить в нее с другим типом сеанса, и расшифроватьecryptfs
данные.normaluser
иadminuser
настройка - золотое правило.normaluser
учетную запись для повседневной работы иadmin
учетную запись для выполнения административных задач, что на самом деле ничего не улучшает. На многопользовательской машине это полностью имеет смысл.Ответы:
PAM может позаботиться об этом
Это работает для меня на Ubuntu 16.04 (редактировать: это работает на 18.04 LTS):
поставить строку:
где-то в:
и / или
и затем, выполняя «su -» или «sudo su -», я могу использовать графические приложения в качестве пользователя root.
источник
sux
иgksu
которые больше не доступны.терминология
В этом ответе:
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
флагом, чтобы он работал в su-режиме вместо стандартного sudo-mode , а также с-u
флагом, чтобыadmin
вместо команды выполнить командуroot
.admin
должен вызыватьgksu
без с-w
флагом использовать ,sudo
чтобы статьroot
.Вот команда (да, я проверял это ;-) ):
Вам будет предложено ввести пароль дважды :
admin
пароль, чтобыnormaluser
запустить команду какadmin
сsu
бэкэндом.admin
пароль, чтобыadmin
запустить команду какroot
сsudo
бэкэндом.Это верно. Вы вводите
admin
пароль дважды.Разные заметки:
gksu
с ,gksudo
чтобы сделать его менее запутанным. В Ubuntu они эквивалентны. (Вы также можете заменить первоеgksu
наgksudo
, но это будет крайне нелогичным и запутанным.)-w
это короткая форма--su-mode
.-S
является краткой формой,--sudo-mode
но ни один из них не должен использоваться, потому что по умолчанию используется режим sudo .xclock
хорошее простое приложение с окном часовисточник
sudo
чтобы это работало. Пример:sudo gksu -w -u thedude gksu xclock
kdesudo
выглядит, чтобы работать чище, по крайней мере, на KUbuntu.gksu
больше нет в наличииОдин из способов, который, вероятно, сработает, - это использовать «sux» вместо «su» при первом переключении на пользователя с правами администратора. sux решает проблему запуска приложений x от поддельного пользователя. Он находится в стандартном репо и может быть установлен путем ввода
sudo apt-get install sux
в командной строке.Затем просто используйте «sux» вместо «su», и все должно работать так, как вы ожидаете.
Позволяет повторно использовать пример приложения
xclock
:источник
sux
на Ubuntu 14.04 64bits;(
pkexec
Существует вездесущая альтернатива kdesudo и gksu -
pkexec
которая изpolicykit-1
пакета, который требуется для многих пакетов.источник
sudo
права или пользоваться polkit), который знает пароль администратора (то есть кого-то, кто может стать пользователем rootsudo
или polkit), может использоватьpkexec
для Запустите графическую программу от имени пользователя root. Вот что здесь задает вопрос. Это мне не ясно , чтоpkexec
будет делать это, по крайней мере , без обширно редактирования конфигурационных файлов, тем более , что вpkexec
целом не может быть использовано для запуска произвольных графических программ (без профилей polkit) на всех . Есть ли способ?pkexec command
и это работает. Конфигурация находится в файле,/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
который установлен именованным пакетом. И на самом деле вам нужно написать пароль администратора только один разВместо того
Я предлагаю вам попробовать
gksu -u admin anyapplication
, где вы все делаете, используяgksu
саму команду. Также обратите внимание, что вам необходимо ввести пароль пользователя, указанного в команде, т. Е. В этом случае вы должны ввести пароль администратора .источник
normaluser
запускается,gksu -u admin anyapplication
она запрашиваетnormaluser
пароль дляadmin
использованияsudo
бэкенда, так же, какgksu anyapplication
запрашиваетnormaluser
пароль дляroot
использованияsudo
бэкенда. Оба не удастся по одной и той же причине -normaluser
они не могут выполнять командыsudo
.Вот команда, чтобы выполнить это.
Запустите его без запуска в
su
первую очередь. Вам нужно только запустить вышеупомянутую команду из обычного сеанса пользователя, и приложение будет запущено от имени пользователя root.источник
normal
пароль пользователя - я получаю сообщение «Невозможно запустить от имени пользователя root»superuser/admin
пароль - я получаю сообщение "неверный пароль, попробуйте еще раз"Вы должны использовать:
Это сначала вызывает графический запрос пароля (пароль вашего пользователя), а затем запускает GUI-приложение от имени пользователя root (я только что попробовал, это действительно так. Забавная вещь: я попытался
gksu AppName
сразу после этого, и это сработало так же, как и сейчас). вероятно, предполагается, как предполагает префикс "gk". Поэтому я не совсем уверен, где может быть ваша проблема).источник
sudo
в текстовом режиме он работает для него.Существует только один суперпользователь, и это root.
Пользователь 1 является администратором и имеет права sudo.
Пользователь 2 не является администратором и не имеет прав sudo.
Попробуйте войти в систему как пользователь 1, а затем с помощью команды
(заменяя имя приложения на имя приложения)
Надеюсь, это поможет - дайте мне знать. : о)
РЕДАКТИРОВАТЬ: Больше информации по запросу
Если на компьютере только вы,
то использование пользователя 1 (у которого есть разрешение на использование sudo)
ничем не отличается от использования пользователя 2 (у которого нет разрешения на использование sudo).
Пользователь 1 имеет те же права, что и пользователь 2.
Если пользователь 1 не введет команду с префиксом sudo и / или не предоставит свой пароль для запуска приложений с привилегиями root.
Разница лишь в том, что пользователь 2 не может запускать приложения от имени пользователя root.
Надеюсь, это поможет объяснить это немного для вас. : О)
источник
su admin
+ , за исключением приложения с графическим интерфейсомsudo ...
sudo vi file