Error executing command as another user not authorized this incident has been reported

sudoers: ошибка синтаксиса near line, как восстановить sudoers, ошибка редактирования sudoers

При попытке настроить срабатывание одного из скриптов, который обращается к системной функции от имени обычного пользователя системы, возникла необходимость внести изменения в полномочия пользователя через файл /etc/sudoers

В найденных на эту тему материалах говорится, что редактирование данного файла необходимо производить через команду visudo. Хотелось бы, конечно, чтобы авторы таких материалов уточняли, что команду следует запускать от имени суперпользователя, так как при вводе просто visudo в терминале появляется:

~ $ visudo
visudo: /etc/sudoers: Отказано в доступе

После ввода «правильной» команды открывается окно редактора nano с загруженным в него содержанием файла sudoers.

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

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

И только в дальнейшем после «подсказки друга» мне стало известно, что символ ^ соответствует клавише Ctrl.

Поэтому редактирование мной файла sudoers производилось более привычным способом – sudo gedit /etc/sudoers

Увы, никто не застрахован от ошибок и после очередного эксперимента с редактированием содержания этого файла система мне выдала сообщение:

>>> /etc/sudoers: ошибка синтаксиса near line 21 <<<
sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: не удаётся инициализировать модуль политики

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

К счастью, «лечение» сломанного механизма сводится к выполнению одной команды:

    pkexec visudo

После ввода пароля суперпользователя будет открыт тот же редактор nano с загруженным в него содержанием файла sudoers.

