Dear Bo, Hans-Werner, and Richard,
I wish at first to thank you for your help.
Then, I think that a small recap could be useful.
Please, select a fixed font ;-)

a) vmwarearts (in vmware-dsp):

user    libvmdsp.so  result
------  -----------  -----------
normal  chmod -s     no preload
root    chmod -s     no /dev/dsp
normal  chmod +s     no preload
root    chmod +s     no /dev/dsp

b) aoss32 (in alsa-oss):

user    emul/.../libaoss.so.0.0.0  result
------  -------------------------  ----------
normal  chmod -s                   no preload
root    chmod -s                   no preload
normal  chmod +s                   no preload
root    chmod +s                   no preload

c) aoss (in alsa-oss):

user    libaoss.so.0.0.0  result
------  ----------------  ----------
normal  chmod -s          no preload
root    chmod -s          sound works
normal  chmod +s          no preload
root    chmod +s          sound works

As to:
Richard:
> Sergio,  try doing chmod +s on /emul/linux/x86/usr/lib/libaoss.so
There is no such file!

Now:

i) I can't understand why root can't open /dev/dsp when running 
vmwarearts. I can only guess that aoss works better ;-)

ii) suid and sgid bits look insignificant (!)

Hans-Werner Hilse:
> You answered my last question about why you are mocking with "chmod
> +s" with something along the lines of "I felt like I had to". What
> makes you think you have to? Why should those libraries be set with
> setuid?

Sorry, my answer was evasive because I've googled a lot and can't 
remember where I've read that I had to ;-)
However, I also tried installing vmwaredsp-1.3 manually, and in the 
install script, runme.sh, there is the line:
install -c -m 4444 64/libvmdsp.so $LIB64/libvmdsp.so
(but even the vmwarearts in this package does not work).
Richard's answer:

> This is necessary because vmware is a setuid executable,
> and you cannot use LD_PRELOAD with setuid executables
> unless those libraries are *also* setuid.

look very interesting, because, as far as I can understand....

testing ~ # cd /opt/vmware/workstation/bin
testing bin # l
total 1872
-rwxr-xr-x 1 root root    12292 Nov  1 00:20 vm-support*
-rwxr-xr-x 1 root root     6160 Nov  1 00:20 vmnet-bridge*
-rwxr-xr-x 1 root root   110872 Nov  1 00:20 vmnet-dhcpd*
-rwxr-xr-x 1 root root   118884 Nov  1 00:20 vmnet-natd*
-rwxr-xr-x 1 root root     5192 Nov  1 00:20 vmnet-netifup*
-rwxr-xr-x 1 root root     8140 Nov  1 00:20 vmnet-sniffer*
-rwxr-xr-x 1 root root     4574 Nov  1 00:20 vmplayer*
-rwxr-xr-x 1 root root     4946 Nov  1 00:20 vmrun*
-rwxr-xr-x 1 root root     4570 Nov  1 00:20 vmware*
-rwxr-xr-x 1 root root   268975 Nov  1 00:20 vmware-config.pl*
-rwxr-xr-x 1 root root   486368 Nov  1 00:20 vmware-loop*
-rwxr-xr-x 1 root root    25488 Nov  1 00:20 vmware-mount.pl*
-rws--x--- 1 root vmware  10852 Nov  1 00:20 vmware-ping*
-rwxr-xr-x 1 root root    90467 Nov  1 00:20 vmware-uninstall.pl*
-rwxr-xr-x 1 root root   694312 Nov  1 00:20 vmware-vdiskmanager*
testing bin #

my vmware *is not* setuid!
However, nothing changes if I do chmod +s on libaoss *and* vmware: 
sound only works when I am root, otherwise libaoss is not preloaded.

BTW, I've installed Ubunto 6.10 and looked at what happened.
Well.... vmwareesd... works!!!
Linux kernel: 2.6.17 i686
glibc: 2.4
libvmdsp.so: setuid (!)

I am in the dark. Also because googling around I can see that a 
similar "preload" problem occurs rather often in several different 
cases, but there is seldom a solution....

Eventually I'll run vmware as root when I'll need sound ;-)

Thanks again
Sergio
-- 
gentoo-user@gentoo.org mailing list

Reply via email to