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 roam@space.bg roam@ringlet.net roam@FreeBSD.org 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.
Attachment:
signature.asc
Description: Digital signature