Соотнесите содержание своего файла с содержанием по умолчанию (без строк, начинающихся с символа комментария #):

root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL

Исправьте свои «неверные» записи или приведите файл к исходного значению, после чего нажмите на комбинацию клавиш Ctrl и o. На последующий запрос нажмите y:

Далее, используя клавишу Backspace, удалите в наименовании файла .tmp и на вопрос о перезаписи существующего файла снова нажмите клавишу y:

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


0

2

Господа, помогите с таким вопросом. Собрал Trinity для Слаки, всё работало без проблем. Потом выпилил системный kde, перестали работать проги которые хотят права администратора-не проходит авторизация:

abc123@slackware:~$ grub-customizer
==== AUTHENTICATING FOR net.launchpad.danielrichter2007.pkexec.grub-customizer ===
Authentication is required to run Grub Customizer
Authenticating as: root
password:
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

polkit в системе установлен:

root@slackware:~# slackpkg file-search polkit

Looking for polkit in package list. Please wait... DONE

The list below shows the packages that contains "polkit" file.

[ installed ] - NetworkManager-1.8.4-i586-1_slack14.2
[ installed ] - udisks-1.0.5-i586-3
[ installed ] - udisks2-2.1.5-i586-2
[ installed ] - upower-0.9.23-i586-3
[ installed ] - hplip-3.16.5-i586-3
[uninstalled] - baloo-4.14.3-i586-2
[uninstalled] - k3b-2.0.3-i586-2
[uninstalled] - kde-runtime-4.14.3-i586-3
[uninstalled] - kde-workspace-4.11.22-i586-4
[uninstalled] - kdepim-4.14.10-i586-1
[uninstalled] - kwalletmanager-4.14.3-i586-2
[uninstalled] - nepomuk-core-4.14.3-i586-2
[uninstalled] - polkit-kde-agent-1-9d74ae3_20120104git-i586-2
[uninstalled] - polkit-kde-kcmodules-1-001bdf7_20120111git-i586-2
[uninstalled] - wicd-kde-0.3.0_bcf27d8-i586-2
[ installed ] - ConsoleKit2-1.0.0-i586-3
[ installed ] - GConf-3.2.6-i586-3
[ installed ] - polkit-0.113-i586-2
[ installed ] - polkit-gnome-0.105-i586-1
[ installed ] - polkit-qt-1-0.103.0-i486-1
[ installed ] - xf86-video-intel-git_20160601_b617f80-i586-1
[ installed ] - blueman-2.0.4-i586-1
[ installed ] - gparted-0.26.1-i586-1
[uninstalled] - Thunar-1.6.10-i586-3
[uninstalled] - xfce4-power-manager-1.4.4-i586-4
[uninstalled] - xfce4-session-4.12.1-i586-2

You can search specific packages using "slackpkg search package".

polkitd демон висит в процессах. Возвращение polkit-kde-agent назад ничего не дало.

под рутом тоже нифига не открывается:

root@slackware:~# gparted
No protocol specified

(gpartedbin:28850): Gtk-WARNING **: cannot open display: :0

в какую сторону копать?

Connecting from an Ubuntu 18.04 computer to a headless Lubuntu 18.04 computer using X11 forwarding. It works great for apps that don’t require root privileges: lxterminal, leafpad, etc. I can run sudo commands in the forwarded lxterminal window just fine.

But, applications like synaptic-pkexec that would normally pop up the Authentication window and ask me to enter a password, fail, like so:

$ synaptic-pkexec
==== AUTHENTICATING FOR com.ubuntu.pkexec.synaptic ===
Authentication is required to run the Synaptic Package Manager
Authenticating as: [my realname],,, ([my username])
Password: 
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

This incident has been reported.

I supplied the correct password.

Is there a setting in sshd-config that governs this? What must I change to get this to work?

13.09.2019

linux-logo

Так или иначе, когда-нибудь нам суждено столкнуться с правкой файла /etc/sudoers …и не всегда редактирование заканчивается успешно, если ты такой же «удачливый» как и Я, то ты пришел по адресу.

Обычная ситуация, вам нужно что-то подкорректировать в файле /etc/sudoers. Но как говориться: «Никто не застрахован от ошибок», и я тут не исключение. Вместо команды sudo visudo я отредактировал файл с помощью стандартного sudo nano /etc/sudoers и после сохранения всех правок и попытке использовать права  суперпользователя, система выдала ошибку:

>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 23
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Что тут сказать, повредил синтаксис файла sudoers.

Все попытки открыть файл на редактирование заканчивается неудачей.

Скажу больше, после редактирования данного файла, вообще нет возможности войти под root пользователем, т.к. sudo теперь тоже не работает.

Как исправить повреждённый файла sudoers

Способ решение в сложившейся проблемы достаточно тривиальный, надо использовать:

pkexec visudo

Пуфффф…И вопрос с редактированием /etc/sudoers решится сам собой. А если потребуется отредактировать файлы в директории /etc/sudoers.d/ то можно ввести:

pkexec visudo -f /etc/sudoers.d/

Но в этот раз что-то пошло не так, и я получил в ответ:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: user,,, (name) Password:  polkit-agent-helper-1:
error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED === 
Error executing command as another user: Not authorized
This incident has been reported.

Интересная ситуация, чтобы редактировать sudoers мне нужны права суперпользователя, но получить я их могу, только «починив» файл sudoers — замкнутый круг.

Но есть гениальный выход из этой ситуации:

Откройте два сеанса ssh к серваку (или работа в двух терминалах или две вкладки в терминале).

В первом сеансе получим PID bash вашей сессии:

echo $$

Во второй запустите агент аутентификации с помощью:

pkttyagent --process Ваш_PID

Вернувшись в первый сеанс, запустите:

pkexec visudo

На втором сеансе вы получите приглашение пароля:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Для запуска приложения `/usr/sbin/visudo' от имени суперпользователя требуется аутентификация
Authenticating as: user,,, (name)
Password: 
==== AUTHENTICATION COMPLETE ===

visudo запуститься в первой сессии.

Туда-сюда, туда-сюда и проблема решена! Ну и напоследок совет, при правках используйте sudo visudo, т.к. он проверяет синтаксис перед сохранением файла, и если что-то пойдет не так, то выдаст предупреждение:

>>> /etc/sudoers: syntax error near line 30 <<<
What now?                                             #Что будем делать?
Options are:
  (e)dit sudoers file again                           #снова редактировать
  e(x)it without saving changes to sudoers file       #выйти без сохранения
  (Q)uit and save changes to sudoers file (DANGER!)   #сохранить изменения (3,14ЗДЕЦ!)
What now? x

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

4.3
6
голоса

Рейтинг статьи

20 Jun 2019Заметки

9610

~ 2 мин.

Так или иначе, когда-нибудь нам сужденно столкнуться с правкой файла /etc/sudoers …и не всегда редактирование заканчивается успешно, если ты такой же «удачливый» гоу под спойлер

Обычная ситуация, вам нужно подредактировать права суперпользователя, в файле /etc/sudoers. Но никто не застрахован от ошибок, и я снова наступил на те же грабли спустя год, вместо команды sudo visudo я отредактировал файл с помощью стандартного sudo nano /etc/sudoers и после сохранения всех правок и попытке использовать права  суперпользователя, система выдала ошибку:

>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 23
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Синтаксис еррор, короче повредил синтаксис файла своими кривыми ручонками.

Есть достаточно тривиальный способ решения проблемы, использовать:

pkexec visudo

Пуфффф…И вопрос с редактированием /etc/sudoers решится сам собой. А если потребуется отредактировать файлы в директории /etc/sudoers.d/ то можно ввести:

pkexec visudo -f /etc/sudoers.d/<file_name>

ПРОФИТ!

Но в этот раз что-то пошло не так, и я получил в ответ:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: user,,, (name) Password: polkit-agent-helper-1:
error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.

Интересная ситуация, чтобы редактировать sudoers мне нужны права суперпользователя, но получить я их могу, только «починив» файл sudoers — замкнутый круг. Но есть гениальный выход из этой ситуации:

Откройте два сеанса ssh к серваку (или работа в двух терминалах или две вкладки в терминале, я использую Guake Terminal ).

В первом сеансе получите PID bash:

echo $$

Во второй сессии запустите агент аутентификации с помощью:

#PID - полученный идентификатор процесса 
pkttyagent --process PID

Вернувшись в первый сеанс, запустите:

pkexec visudo

На втором сеансе вы получите приглашение пароля:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Для запуска приложения `/usr/sbin/visudo' от имени суперпользователя требуется аутентификация
Authenticating as: user,,, (name)
Password:
==== AUTHENTICATION COMPLETE ===

visudo запуститься в первой сессии. 

Туда-сюда, туда-сюда и проблема решена! Ну и напоследок совет, при правках используйте sudo visudo, т.к. он проверяет синтаксис перед сохранением файла, и если что-то пойдет не так, то выдаст предупреждение:

>>> /etc/sudoers: syntax error near line 30 <<<
What now? #Что будем делать?
Options are:
(e)dit sudoers file again #снова редактировать
e(x)it without saving changes to sudoers file #выйти без сохранения
(Q)uit and save changes to sudoers file (DANGER!) #сохранить изменения (3,14здец!)
What now? x

As continuation of this question (How can I send a notification with polkit 0.106?), I’ve discovered that I have to execute notify-send as the user who I want to send notification.

But, with my current config, I can’t do this, because polkit execute the script as polkitd user, and I can’t do su $user without known user password.

By this reason, I need to create a new polkit action, to allow execute notify-send as other user from polkitd.

My polkit rule is this:

polkit.addRule(function(action, subject) {
     if (action.id == "org.freedesktop.consolekit.system.stop" ||
        action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions" || 
        action.id == "org.xfce.session.xfsm-shutdown-helper")  
     {

        try{    
            polkit.spawn(["/usr/bin/pendrive-reminder/check_pendrive.sh", subject.user]);        
            return polkit.Result.YES;

        }catch(error){
            polkit.spawn(["/usr/bin/pendrive-reminder/send_notify.sh", subject.user]);
           return polkit.Result.NO;
        }
    }
});

This polkit rule must lock shutdown option in shutdown menu, and shows a notification with notify-send, with send_notify.sh script, which execute this:

#!/bin/bash

export DISPLAY=":0"

user=$1
pkexec --user $user notify-send  "Pendrive Reminder" "Shutdown lock enabled. Disconnect pendrive to enable shutdown" -u critical

exit 0

I tried to add this polkit policy file:

<policyconfig>
    <action id="org.freedesktop.notify-send">
    <description>Launch notify-send command</description>
    <defaults>
        <allow_any>yes</allow_any>
        <allow_inactive>yes</allow_inactive>
        <allow_active>yes</allow_active>
    </defaults>
   <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/notify-send</annotate>
   <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
   </action>
</policyconfig>

I put this file in /usr/share/polkit-1/actions/org.freedesktop.policykit.notify-send.policy

But, after put policy file in /usr/share/polkit-1/rules.d/ and press shutdown button, the shutdown menu took a long time to be showed, and notification didn’t appeared. The shutdown option is locked correctly

How can I get that polkit can call notify-send from my script?

Striploin wrote: ↑

Sun Feb 05, 2023 8:33 pm


I have confirmed that my user is a part of the sudoers group.

Being a sudoer or not does not change anything when you’re running a polkit. POLicy KITs are linked to the pkexec command which works quite differently of sudo.

To make it understandable, imagine you’re the CEO of a big company :

1) You cannot be present at the weekly meeting because you’re dealing with an important client somewhere else. You call your vice-president, share views with him and give him full power to lead the meeting. What he’ll say will be taken as coming from you, even if it crashes the company because he misunderstood you told him to sell shares of company X and buy those from company Y and he ordered the opposite. That’s sudo.

