Skocz do zawartości

Jak Wywołać Polecenie Z Programu Z Prawami Roota?


WalDo

Rekomendowane odpowiedzi

Mniej więcej problem tak jak w temacie i "podtemacie"

Zaczynam dopiero cos tam sobie dłubać pod linuksem w środowisku graficznym. Wpadł mi w ręce uproszczony kurs Qt Designera.

Trochę potrenowałem no i teraz probuję zrobić rzecz z pozoru banalną. Chcę wywołać z programu polecenie lub odczytać plik do którego prawa ma tylko root. Konkretnie, to mam formatkę ekranową na niej batona i textEdit. Po kliknięciu na batona w oknie tekstowym ma ukazać się końcówka sysloga ("tail /var/log/messages"). Z root działa, ze zwykłego usera oczywiście nie - wiadomo, log systemowy.

 

Rozwiąznie chciałbym mieć podobne jak jest np. przy wywołaniu "synaptica" z menu (u mnie to jest K->Ustawienia systemowe->Synaptic Package Manager). Po wywołaniu pokazuje się ładne okienko z miejscem na wpisanie hasła (_root'a_ → roota) ORT. Podasz prawidlowe - jedziesz dalej, nie - wynocha. Proste co? :(

 

PYTANIE: Jak zrobić takie okno i przekazać gdzie trzeba (no właśnie gdzie trzeba?) odpowiednie parametry?

 

Z góry przepraszam, jeśli coś takiego już było na forum, ale przeszukanie "na piechotę" wiekszej ilości postów jest lekko upierdliwe i czasochłonne, a nie mam pojęcia jakie zadać pytanie, żeby znaleźć odpowiedź tu czy w googlach :unsure:

 

Będę wdzięczny za wszelką pomoc: linki do tutoriali, wskazanie klasy, z której trzeba skorzystać itp.

 

Z góry dzięks,

W.

Odnośnik do komentarza
Udostępnij na innych stronach

mialem podobny problem, gdy logi systemowe mialem wrzucane do themu karamby na pulpicie, ale bylem jedynym uzytkownikiem, wiec nadalem prawa do czytania logow wszystkim i zadzialalo,

jednak przyznam ze Twoj sposob bylby duzo lepszy (pytanie o haslo) bo rozumiem ze to z logami to tylko przyklad, wiec trzeba by znalezc rozwiazanie na dluzej ( i dzialajace na inne programy),

 

a jesli chodzi o same logi to mozna by tez spróbowac utworzyc drugiego logo, ktorego wlasicicielem byl by uzytkownik i logowac w nim to samo co w messagess

Odnośnik do komentarza
Udostępnij na innych stronach

mynus: No nie :( niestety. Dzięki za zainteresowanie tematem, ale zależy mi na rozwiązaniu na dłużej, czyli tak jak napisałem:

1.program uruchamiam z konta zwykłego usera

2.program woła funkcję system() i próbuje wykonać nieuprawnioną operację

3.pojawia się okienko z pytaniem o hasło (_root'a_ → roota) ORT, podaję i polecenie się wykonuje.

 

Najgorsze, że nie umiem wymyślić odpowiednich kluczowych słów dla Googli, bo na pewno to gdzieś musi być :)

 

Pomysł z dopisaniem usera do grupy root, czy zmiana uprawnień na plikach odpada. Mam stałe łącze do internetu z publicznym IP, więc jak piszą mądrzejsi ode mnie w tym temacie miałbym od 30 sek do 5 minut zanim dostałbym jakiegoś rootkita albo inny syf. I tak ciężko się bronić, ale jakbym z konta z uprawnieniami (_root'a_ → roota) ORT oglądał internet....hmmm.... :) to by mogło być ciekawe :) pewnie zaraz zaczęłyby się zwisy systemu, niespodziewane restarty itp - już to kiedyś przerobiłem i nigdy więcej B)

 

Winiu: To niestety nie jest sposób. O ilu wiem 'sudo' też trzeba uwierzytelnić hasłem wywołującego program i dopisać go do grupy "sudoerów" ;), więc problem pozostaje + uwagi powyżej dot.bezpieczeństwa :(

 

Pozdr,

W.

Odnośnik do komentarza
Udostępnij na innych stronach

Jestem zerem w tym temacie, ale swego czasu też się nad tym zastanawiałem. Mam poszlaki, żeby przypuszczać, że to pam_stack.so service=system-auth jest za to odpowiedzialne. Spróbujcie poszukać w google'ach i koniecznie napiszcie, jeśli Wam się uda. Z góry przepraszam, jeśli to nie o to chodzi - ja poprostu zgaduję.

Odnośnik do komentarza
Udostępnij na innych stronach

A moze pomozecie na moj problem :?:

jako zwykly user nie mam zadnych prad partycji wingrozy :(

Nadaje im prawa ale one powracaja do wczesniejszego stanu

 

Czego to moze byc wina :?: prosze o pomoc

 

Ps. W roocie mam do nich prawa ale po zmianie wracaja na poprzednie ustawienia

Ps2 Wesloych swiat

Odnośnik do komentarza
Udostępnij na innych stronach

Musisz w /etc/fstab ustawić w opcjach umask=0xyz, np:

/dev/hda1               /mnt/win_c              vfat    defaults,rw,umask=0000  0 0
/dev/hda5               /mnt/win_d              vfat    defaults,rw,umask=0000  0 0
/dev/hda6               /mnt/win_e              ntfs    defaults,ro,umask=0222  0 0

 

Aha - umask to jakby odwrotność zwykłych praw dostępu: czyli nie ustawiasz, co wolno robić, ale czego nie wolno. Pamiętaj o 0 na początku (postać ósemkowa).

Odnośnik do komentarza
Udostępnij na innych stronach

Ostatnio troche bawiłem się w QT (projekt z programowania). Z kilkugodzinnego doświadczenia z Qt designerem odradzam tworzenia aplikacji przez tego typu programy. Alternatywą jest oczywiście pisanie w języku c++ z użyciem bibliotek QT.

 

Polecam trolltech jest też co nieco na ten temat w linux-paper :)

Odnośnik do komentarza
Udostępnij na innych stronach

_Pat musiałeś pisać akurat o PAM? ;) To temat, do którego przymierzam się od dłuższego czasu i ciągle nie mogę się zebrać. A po wstępnej inwestygacji wygląda na to, że możesz mieć rację :)

Sanczo: Dlaczego odradzasz Qt Designera? Ja nie mam właściwie żadnego doświadczenia programerskiego, więc jest dla mnie znacznym ułatwieniem możliwość utworzenia obiektów, obsadzenia slotów itp. bez ręcznej, pracochłonnej rzeźby. Oczywiście resztę kodu piszę w C++. Qt Designer wydał mi się bardziej przyjaznym środowiskiem do utworzenia wstępnego szkieletu (design) aplikacji niż np. KDevelop, dorzucający taką masę "śmieci" od siebie, że początkujący po prostu sie gubi. Możesz przybliżyć temat i uzasadnić swoją opinię? Dzięki.

Edit: Trolltecha oczywiście studiuję z uwagą, Ściągnąłem sobie całe 22MB (całe 464 str.) manuala "C++ GUI Programming with Qt 3"

 

Pozdr,

W.

Odnośnik do komentarza
Udostępnij na innych stronach

Eeee, no nie :) Pisałem że jestem leniwy. Wiem, że dla początkującego to prosty edytor najlepszy, bo łatwiej zapamiętać standardowe formułki, ale ja wolę jednak jak mi się tak podgotowany lekko szymelek pokaże ;)

 

