Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Cześć
Jak wieść gminna niesie, Xorg-1.16 potrafi chodzić z uprawnieniami zwykłego pacjenta, nie roota, o ile system ma systemd/logind.
Skoro cholerstwo może chodzić z niższymi uprawieniami, to niech chodzi, tylko, że ja nie planuję systemd.
Mimo wszystko chciałem wiedzieć, czy u kogoś ta wersja rzeczywiście zrzuca uprawienia dzięki systemd.
Wersja Xorga-1.16 właśnie dotarła do Jessie:
https://packages.debian.org/jessie/xserver-xorg-core
Mam praktycznie tą samą:
x11-base/xorg-server-1.16.0 ipv6 nptl static-libs udev wayland xnest xorg xvfb
EDIT:
Jest postęp:
pacjent 28711 5.5 1.7 218572 70920 tty8 Ss+ 09:29 0:02 /usr/bin/X :0 -auth /home/pacjent/.serverauth.28693
Trzeba tylko naskrobać jakąś regułkę udeva albo skrypta, który zmieni uprawnienia do inputów i tty{7|8|9}.
Gdyby ktoś był taki uprzejmy podzielić się wynikiem:
lsof /dev 2>/dev/null | egrep '^X' | awk '{print $9}' | sort |uniq | xargs ls -l
w momencie, kiedy Xorg chodzi z uprawnieniami pacjenta dzięki systemd/logind, to z góry dziękuję. ;)
U mnie wyglada to tak:
lsof /dev 2>/dev/null | egrep '^X' | awk '{print $9}' | sort |uniq | xargs ls -l crw-rw----+ 1 root video 226, 0 07-28 07:43 /dev/dri/card0 crw-rw---- 1 root input 13, 64 07-28 07:43 /dev/input/event0 crw-rw---- 1 root input 13, 65 07-28 07:43 /dev/input/event1 crw-rw---- 1 root input 13, 74 07-28 07:43 /dev/input/event10 crw-rw---- 1 root input 13, 75 07-28 07:43 /dev/input/event11 crw-rw---- 1 root input 13, 76 07-28 07:43 /dev/input/event12 crw-rw---- 1 root video 195, 0 07-28 07:43 /dev/nvidia0 crw-rw---- 1 root video 195, 255 07-28 07:43 /dev/nvidiactl crw------- 1 pacjent tty 4, 5 07-28 09:31 /dev/tty5 crw-rw---- 1 root input 4, 8 07-28 07:43 /dev/tty8
na tty5 jest odpalony startx.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-07-28 09:43:07)
Offline
Jessie z systemd i chodzi na roocie:
crw-rw---- 1 root video 226, 0 lip 28 07:49 /dev/dri/card0 crw------- 1 root root 13, 64 lip 28 07:49 /dev/input/event0 crw------- 1 root root 13, 65 lip 28 07:49 /dev/input/event1 crw------- 1 root root 13, 67 lip 28 07:49 /dev/input/event3 crw------- 1 root root 13, 68 lip 28 07:49 /dev/input/event4 crw------- 1 root root 13, 69 lip 28 07:49 /dev/input/event5 crw------- 1 root root 13, 70 lip 28 07:49 /dev/input/event6 crw--w---- 1 root tty 4, 7 lip 28 07:49 /dev/tty7 crw--w---- 1 root tty 4, 8 lip 28 07:49 /dev/tty8 crw------- 1 root root 10, 63 lip 28 07:49 /dev/vga_arbiter
Offline
Ja popełniłem grupę input, do ktorej nikt nie należy, a Xorg się setgiduje na nią:
-rwx--s--x 1 root input 2543392 07-28 03:19 /usr/bin/Xorg
Jak widać, wieść gminna dotyczy jak zwykle RHELa/Fedory, a Debian się obudzi za X lat. :D
W każdym razie nowy Xorg jest nauczony działać na koncie pacjenta, bo logi zapisuje w takim przypadku w
$HOME/.local/share/xorg/
Ja, żeby było śmieszniej, posługuję się wiki Bubuntu:
https://wiki.ubuntu.com/X/Rootless
Tylko jeszcze nie wyczaiłem, jak wytresować GDM, czy inny *DM.
Ciekaw jestem, jak to z logind rozwiązali.
Pierwsze z Xorgiem na koncie nieroota było jak zwykle OpenBSD. ;)
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-07-28 10:14:04)
Offline
pacman -Q xorg-server xorg-server 1.15.2-1
ehhh.. jak będzie aktualizacja to dodam jak to wygląda u mnie
Offline
W logu żadnych błędów nie zauważyłem:
http://jacekalex.sh.dug.net.pl/logi/Xorg.0.log
Może ktoś sprawdzić umiejętności mojego okulisty? xD
Offline
Sid, systemd:
Zdaje się, że chodzi na uprawnieniach zwykłego usera.
jednak root
sudo lsof /dev 2>/dev/null | egrep '^X' | awk '{print $9}' | sort |uniq | xargs ls -l crw-rw----+ 1 root video 226, 0 lip 28 11:40 /dev/dri/card0 crw------- 1 root root 13, 64 lip 28 11:40 /dev/input/event0 crw------- 1 root root 13, 65 lip 28 11:40 /dev/input/event1 crw------- 1 root root 13, 74 lip 28 11:40 /dev/input/event10 crw------- 1 root root 13, 66 lip 28 11:40 /dev/input/event2 crw------- 1 root root 13, 67 lip 28 11:40 /dev/input/event3 crw------- 1 root root 13, 73 lip 28 11:40 /dev/input/event9 crw--w---- 1 root tty 4, 2 lip 28 11:40 /dev/tty2 crw------- 1 root root 10, 63 lip 28 11:40 /dev/vga_arbiter
Ostatnio edytowany przez jacekz (2014-07-28 11:59:45)
Offline
Wydaje mi się, że nie chodzi o to o co wam chodzi :P
Chodzi o to, że jak był systemd to nie można było w konsoli wklepać "startx", bo X11 wywalał błąd (brak autoryzacji do wykonania operacji), a teraz nie wywala
Chyba, że o coś innego chodzi
Fervi
Offline
Z forum Archa:
From arch-dev-public mailing:
The new version comes with the following changes:
* X is now rootless with the help of systemd-logind, this also means that it must be launched from the same virtual terminal as was used to log in. Please note that launching X through a login-manager (gdm, kdm, ...) doesn't yet provide rootless access. The old root execution behavior can be restored through the Xorg.wrap config file (man xorg.wrap).
* Better glamor accelerated rendering, deprecating glamor-egl package.
* A new package xorg-server-xwayland that allows running X applications inside a wayland session.
* The xf86-video-intel package doesn't yet provide dri3 support because of multiple rendering bugs.
https://bbs.archlinux.org/viewtopic.php?pid=1439835#p1439835
Offline
yossarian napisał(-a):
Z forum Archa:
.....
https://bbs.archlinux.org/viewtopic.php?pid=1439835#p1439835
To RHEL i reszta osiągnęli tyle samo co ja. :D
U mnie też ze startx działa, ale nie mam pomysłu, jak taką akcję zrobić w GDM.
Wygląda na to, że trzeba by łatki na *DM pisać albo źródełka przestudiować, ponieważ co prawda - GDM-2 ma w ustawieniach możliwość ustalania polecania do odpalania X, ale nigdzie tam nie widzę, jak w tym poleceniu użyć zmiennych oznaczających zalogowanego właśnie użytkownika.
Offline
Nie działa w menedżerach logowania bo to nowość.
Pewnie za jakiś czas będzie to w standardzie.
Offline
yossarian napisał(-a):
Nie działa w menedżerach logowania bo to nowość.
Pewnie za jakiś czas będzie to w standardzie.
Nowość, to była w 2010, jak to na wiki Ubuntu opisali.
Teraz RHEL się ruszył po tym, jak w OpenBSD wykastrowali Xorga,
i lata na koncie pacjenta.
Poza tym w managerach logowania to jest bułka z masłem, sam, jak znajdę chwilkę czasu, to zajrzę do kodu GDM.
Dodanie w opcjach uruchamiania Xorga w miejsce
/usr/bin/X -auth
/usr/bin/sudo -u $PACJENT /usr/bin/Xorg -auth
to nie jest jakaś magia, nie wiem tylko na razie, jak wyszarpać odpowiednią zmienną, ale sprawa jest niezbyt odległa, bo przecież środowisko graficzne GDM podnosi z uprawnieniami pacjenta, a nie roota, także mechanizm jest, trzeba tylko podłączyć do tego mechanizmu także Xorga.
GDM ma trochę za długi kod, zobaczę najpierw tego następcę KDM, którego przygotowuje team KDE, jak KDE-5 wejdzie "pod strzechy".
Ten nowy manager z KDE jest pisany w QtQuick, także cały kod, to będzie chyba w granicach tysiąca linii.
Pozdro
;-)
Offline
Jacekalex napisał(-a):
yossarian napisał(-a):
Nie działa w menedżerach logowania bo to nowość.
Pewnie za jakiś czas będzie to w standardzie.Nowość, to była w 2010, jak to na wiki Ubuntu opisali.
Teraz RHEL się ruszył po tym, jak w OpenBSD wykastrowali Xorga,
i lata na koncie pacjenta.
To chyba nie to samo co było kiedyś. Zmiany są głębsze.
Odpowiednie łatki do sterowników trafiły dopiero wiosną tego roku:
In March the changes landed in xf86-video-intel for supporting the Intel driver in this new, more-secure world, per this commit.
Following that, the similar server-managed FD change also landed within the Radeon Git DDX (for whatever reason it didn't show up in my RSS feed until hours ago though it was apparently committed weeks ago).
Offline
Jakie łatki do sterowników?
Całość zabawy, to uprawnienia do /dev/vga_arbiter i /dev/input/*,
przy sterze Nvidii, /dev/dri/card* i /dev/nvidia* mają uprawnienia root:video, i przy innych sterach też takie muszą być, skoro programy korzystające z 3D odwołują się bezpośrednio do tych interfejsów.
Tu raczej, jeśli łatka, to na udeva, żeby uprawnienia były gotowe dla Xorga no-root - OTB.
U mnie to chodzi na Nviidi, która żadnych łatek w tym zakresie nie wprowadziła do sterów, i w ogóle nie jest zgodna z KMS.
Raczej widać dość chorą politykę w Linuxie, np Apache też wstaje domyślnie z uprawnieniami roota, (choć w czasach Capabilities i ACL wcale nie ma takiej potrzeby), podobnie Nginx, podobnie Postfix (gdzie proces master bez roota w ogóle nie wstanie), tak samo Xorg.
I jak zwykle dopiero Gentoo, Arch czy *BSD musi pokazać, że coś innego jest możliwe, to wtedy RHEL ogłasza "wielkie osiągnięcie naszego kochanego Systemd". xD
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-07-28 22:29:19)
Offline
Jacekalex napisał(-a):
U mnie też ze startx działa...
Możesz pokazać jak wygląda twój autostart X-sów z pliku .profile?
Offline
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then while true do exec startx &> /dev/null sleep 10 done fi
nic innego się nie da wymyślić.
Offline
jacekz napisał(-a):
Jacekalex napisał(-a):
U mnie też ze startx działa...
Możesz pokazać jak wygląda twój autostart X-sów z pliku .profile?
Było na forum:
http://forum.dug.net.pl/viewtopic.php?pid=268217
Ta wersja jest prawidłowa:
http://forum.dug.net.pl/viewtopic.php?pid=268217#p268217
@mati75
Po co ta 'wańka-wstańka" w postaci while true?
Przecież Xorga się podnosi raz, i ma chodzić.
Ostatnio edytowany przez Jacekalex (2014-07-28 22:25:02)
Offline
Mam podobnie, ale ciekawi mnie dlaczego X-sy wstają akurat na drugiej konsoli (u mnie)? Myślałem, że to może kwestia tego fragmentu kodu.
Offline
jacekz napisał(-a):
Mam podobnie, ale ciekawi mnie dlaczego X-sy wstają akurat na drugiej konsoli (u mnie)? Myślałem, że to może kwestia tego fragmentu kodu.
To chyba masz babola w skrypcie startx, spróbuj dodać tam gdzieś do polecenia odpalenia Xorga parametr vt7, jeśli jeszcze go nie ma.
Ostatnio edytowany przez Jacekalex (2014-07-28 22:28:11)
Offline
Jacekalex napisał(-a):
Jakie łatki do sterowników?
Całość zabawy, to uprawnienia do /dev/vga_arbiter i /dev/input/*,
przy sterze Nvidii, /dev/dri/card* i /dev/nvidia* mają uprawnienia root:video, i przy innych sterach też takie muszą być, skoro programy korzystające z 3D odwołują się bezpośrednio do tych interfejsów.
Tu raczej, jeśli łatka, to na udeva, żeby uprawnienia były gotowe dla Xorga no-root - OTB.
Nie czytałem za dużo o tym, ale deweloperzy sterowników chyba lepiej wiedzą co robią. Przynajmniej mam taka nadzieję :)
Offline
yossarian napisał(-a):
Jacekalex napisał(-a):
Jakie łatki do sterowników?
Całość zabawy, to uprawnienia do /dev/vga_arbiter i /dev/input/*,
przy sterze Nvidii, /dev/dri/card* i /dev/nvidia* mają uprawnienia root:video, i przy innych sterach też takie muszą być, skoro programy korzystające z 3D odwołują się bezpośrednio do tych interfejsów.
Tu raczej, jeśli łatka, to na udeva, żeby uprawnienia były gotowe dla Xorga no-root - OTB.Nie czytałem za dużo o tym, ale deweloperzy sterowników chyba lepiej wiedzą co robią. Przynajmniej mam taka nadzieję :)
To raczej marketoidalne pieprzenie REHLa i podobnych oryginałów, cytowane potem przez pudelka Phoronixa.
Kernel wczytuje sterowniki, ale interfejsy INPUT tworzy moduł Evdev, za /dev/vga_arbiter odpowiada kernel.
Nawiasem pisząc, maska uprawnień do takiego czy innego interfejsu,to jest "strasznie skomplikowana" zmiana jednej linijki w kodzie.
W dodatku sprawa rozbija się głównie o inputy, a nie słyszałem, żeby Intel robił stery do klawiatur i myszek. :D
Tu raczej odpowiedzialne są moduły HID, BT i podobne, a nie stery do grafiki.
Z samej grafiki trzeba zmieniać uprawnienia tylko do /dev/vga_arbiter, to jest interfejs wspólny dla wszystkich sterowników grafiki - jest częścią API kernela.
Ostatnio edytowany przez Jacekalex (2014-07-28 22:54:42)
Offline
Już ktoś o tym pisał wcześniej: #742808
I przykładowe linki jak to działa:
OpenBSD:
http://undeadly.org/cgi?action=article&sid=20140223112426
Fedora/RH:
http://hansdegoede.livejournal.com/14446.html
Offline
Jacekalex napisał(-a):
Raczej widać dość chorą politykę w Linuxie, np Apache też wstaje domyślnie z uprawnieniami roota, (choć w czasach Capabilities i ACL wcale nie ma takiej potrzeby), podobnie Nginx, podobnie Postfix (gdzie proces master bez roota w ogóle nie wstanie), tak samo Xorg.
I jak zwykle dopiero Gentoo, Arch czy *BSD musi pokazać, że coś innego jest możliwe, to wtedy RHEL ogłasza "wielkie osiągnięcie naszego kochanego Systemd". xD
zgadzam się w 100%. no ale niestety nie wszystko jest idealnie (i tak nie jest źle).
@jacekz
tak na marginesie; -u mnie na Archu już gdzieś od ~miesiąca Xy nie wstają pod "Ctrl-alt-f7" a "Ctrl-alt-f1" ;p
Offline
@dominbik
A u mnie Xy na tty1 dopiero od 32 minut ;P
Offline
jacekz napisał(-a):
@dominbik
A u mnie Xy na tty1 dopiero od 32 minut ;P
Podejrzewam, że te Xy na konsolach poniżej vt7 - to przygotowania na Waylanda.
Kiedy pacjent loguje się na konsolę tekstową przez *getty, to automatycznie przejmuje na własność tą konsolę, jej uprawnienia wtedy zmieniają się na
$USER:tty
Jeśli wtedy serwer obrazu wstanie na konsoli należącej do pacjenta,
to trudno sobie wyobrazić bezpieczniejsze rozwiązanie.
Dlatego generalnie nie ma się czym martwić.
Po prostu Wayland powoduje zmianę sposobu używania ekranu graficznego w Linuxie, logika działania ekranu graficznego upodabnia się w użyciu do Alsy, dźwięk też można mieć na każdej konsoli, a nie tylko jakiejś ekstra graficznej, nie ma żadnego powodu, żeby serwer obrazu miał jakieś ekstra uprawnienia, których w praktyce w ogóle nie potrzebuje do normalnej pracy.
Nie wiem, czy ktoś zauważył małe drobiazgi związany z Xorgiem-1.16:
Pierwszy:
x11-base/xorg-server-1.16.0 ipv6 nptl static-libs suid udev wayland xnest xorg xvfb
Ta flaga włącza:
+ + wayland : Enable dev-libs/wayland backend
Drugi:
Od tej wersji, cała akceleracja 2D jest realizowana przez interfejs OpenGL, z użyciem mechanizmu Glamor, to już jest rozwiązanie zaczerpnięte z koncepcji Waylanda.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-07-29 01:12:06)
Offline
Mam już nowego Xorga 1.16 udało wam się go uruchomić z poziomu zwykłego użytkownika? bo mi przy próbie uruchomienia:
[ 974.240] (--) using VT number 1 [ 974.240] (EE) Fatal server error: [ 974.240] (EE) xf86OpenConsole: Cannot open virtual console 1 (Permission denied) [ 974.241] (EE) [ 974.241] (EE)
wcześniej było brak uprawnień do /dev/tty1 zmieniłem
sudo chown $USER /dev/tty${VT}
sudo chmod o+rw /dev/input/*
wzorując się na:
https://wiki.ubuntu.com/X/Rootless
Offline