2) You phone to your secretary and tell her to call the Director of your investment department to present a memo on investment opportunities at Monday’s meeting. He’ll probably do it because he assumes the order comes from you and you just delegate a very small part of your authority for a very precise task (the need of a memo at the meeting) to your secretary. That’s pkexec. Hopefully, if the secretary tells him to sell all shares of company X, he won’t do it, because he knows the secretary has no such authority and will at least check if you gave the order. This is a much safer procedure than sudo.
To complete the analogy, any task the secretary can do in your name can be written with precise details in a polkit. If the secretary is allowed to perform the task, the polkit runs else it drops with an unauthorized task message.

There’s no conflict between those procedures : using the sudo procedure makes you the CEO of your computer, for good or evil. Running a polkit just allows you to perform a task you don’t have the ‘natural’ authority on, but it has been delegated to you (checking or updating mintsources about what I read) by a superior authority (the LM team).

A recommendation if I may : don’t follow blindly sites that «play» with sudo just to show their muscles. It’s the best way to screw your system up.

#1 2011-10-05 11:55:36

jfb3
Member
Registered: 2011-08-20
Posts: 68

pkexec — not authorized [solved]

I know about this thread: https://bbs.archlinux.org/viewtopic.php?id=127648

I created /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.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="org.freedesktop.policykit.pkexec.run-thunar">
    <description>Run Thunar as root</description>
    <message>Authentication is required to run Thunar as root</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/thunar</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