No i sprawa nie w braku podręcznika, bo tak jak pisałem ściągnąłem całą grubą księgę. Bardziej zależy mi na rozwiązaniu konkretnego problemu, czyli jak zrobić zeby pokazało się pytanko o hasło (_root'a_ → roota) ORT, jeśli mam niewystarczające prawa do wykonania pliku.

 

Pozdr,

W.

Odnośnik do komentarza
Udostępnij na innych stronach

Waldo Kiedy tworzysz w QT designerze i zapisujesz projekt do pliku to tworzony jest kod który przypomina coś w stylu html'a o rozszerzeniu (z tego co pamiętam) jakieś .ui... trudne do zdefiniowania. Spewnością moje doświadczenie z QT designerem jest mizerne ale wolałbym otrzymywać od programu kod ktory jestem w stanie modyfikować a nie patrzeć i krecić głową. Faktycznie zagalopowałem się, kożystanie z bibliotek QT przez c++ wymaga obeznania z projektoaniem obiektowym więc nie każdemu jest w stanie posłużyć za narzędzie. Ale jeśli jesteśmy w stanie tworzyć własne klasy i ustawiać odpowiednie dziedziczenie między klasami obiektów to potrafimy skonfigurować aplikacje od podstawy podstaw... Wtedy problem z oknem logowania nie wydaje się już tak nierozwiązywalny (zastosowanie funkcji systemowych exec, login), myśle że to może być jedna z dróg:)

 

powodzenia w starciu z QT :D

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Sanczo: Dzięki za te exec() i login() - spróbuje z tym chociaż to wciąż tylko workaround :(

Co do .ui to jakoś nie mam nic przeciwko tej formie. Wygląda jak "specjalizowany" ;) XML. Można z grubsza wyczaić o co chodzi a szczegóły pewnie jak zwykle w googlach

Pozdr,

W.

Odnośnik do komentarza
Udostępnij na innych stronach

Jest tez takie cos jak su -c 1komenda, pozniej wyskakuje prosba o haslo, mozesz z dialogBoxu zrobic przekierowanie na konsole i wpisac to haslo i wtedy komenda sie wykona poprostu z palca a user sam sie przelaczy spowrotem. Minusem jest to ze przy kazdym odswiezaniu musisz wpisywac haslo, ale to tez mozna rozwiazac programowo ;)

 

pozdro,

buman

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...