Если пользователь не сталл вводить пароль при повышениее root-прав -> Приложение вырубается #392

Closed
opened 2 weeks ago by rodion.n · 10 comments
Collaborator

Проблема в следующем, если приложение было запущено без root прав, пользователь нажал на повышение но не стал вводить пароль. Не логичнее будет возвращать пользователю окно без root прав, а не вырубать приложение после отказа ввода пароля?

Проблема в следующем, если приложение было запущено без root прав, пользователь нажал на повышение но не стал вводить пароль. Не логичнее будет возвращать пользователю окно без root прав, а не вырубать приложение после отказа ввода пароля?
rodion.n added the вопрос улучшение labels 2 weeks ago
asmeron was assigned by rodion.n 2 weeks ago
rodion.n self-assigned this 2 weeks ago
YanTheKaller was assigned by rodion.n 2 weeks ago
Poster
Collaborator

Вырубается оно с SIGINT

Thread 1 "ubinstall-gtk" received signal SIGINT, Interrupt.
0x00007ffff09572d2 in ?? () from /usr/lib/libc.so.6
(gdb) up
#1  0x00007ffff094b5c3 in ?? () from /usr/lib/libc.so.6
(gdb) 
#2  0x00007ffff094b604 in ?? () from /usr/lib/libc.so.6
(gdb) 
#3  0x00007ffff09c3aee in poll () from /usr/lib/libc.so.6
(gdb) 
#4  0x00007ffff71208fd in ?? () from /usr/lib/libglib-2.0.so.0
(gdb) 
#5  0x00007ffff70bf787 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
(gdb) 
#6  0x00007ffff79ac2bf in gtk_main () from /usr/lib/libgtk-3.so.0
(gdb) 
#7  0x000055555555d333 in main (argc=<optimized out>, argv=<optimized out>)
    at /home/superadmin/ubinstall-gtk/source/ubinstall-gtk.c:1154


1154	    gtk_main();

Вырубается оно с SIGINT ``` Thread 1 "ubinstall-gtk" received signal SIGINT, Interrupt. 0x00007ffff09572d2 in ?? () from /usr/lib/libc.so.6 (gdb) up #1 0x00007ffff094b5c3 in ?? () from /usr/lib/libc.so.6 (gdb) #2 0x00007ffff094b604 in ?? () from /usr/lib/libc.so.6 (gdb) #3 0x00007ffff09c3aee in poll () from /usr/lib/libc.so.6 (gdb) #4 0x00007ffff71208fd in ?? () from /usr/lib/libglib-2.0.so.0 (gdb) #5 0x00007ffff70bf787 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 (gdb) #6 0x00007ffff79ac2bf in gtk_main () from /usr/lib/libgtk-3.so.0 (gdb) #7 0x000055555555d333 in main (argc=<optimized out>, argv=<optimized out>) at /home/superadmin/ubinstall-gtk/source/ubinstall-gtk.c:1154 1154 gtk_main(); ```
Collaborator

я не имею доступа к информации ввёл он пароль или нет

я не имею доступа к информации ввёл он пароль или нет
Owner

Какой алгоритм работы этого куска кода ?

Какой алгоритм работы этого куска кода ?
Collaborator

Пользователь нажимает кнопку повышения прав - утилита вызывает команду

setsid /usr/bin/bash -c 'pkexec <argv[0]> <аргументы запуска>'; exit" 

где argv[0] - параметр, всегда существующий в утилите. В нём прописан путь до файла, по которому лежит бинарник из которого утилита и была запущена
сразу после вызова команды утилита закрывается и открывается окно пароля от pkexec.
Если не выключить старую копию утилиты в этот момент, то больше у неё не будет возможности закрыться без действий пользователя, новая инстанция открывается как отдельный процесс и со старым никак не связана

Пользователь нажимает кнопку повышения прав - утилита вызывает команду ``` setsid /usr/bin/bash -c 'pkexec <argv[0]> <аргументы запуска>'; exit" ``` где argv[0] - параметр, всегда существующий в утилите. В нём прописан путь до файла, по которому лежит бинарник из которого утилита и была запущена сразу после вызова команды утилита закрывается и открывается окно пароля от pkexec. Если не выключить старую копию утилиты в этот момент, то больше у неё не будет возможности закрыться без действий пользователя, новая инстанция открывается как отдельный процесс и со старым никак не связана
Owner

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

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

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

ошибка уже исправлена, задача про то что мне нужно открывать установщик обратно с неповышенными правами если пользователь не ввёл пароль, на что я и ответил что возможности такой нет
Poster
Collaborator

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

Проблема была исправлена по факту своему тут -> #394

По факту через pkexec же не требуется вводить пароль. Сейчас на данный момент при повышении прав до root он просто переводит программу в root, ранее окно с вводом пароля появлялось потому что искал по неправильному пути. Проблема была исправлена по факту своему тут -> https://gitea.ublinux.ru/Applications/ubinstall-gtk/issues/394#issuecomment-33671
Collaborator

На нормальной системе он будет запрашивать пароль, не запрашивает только в LiveCD

На нормальной системе он будет запрашивать пароль, не запрашивает только в LiveCD
Poster
Collaborator

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

даже в таком случае работает все правильно. Если исправить проблему по которой приложение закрывается если не ввести пароль, нельзя. Значит выставляю `неисправимо` и закрываю.
rodion.n added the неисправимо label 2 weeks ago
rodion.n closed this issue 2 weeks ago
Owner

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

setsid /usr/bin/bash -c 'pkexec <argv[0]> <аргументы запуска>' && exit 0 || exit 1

т.е. сам pkexec возвращает истину либо лож, если не верно ведён пароль или отмена ввода.

Если немного скорректировать команду, то можно получить возврат по отмене пароля или неверному паролю: ``` setsid /usr/bin/bash -c 'pkexec <argv[0]> <аргументы запуска>' && exit 0 || exit 1 ``` т.е. сам pkexec возвращает истину либо лож, если не верно ведён пароль или отмена ввода.
Sign in to join this conversation.
No Milestone
No project
3 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: Applications/ubinstall-gtk#392
Loading…
There is no content yet.