Написанные программы под Linux "парализованы" :(
Модератор: Модераторы
-
mastertron
- незнакомец
- Сообщения: 8
- Зарегистрирован: 30.05.2010 16:38:18
Написанные программы под Linux "парализованы" :(
Здравствуйте. Свой уровень в программировании под линукс - 0.
Даже не знаю, тот-ли и туда-ли вопрос задаю ...
OpenSuSe10.3, Mandriva2010 - под гномом/кеды - результат один... Только от рута б/м работает.
Программа должна читать и писать файлы в своей же директории (для начала). При запуске из под пользователя (UID-1000) - запускается, но с файлами работать не может, доступа нет.
Вопрос - написал прогу ... , а как заставить это приложение нормально, полноценно работать в среде? Ну в частности в пределах хома пользователя?
Думаю с этим сталкиваются все и как то же решается? Подскажите пожалуста, или ткните кудата ...
Спасибо.
Даже не знаю, тот-ли и туда-ли вопрос задаю ...
OpenSuSe10.3, Mandriva2010 - под гномом/кеды - результат один... Только от рута б/м работает.
Программа должна читать и писать файлы в своей же директории (для начала). При запуске из под пользователя (UID-1000) - запускается, но с файлами работать не может, доступа нет.
Вопрос - написал прогу ... , а как заставить это приложение нормально, полноценно работать в среде? Ну в частности в пределах хома пользователя?
Думаю с этим сталкиваются все и как то же решается? Подскажите пожалуста, или ткните кудата ...
Спасибо.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Минимальный пример такой программы в студию. У всех все работает.
-
mastertron
- незнакомец
- Сообщения: 8
- Зарегистрирован: 30.05.2010 16:38:18
Озадачили ... 
исходники подойдут?
Виндовой вариант работает.
исходники подойдут?
Виндовой вариант работает.
mastertron
Нда... Строк сильно много, а в какой строке ошибка - ведает лишь Аллах всемилостливый и всемогущий.
Ваши исходники невозможно запустить, а, следовательно, и проверить на корректность\некорректность. Как Вы считаете, удасться ли Вам помочь?
Судя по этому сообщению, Вы, сударь, не изволили наделить каталог правами для работы с ним пользователя. Ответ напрашивается сам собой - дайте необходимые права каталогу, дайте доступ.
Нда... Строк сильно много, а в какой строке ошибка - ведает лишь Аллах всемилостливый и всемогущий.
Ваши исходники невозможно запустить, а, следовательно, и проверить на корректность\некорректность. Как Вы считаете, удасться ли Вам помочь?
mastertron писал(а):но с файлами работать не может, доступа нет.
Судя по этому сообщению, Вы, сударь, не изволили наделить каталог правами для работы с ним пользователя. Ответ напрашивается сам собой - дайте необходимые права каталогу, дайте доступ.
-
mastertron
- незнакомец
- Сообщения: 8
- Зарегистрирован: 30.05.2010 16:38:18
Да, согласен, проблема скорее с правами, но как ее решать? Файлы проэкта, и те, с каторыми программа работает, лежат в папке пользователя ( пробовал по разным пихать), в самой программе ошибок нет, под рутом же работает. Выслать Вам все? Метров 15 ...
Может программу нужно както регистрировать для выполнения? Может использовать для работы с файлами другие функции?
Может в самом проэкте Лазаря дерективы какие счелкнуть?
Проэкт был написан под винду, просто перетащил в линукс, убрал то, что ругалось, и скомпилил.
Видимо я незнаю какойто мелочи ...
Добавлено спустя 11 минут 26 секунд:
Подскажите, какие файлы нужно вложить? ( все не вмещаются в 256 KiB ).
Может программу нужно както регистрировать для выполнения? Может использовать для работы с файлами другие функции?
Может в самом проэкте Лазаря дерективы какие счелкнуть?
Проэкт был написан под винду, просто перетащил в линукс, убрал то, что ругалось, и скомпилил.
Видимо я незнаю какойто мелочи ...
Добавлено спустя 11 минут 26 секунд:
Подскажите, какие файлы нужно вложить? ( все не вмещаются в 256 KiB ).
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Попробуйте сделать минимальный пример — одна форма, одна кнопка с одним действием — тем, на котором выдает ошибку.
Судя по всему часть файлов в вашей папке принадлежит root , сделайте их принадлежащими группе users и вашей учетной записи, например через mc. А так же проверьте права на папку с программой
И подучите русский язык
И подучите русский язык
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
под рутом же работает
Код: Выделить всё
// Создание каталога ресурсов теста и файла.
// Проверка существования файла
if FileExists(F_name)=false then
begin // Если файла нет - создаем файл и каталог ресурсов
AssignFile(F,F_name);
Rewrite(F);
// WriteLn(F,test_name);
CloseFile(F);
// Создание каталога ресурсов теста
if DirectoryExists(Dir_name)=false then
MkDir(Dir_name); //если каталога нет - создадим
end;Если вы запустили программу из под рута и переписали каталоги/файлы то доступ к файлам будет иметь только рут. Обычному пользователю будет отказано в доступе.
Совет: компилируйте и запускайте из под непривилегированного пользователя
Также посмотрите не включен ли SE Linux
-
mastertron
- незнакомец
- Сообщения: 8
- Зарегистрирован: 30.05.2010 16:38:18
Иван Шихалев - Спасибо. От простого .... мысль такая посетила, значит правильная 
coyot.rush - Вы меня "умыли"
... так оно и было, но не во всех случаях.
SE Linux - как в анекдоте -" А чего это?"
( щас погуглю).
coyot.rush - Вы меня "умыли"
SE Linux - как в анекдоте -" А чего это?"
На каталог с файлами с которыми работает прграмма, попробуйте сделать
chmod -R 777 имякаталога
chown -R имягруппы.имяпользователя
Если и так не заработает, ну тогда даже и не знаю. Быть такого не может. Да! Группа и пользователь должны БЫТЬ
chmod -R 777 имякаталога
chown -R имягруппы.имяпользователя
Если и так не заработает, ну тогда даже и не знаю. Быть такого не может. Да! Группа и пользователь должны БЫТЬ
- trius-strannik
- новенький
- Сообщения: 23
- Зарегистрирован: 11.06.2009 07:19:24
- Откуда: Томск
У меня похожая ситуация была: в папке пользователя был примонтирован раздел с правами рута, и поменять эти права не представляло возможности, пришлось указывать правава жёстко при монтировании.
-
mastertron
- незнакомец
- Сообщения: 8
- Зарегистрирован: 30.05.2010 16:38:18
Все же это видимо у линуха чего то новое придумали ..., сильно безопасная политика ( SELinux отсутствует, Armor отключен). И пока относится только к тем проектам, что скопированы с флешки и писались под виндой. И права на каталоги и файлы тут нипричем. Запускаю в среде лазаруса - нет проблем, запускаю с терминала - нет проблем, как только запуск с дельфина или по симлинку ( что в гноме, что в кде) - все... , нет доступа
Будет время - поиграюсь, а пока прийдется создавать писанину заново и копипастить по кускам ( заодно и спрофилирую
).
Всем спасибо.
Добавлено спустя 1 час 28 секунд:
Блин, все оказалось проще:
Какую директорию не открываешь - текущей получаешь "/home/user/Документы" ...
Естестно доступа нет
Всем спасибо.
Добавлено спустя 1 час 28 секунд:
Блин, все оказалось проще:
Код: Выделить всё
OpenDialog1.InitialDir:=Application.EXEName;
OpenDialog1.Filter:='Файл теста|*.tst';
if openDialog1.Execute then
begin
mem_tic:=TStringList.Create;
mem_tic.Clear;
s:=openDialog1.FileName;
i:=Length(s);
while s[i]<>'/' do i:=i-1;
Delete(s,1,i);
i:=Length(s);
F_name:=s;
Delete(s,(i-3),i);
Dir_name:=s+'_res';
ShowMessage(Dir_name);
ShowMessage(GetCurrentDir);
mem_tic.LoadFromFile(F_name);Какую директорию не открываешь - текущей получаешь "/home/user/Документы" ...
Естестно доступа нет
Не надо изобретать велосипед. Есть куча процедур и функций для работы с именами файлов директориями, именами, расширениями.
А симлинки в линуксе, это отдельная тема. Надо обязательно почитать книжки для начинающих линуксоидов. А вот SELinux это специализированный защищенный дистрибутив. Там шаг вправо, шаг влево... и колючая проволока.
А симлинки в линуксе, это отдельная тема. Надо обязательно почитать книжки для начинающих линуксоидов. А вот SELinux это специализированный защищенный дистрибутив. Там шаг вправо, шаг влево... и колючая проволока.
А что мешает написать скрипт, делающий нужную директорию текущей и запускающий программу ?