My result of

is

Error executing command as another user: Not authorized

This incident has been reported.

What did I miss?

Last edited by jfb3 (2011-10-05 18:26:13)

#2 2011-10-05 12:37:32

nbvcxz
Member
From: Poland
Registered: 2007-12-29
Posts: 202

Re: pkexec — not authorized [solved]

Ok first please make us sure that polkit (/usr/lib/polkit-1/polkitd) daemon is running (I assume that it must be running if you use consolekit eg. with any login manager) and that authorization agent is started (lxpolkit or polkit gnome).


Lenovo G50 | LXQT-git | compton | conky

#3 2011-10-05 18:25:44

jfb3
Member
Registered: 2011-08-20
Posts: 68

Re: pkexec — not authorized [solved]

polkit is running

root       882     1  0 Oct05 ?        00:00:00 /usr/lib/polkit-1/polkitd

I have to run polkit-gnome?  I can’t find documentation on running it.  Daemon, does it get called as needed???

I think I may have reached the point of diminishing returns.

I don’t need all the complication.  It’s not like I need to protect my machine from me.  Now, if I was setting up a departmental server that’d be different.

I think I’ll just do it like this in my menu:

terminator -T "thunar/root sudo password" --geometry 300x50+20+20 --command "sudo thunar"

Thanks for your help.

