Я использую Ubuntu 11.04.
Я пытаюсь использовать execlp-программу "C" для запуска Java-программы, а затем я хочу установить setuid для программы "C", чтобы Java-программа могла выполняться как root. Вот пример этого здесь:
http://www.coderanch.com/t/110254/Linux-UNIX/setuid
Я следовал примеру до буквы, но вместо того, чтобы быть пользователем tomcat, я использовал root.
Root может выполнять программу "C", которая, в свою очередь, выполняет программу Java. И, прежде чем передать права владения root, Пользователь (я) может запустить программу «C», которая выполняет программу Java. Но однажды я настроился на использование setuid, и Пользователь пытается выполнить программу. Я получаю ошибку типа LD_LIBRARY_PATH:
java: ошибка при загрузке общих библиотек: libjli.so: не удается открыть файл общих объектов: нет такого файла или каталога
Файл libjli.so существует в Java JRE. Пользователь и Root могут видеть этот файл, когда они запускаются по отдельности. Но пользователь не может увидеть его, когда запускает программу после установки root.
Есть ли какой-нибудь другой способ, которым LD_LIBRARY_PATH root устанавливается при запуске программы setuid? Это интерактивная или неинтерактивная проблема?
Есть идеи? Заранее спасибо.