LINUX.ORG.RU

pkexec, дыра или фича?

 


0

1

Начал писать программу на Qt, которая должна в /etc вносить некоторые правки.
Для получения прав root начал гуглить такие вещи как kdesu/gksu, но оказалось что они не актуальны и необходимо использовать pkexec.

Но тут заметил, что pkexec su вполне себе заходит в оболочку под root используя пароль пользователя. Это нормально?

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

ls -lah /etc/polkit-1/rules.d/
total 8.0K
drwxr-x--- 2 root polkitd 4.0K Jan 15 11:36 .
drwxr-xr-x 3 root root    4.0K Jan 31 22:37 ..
pkexec cat /etc/shadow
# показывает содержимое файла
★★★★

Последнее исправление: IIIypuk (всего исправлений: 4)
Ответ на: комментарий от IIIypuk

Хз что у вас за дистр, на Ф41:

pkexec cat /etc/shadow
Error executing command as another user: Request dismissed

А до этого спросил мой пароль я же wheel.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Тоже считаешь, что так быть не должно?
Я раньше не вникал, как работет PolKit, может так и должно быть (не думаю).

IIIypuk ★★★★
() автор топика
Последнее исправление: IIIypuk (всего исправлений: 1)
Ответ на: комментарий от IIIypuk

Круто, спасибо. Убрал себя из wheel и начало спрашивать пароль пользователя.

Ну тогда скорее всего нет дыры, полазь там по /etc/sudoers, там поди у wheel стоит но-пассворд на все или на эту команду …

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

В man’е ничего про wheel не написано. В документации к другим дистрам необходимо добавить правило, чтобы wheel имел права.
И только в Arch Wiki есть абзац:

Polkit works by delimiting distinct actions, e.g. running GParted, and delimiting users by group or by name, e.g. members of the wheel group.

IIIypuk ★★★★
() автор топика

Делай раз:

$ pacman -Ql polkit | grep rules
polkit /etc/polkit-1/rules.d/
polkit /usr/share/polkit-1/rules.d/
polkit /usr/share/polkit-1/rules.d/50-default.rules

Делай два:

$ cat /usr/share/polkit-1/rules.d/50-default.rules
/* -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- */

// DO NOT EDIT THIS FILE, it will be overwritten on update
//
// Default rules for polkit
//
// See the polkit(8) man page for more information
// about configuring polkit.

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:wheel"];
});

Делай три:

$man polkit

The addAdminRule() method is used for adding a function that
may be called whenever administrator authentication is
required. The function is used to specify what identities
may be used for administrator authentication for the
authorization check identified by action and subject.
Functions added are called in the order they have been added
until one of the functions returns a value. Each function
should return an array of strings where each string is of
the form "unix-group:<group>", "unix-netgroup:<netgroup>" or
"unix-user:<user>". If the function returns null, undefined
or does not return a value at all, the next function is
tried.

P.S. Если не хочется самому настраивать дистр - лучше не использовать Arch =)

Belkrr
()

заходит в оболочку под root используя пароль пользователя. Это нормально?

Да, нормально. Ибо по соображениям безопасности пользователь root обычно запрещён и скрыт. Ну а если вы любитель работать под рутом - ССЗБ.

ALiEN175
()
Ответ на: комментарий от ALiEN175

Больше 10 лет работаю под рутом и не использую sudo. Брат жив.

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

IIIypuk ★★★★
() автор топика
Последнее исправление: IIIypuk (всего исправлений: 2)
Ответ на: комментарий от ALiEN175

Ты несёшь бред, с каких пор там нет root? У него просто пароль не задан и нужно выполнять sudo su.

IIIypuk ★★★★
() автор топика
Последнее исправление: IIIypuk (всего исправлений: 1)
Ответ на: комментарий от ALiEN175

Я и не втыкал, это Arch сам :) До обновления на KDE 6 у меня всегда пароль от root спрашивало.

IIIypuk ★★★★
() автор топика
Последнее исправление: IIIypuk (всего исправлений: 1)
Ответ на: комментарий от ALiEN175

по-умолчанию - рута нет

Да ладно? В любой юникс-подобной системе есть root. Даже в макоси. Просто пока для него не задан пароль, под ним нельзя залогиниться, вот и всё. А процессы, запущенные от рута, есть и их легко увидеть. Как и файлы, принадлежащие руту.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от annulen

Ну я и говорю именно про учётку, а не про то что вообще рут в системе отсутствует.

$: sudo passwd -S root
root L 2010-09-19 -1 -1 -1 -1

$: sudo passwd root
Новый пароль:
Повторите ввод нового пароля:
passwd: пароль успешно обновлён

$: sudo passwd -S root
root P 2025-03-28 -1 -1 -1 -1
ALiEN175
()
Последнее исправление: ALiEN175 (всего исправлений: 1)