Продолжаю воевать с проблемой.

Запуск polkitd для просмотра выхлопа.

al@HWS (11.03.13 15:40:09): ~$ sudo '/usr/lib/policykit-1/polkitd'
Entering main event loop
Connected to the system bus
Registering null backend at priority -10
Using authority class PolkitBackendLocalAuthority
Acquired the name org.freedesktop.PolicyKit1

** (polkitd:22890): WARNING **: skipping unknown tag <_description> at line 15

** (polkitd:22890): WARNING **: skipping unknown tag <_message> at line 16


В этом выхлопе так же была ругань на отсутствие группы «admin» ну что же, пришлось ее добавить. На группу больше не ругается, но эти две злые строчки никуда не делись, как и проблема.


Пользователь решил продолжить мысль 11 Марта 2013, 19:57:49:


Проблема решена !!!

Анализ файла /etc/pam.conf показал что строки, как раз на которые ругался polkitd просто отсутствуют. А именно строка 15 и строка 16, как и все последующие естественно.

1# ---------------------------------------------------------------------------#
2# /etc/pam.conf      #
3# ---------------------------------------------------------------------------#
4#
5# NOTE
6# ----
7#
8# NOTE: Most program use a file under the /etc/pam.d/ directory to setup their
9# PAM service modules. This file is used only if that directory does not exist.
10# ---------------------------------------------------------------------------#
11
12# Format:
13# serv. module    ctrl       module [path] ...[args..]      #
14# name type    flag

Однако в файле сказано, что при наличии директории /etc/pam.d/ содержимое его игнорируется. Анализ директории показал, что этого не происходило в результате поврежденного файла /etc/pam.d/polkit-1 (он был представлен, как изображение).
Замена на аналогичный файл, взятый с LIVE-CD Ubuntu 12.10 решила проблему. Вот нормальное содержимое этого файла :

#%PAM-1.0

@include common-auth
@include common-account
@include common-password
session       required   pam_env.so readenv=1 user_readenv=0
session       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-session

Submitted by Michal Soltys

Assigned to David Zeuthen @david

Link to original bug (#97445)

Description

When no authentication agents are registered and pkexec falls back to pkttyagent, any attempt to authenticate ends with:

pkexec bash
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/bin/bash’ as the super user
Authenticating as: nozo
Password:
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

Note that pkexec works fine with any other authentication agent, for example if I preceeded the above with

/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &

everything would work fine. By itself, pkttyagent works fine with other commands needing authentication, e.g.

systemctl restart systemd-udevd.service

would execute correctly.

Looks like something is amiss between pkexec and pkttyagent in 0.113. Tested on recent and fully updated Archlinux. For the record, polkit is compiled with following configure line on arch:

./configure —prefix=/usr —sysconfdir=/etc
—localstatedir=/var —libexecdir=/usr/lib/polkit-1
—enable-libsystemd-login=yes —disable-static
—enable-gtk-doc —with-os-type=redhat

Понравилась статья? Поделить с друзьями:
  • Error executing command as another user no authentication agent found
  • Error executing child request for handler
  • Error errno 10013
  • Error err invalid url
  • Error err 7620 could not determine workspace for application