On Sun, Nov 14, 2010 at 07:08:15PM +0000, James Brown wrote: > ОС - Lenny AMD64 > Как запустить команду с заданной переменной при использовании gksu и > возможно ли это? [snip] > Запускаю gksu -w -u skypeuser LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so > skype
Так, начать с тем, что более сигурно подавать такие переменние через
команду "env". "VAR=val cmd args" - это синтаксис шела; но когда
подаете команду, которую какая-нибудь другая команда (не шел) выполнит -
тогда наиболее сигурно подать "env VAR=val cmd args". Так что:
gksu -w -u skypeuser env LD_PRELOAD=/usr/lib32/.... skype
Если этo сработает, то, значит, в Вашем примере gksu пыталось запустить
программу по имени "LD_PRELOAD=/usr/lib/..." и подать ей "skype" как
первый параметр. Через env - все, что надо.
Если это не сработает, тогда есть еще кое-что. В документации ld.so
(runtime loader, который вправду загружает программ в памяти) есть
что-то такое:
LD_PRELOAD
A whitespace-separated list of additional, user-specified, ELF
shared libraries to be loaded before all others. This can be
used to selectively override functions in other shared libraries.
For setuid/setgid ELF binaries, only libraries in the standard
search directories that are also setgid will be loaded.
Так что, если Вам хочется выполнять setuid программу (а если запускаете
что-то через gksu, то оно заведомо является setuid, хотя и индиректно),
тогда надо сделать и LD_PRELOAD библиотеку setuid. Попробуйте что-то
вроде chmod u+s /usr/lib32/libv4l/v4l1compat.so, может, сработает.
Но прежде всего попробуйте запустить skype посредством env, как описано
выше; если сработает, не делайте ничего setuid.
Всего лучшего,
Петр
--
Peter Pentchev [email protected] [email protected] [email protected]
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
If wishes were fishes, the antecedent of this conditional would be true.
signature.asc
Description: Digital signature

