• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

FreeBSD : Problem mit sway & wayfire

Themenstarter #1
Moin !

Gestern gab es ein Update für den Port "drm-devel-kmod" auf 5.4* !
Habe jetzt meine Radeon-XT5500 (navi14) zum laufen bekommen !

Jetzt wollte ich eigentlich mal Wayfire antesten . Leider gab es ein Problem .
Dachte dann, teste ich mal Sway .... leider das gleiche Problem.

Beim Start von Wayfire bzw. Sway kommt folgende Meldung :

" Unable to drop root (we shouldn't be able to restore it after setuid), refusing to start "

Im Netz habe ich nichts hilfreiches (ausser: sudo chmod +s /usr/local/bin/sway) gefunden !


Hat jemand vielleicht ne` Idee ?

Gruss
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#2
Blind geraten: Du startest die Compsitor als root. Sie müssen allerdings als normaler, unprivilegierter Nutzer gestartet werden. Der Nutzer muss Mitglied der Gruppe video sein.
 
Themenstarter #3
Hallo !

Das ist ja was ich nicht verstehe !

Ich starte natürlich als user !

┌[bluescreen]-(~)-
└> groups
wheel operator video input

:ugly:
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#4
Öh... Das ist interessant. Da ich kaum Erfahrungen mit Sway und Wayfire habe, weiß ich es nicht. :/
 

turrican

Well-Known Member
#5
@bluescreen - kannst du wayfire mal mittels truss starten und im Log schauen, was genau vorgeht?
Hat mir schon manchmal weitergeholfen - ggf läßt sich wayfire aber mittels truss eh nicht korrekt starten; einfach ausprobieren.

Alternativ auch dtruss [1] - das nutzt dann dtrace, kann aber ggf wg der in der Zwischenzeit aufgelaufenen Änderungen u.U nicht mehr richtig funktionieren (das Skript ist von 2005)

[1] http://www.brendangregg.com/DTrace/dtruss
 

das.chaos

Duracellhase 2.0
#6
Moin !
Hat jemand vielleicht ne` Idee ?
Ein Blick in Codebase von Sway erhaertet den Verdacht, das setgid(2) sowie setuid(2) scheiterten bzw. entweder hier oder dort, weil (Zitat aus Manualpage):
Code:
ERRORS
     The system calls will fail if:

     [EPERM]            The user is not the super user and the ID specified is
                        not the real, effective ID, or saved ID.
Am Socket liegt es anscheinend nicht, weil sonst entsprechende Fehlermeldung. Mit welchen Optionen wurde es versucht bspw. Sway zu starten?
 
Themenstarter #8
Das Problem ist ja beim Start von sway und wayfire .....

u.a. kommt auch diese Meldung : libEGL warning: DRI2: failed to authenticate

... ich werd mal weiterprobieren .....

Gruss
 

turrican

Well-Known Member
#9
Kenne wayfire nicht, kann deshalb nur im Log stochern...

Braucht wayfire ein gesetztes SUID bit am Binary?

Aus der Freshports-Site:
Configuration Options
===> The following configuration options are available for wayfire-0.5.0:
SUID=on: setuid bit on "wayfire" binary (required for DRM session)
X11=on: X11 (graphics) support
===> Use 'make config' to modify these settings
Im truss log sieht man auch etliche "file not found" bei welchen die Pfade direkt auf /lib (u.a. /lib/libwayland-server.so.0) bzw /usr/lib (z.B. /usr/lib/libLLVM-8.so) zeigen;
Schaut für mich auf den ersten Blick aus, als ob Abhängigkeiten fehlen würden, bzw sollte sich bei FreeBSD vieles eher in /usr/local/lib als in /lib bzw /usr/lib befinden?

Auch sucht es nach ner drirc (in versch. Pfaden) bzw $HOME/.drirc welche nicht da zu sein scheint.
 

das.chaos

