тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
Программы, как известно, могут состоять не только из исполняемого файла, но и из библиотек (dll/so), которыми исполняемый файл пользуется при своей работе.
Если вы в винде, то всё пучком: вы приносите на флешке прогу (myprog.exe + myproglib.dll) и прямо с флешки её же запускаете, всё работает.
Если вы в линуксе, то никакого пучка не получится: библиотека должна лежать в строго определённых папках, куда её поместить можно лишь имея права админа.

Вопросы:
1) Науя это сделано? Это никак не повышает безопасность системы, лишь вносит неудобства.
2) Как это обойти? Хочу распространять свою программу в виде двух файлов: исполняемого и библиотеки. Хочу, чтобы пользователь мог её запустить на своём компе, не имея прав админа. Идеальный вариант - чтобы юзер мог запустить программу из любой папки, просто скопировав туда два моих файла (myprog + libmyprog.so).

Просветите, пжлст.

Комментарии
28.01.2012 в 15:04

злобная недохронокросса
О кстати, тоже интересуют подобные вопросы.
28.01.2012 в 19:00

А нельзя ли просто прописать дополнительный путь в LD_LIBRARY_PATH?
28.01.2012 в 21:03

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
в убунте какие-то проблемы с LD_LIBRARY_PATH
эта переменная, типа, вообще запрещена, начиная с 9-ой версии
может, я что не так понял, но записать её в /etc/environment не получается
или для локальных целей она доступна?
28.01.2012 в 22:35

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
LD_LIBRARY_PATH оказывается, локально работает!

правильно ли я понял, что предлагается вместо исполняемого файла myprog запускать вот этот "батник"?
export LD_LIBRARY_PATH=$(pwd)
./myprog

(немного некрасиво - вместо пары файлов придётся таскать три файла, но лишь бы работало)
это самый лучший способ?
29.01.2012 в 02:32

この世界は。。。いいですか?
1) Науя это сделано? Это никак не повышает безопасность системы, лишь вносит неудобства.
Это офигенно повышает безопасность системы и отсекает такие вот неправильные желания.

2) Как это обойти? Хочу распространять свою программу в виде двух файлов: исполняемого и библиотеки. Хочу, чтобы пользователь мог её запустить на своём компе, не имея прав админа. Идеальный вариант - чтобы юзер мог запустить программу из любой папки, просто скопировав туда два моих файла (myprog + libmyprog.so).
Это неправильное желание. Где гарантия, что это будут именно Ваши два файла, а не модифицированные неким любителем команды "rm -rf /"? Сделайте нормальный deb-пакет, это просто.

это самый лучший способ?
Этот способ вообще никуда не годится, поскольку нормальные админы монтируют раздел с домашними каталогами с опцией noexec. Именно для защиты от таких "способов".
29.01.2012 в 02:58

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
nio, в той ситуации, которую вы описали, пользователь вообще не сможет установить ни одну программу без админа. Ситуация, имхо, полностью бредовая.
Представьте, что программа myprog - это, например, калькулятор. Предлагаете по каждой мелочи звать админа? Конечно, среди админов бывают параноики, но давайте говорить о здоровых людях.
Защита ОС заключается в разграничении прав доступа к системным файлам. Приложение, запущенное без админских прав, ничего страшного (для системы) не натворит.
А раз приложению никакие привилегии не нужны, зачем они обязательно должны требоваться для установки?
А кроме домашних каталогов ещё есть /tmp :)
29.01.2012 в 12:01

CD_Eater, приложение без админских прав может нанести вред пользователю.

Лучший способ распространить приложение - сделать deb пакет. Если пользователь не имеет sudo - значит так задумано админом.
29.01.2012 в 13:07

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
Переформулируем задачу так:
У пользователя нет sudo. Но он хочет пользоваться моей программой на своём компе. Какие существуют варианты?
29.01.2012 в 13:18

CD_Eater,
Вы сейчас идете в область "обмануть админа" и получить больше прав, чем есть.
29.01.2012 в 14:32

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
почему меня упорно не хотят понимать?
никто никого не хочет обманывать
админья область ответственности ограничивается системными файлами, не следует нагружать админов всякой ерундой типа "можно ли мне очистить корзину?"
естественное право любого пользователя - запускать любые программы в рамках своих прав доступа к файловой системе
например, если установлена джава, то пользователь может запустить что угодно, написанное на джаве, и никакой noexec ему не помешает. это по-вашему дыра в защите?
30.01.2012 в 20:49

естественное право любого пользователя - запускать любые программы в рамках своих прав доступа к файловой системе
Это не естественное право. Именно поэтому под линукс 8 вирусов, и те без sudo не собрать.
30.01.2012 в 20:59

Тигр,
во-во
30.01.2012 в 23:10

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
похоже, Тигр не понимает смысл и назначение разграничения прав доступа в файловой системе

другой вопрос: какой самый популярный русскоязычный форум по линуксу?
03.02.2012 в 19:31

CD_Eater, во-первых библиотеки могут лежать где угодно и для их использования права админа не нужны (можете для примера собрать что-то с --prefix=/home/... - все будет работать), во-вторых можно задать путь вида "./libmyprog.so" - это будет работать, хотя это концептуально неправильно.. в винде такой "удобный подход" породил целую серию уязвимостей, так что если это что-то большее чем лаба в универе, то лучше воздержаться от подобного и использовать более классические способы