Duracellhase 2.0
#10
Schaut für mich auf den ersten Blick aus, als ob Abhängigkeiten fehlen würden
Jain - das sind verkettete Condition-tests bzw. File-queries, wie bspw. von #39-42:
Code:
open("/lib/libwlroots.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/libwlroots.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/compat/libwlroots.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/libwlroots.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)  <--- queried *file*
Im truss log sieht man auch etliche "file not found" bei welchen die Pfade direkt auf /lib (u.a. /lib/libwayland-server.so.0) bzw /usr/lib (z.B. /usr/lib/libLLVM-8.so) zeigen;
libwayland-server.so.0: Verkettete Condition-tests bzw. File-queries von #26-29:
Code:
open("/lib/libwayland-server.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/libwayland-server.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/compat/libwayland-server.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/libwayland-server.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3) <---- queried *file*
libLLVM-8.so: Verkettete Condition-tests bzw. File-queries von #1048-1058:
Code:
open("/lib/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/compat/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/e2fsprogs/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/gcc9/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/graphviz/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/perl5/5.32/mach/CORE/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/qt5/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/lib/samba4/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/local/llvm80/lib/libLLVM-8.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 6 (0x6)   <---- queried *file*
Queries von #1160-1166 sind interessant:
Code:
openat(AT_FDCWD,"/usr/local/etc/drirc",O_RDONLY,00) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/share/nls/C/libc.cat",0x7fffffffc2d0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/share/nls/libc/C",0x7fffffffc2d0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/C/libc.cat",0x7fffffffc2d0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/libc/C",0x7fffffffc2d0,0x0) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/home/bluescreen/.drirc",O_RDONLY,00) ERR#2 'No such file or directory'
open("/usr/local/share/drirc.d",O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC,0240434300) = 6 (0x6)
Wobei von #1179-1180:
Code:
openat(AT_FDCWD,"/usr/local/etc/drirc",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/home/bluescreen/.drirc",O_RDONLY,00) ERR#2 'No such file or directory'
tatsaechlich fehlt.

Braucht wayfire ein gesetztes SUID bit am Binary?
Die Zeilen von #1394-1398 spiegeln vermutlich drop_permissons()
Code:
getuid()                     = 1001 (0x3e9)
geteuid()                     = 1001 (0x3e9)
getgid()                     = 0 (0x0)
getegid()                     = 0 (0x0)
setgid(0x0)                     = 0 (0x0) <--- #200 [sway/main.c]
bzw. das.
 
Zuletzt bearbeitet:

turrican

Well-Known Member
#11
@bluescreen - welchen Grafikkarten-Treiber benutzt du?

So wie ich den Code lese, müsste man für proprietäre Treiber (AMD wie nVidia) den Parameter -u mitgeben, welcher im Hilfetext jedoch nicht erwähnt wird:

Code:
const char* usage =   
"Usage: sway [options] [command]\n"      
"\n"      
"  -h, --help             Show help message and quit.\n"      
"  -c, --config <config>  Specify a config file.\n"      
"  -C, --validate         Check the validity of the config file, then exit.\n" 
"  -d, --debug            Enables full logging, including debug information.\n"      
"  -v, --version          Show the version number and quit.\n"      
"  -V, --verbose          Enables more verbose logging.\n"      
"      --get-socketpath   Gets the IPC socket path and prints it, then exits.\n"      
 "\n";
Code:
case 'u':      
 allow_unsupported_gpu = 1;
 
Themenstarter #12
Moin !

System : FreeBSD 13 & amdgpu ( drm-devel-kmod )

Sway mit " sway -u " zu starten funktioniert nicht --> unbekannte funktion !

Soweit ich alles richtig verstehe baut sway auf wlroots (x11-toolkits/wlroots) auf !
Beim Bau von wlroots gibt es verschiedene Optionen (siehe Bild) !

Werde ich mal , wenn Zeit , antesten !

Aber vieleicht liegt das Problem auch ganz woanders !
Ich benutze zum "mounten" von Geräten dsbmd/dsbmc , dort
gibts anscheinend auch Probleme mit der authentifizierung !

Gruss
:ugly:
 

Anhänge

Themenstarter #13
Moinsen !

Problem gelöst !

Habe mal einen neuen user angelegt. User ist nur in der
Gruppe "wheel" ! Dann funktionierts !

Ich als Benutzer bin noch in "Operator" , denke das ist das
Problem !

Gruss