Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VNC и права root 
V
    Опции темы
borisbn
Дата 29.5.2012, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Здравствуйте.

Столкнулся с такой проблемой:
Есть программа (моя), которой для работы требуется доступ к драйверам ATI (ATI-streams - это типа CUDA, только ATI-specific).
Если я логинюсь локально или захожу с помощью putty по ssh (оба варианта делаю под root), то программа запускается и работает.
Если захожу с помощью VNC (я использую встроенный в OpenSuSe 11.3 tightVNC), то программа запускается, но функции ATI-streams возвращают ошибки (в частности calDeviceGetCount возвращает 0). Если же я запускаю программу под sudo, то всё работает как надо.
Странно при этом то, что если ввести whoami, то выводится root root.

Вопрос (скорее теоретический, т.к. я уже знаю, что с sudo всё ОК) - почему я вижу в терминале # в конце строки приглашения, whoami говорит, что я под root, а программа, судя по всему, запускается с правами не-root'а ?
Спасибо.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bilbobagginz
Дата 29.5.2012, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



borisbn, для решения вопроса было бы неплохо знать как ты настроил свой VNC.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
borisbn
Дата 30.5.2012, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



bilbobagginz, ОК.
1) В Yast'е выбрал Network Services/Remote Administration(VNC)/Allow RemoteAdministration
2) Там же в настройках Firewall'а добавил в Allowed Services VNC
3) Запустив один раз vncserver в каталоге ~/.vnc появился файл xstartup. Я его подредактировал след. образом
Цитата
#!/bin/sh
startkde
#xrdb $HOME/.Xresources
#xsetroot -solid grey
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &

т.е. фактически викинул всё, что там было и добвал только startkde

Все эти действия производил из-под root'а


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 31.5.2012, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



запусти свою программу из-под strace. будет выдан лог системных вызовов. там ты, скорее всего, сможешь определить, на чем именно запарывается библиотека. Возможно, где-то какие-то права не так стоят или не нравятся переменные среды...
кстати, работать из-под рута - дурной тон. рекомендую правильно настроить права у своего пользователя (может для работы с этими ati-streams следует входить в определенную группу).
PM   Вверх
borisbn
Дата 1.6.2012, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



bsa, спасибо. Сделал. 
Я запустил сначала strace my_prog, а затем strace sudo my_prog
Если резюмировать в чём отличие созданных логов, то

- во-первых, во втором логе присутствует куча обращений к /etc типа таких
Цитата
open("/etc/passwd", ...
open("/etc/default/nss",...
open("/etc/group",...

и т.п.
Затем идёт
Цитата
uname({sys="Linux", ...}) = 0

затем чтение /etc/nsswitch.conf, /etc/sudoers и много ещё чего, и перед запуском моей программы идёт
Цитата
setgroups(1, [0])
setresgid(-1, 0, -1)
setgid(0)
setresuid(0, 0, 0)


- во-вторых (если начать сравнивать непосредственно с вызова моей программы (execve("my_prog")), то отличие всего одно:
в первом логе все библиотеки сначала пытаются открыть в usr/lib64/mpi/gcc/openmpi/lib64/, и при неудаче открывают в /usr/lib64/
Цитата
open("/usr/lib64/mpi/gcc/openmpi/lib64/libaticalrt.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libaticalrt.so", O_RDONLY) = 3

а во втором сразу открывают
Цитата
open("/usr/lib64/libaticalrt.so", O_RDONLY) = 3

больше нет ни одного отличия.

Странно... насколько я знаю (могу ошибаться, конечно) в линуксе нет super-администратора. Есть root - царь и бог и все остальные. А странно то, что находясь в удалённой сессии я имею права root (я могу сделать reboot, тот же sudo меня не спрашивает пароль), но sudo каким-то образом повышает привилегии...
Повторю, что вопрос решён (буду запускать из-под sudo), но хочется докопаться... из принципа )))

Это сообщение отредактировал(а) borisbn - 1.6.2012, 09:58


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bilbobagginz
Дата 2.6.2012, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



в общем проблема такова:
твоя программа (а-ля CUDA) узнает ресурсы графики посредством запросов к системе Иксов.

Когда бегущий Иксовый сервер бежит с реальной (железной) картой и реальным дисплеем, то запросы дают список CUDA-способных карт. и есть ответ.

но когда ты запускаешь vnc с виртуальной конфигурацией (т.е. через xstartup), то бежит там Икс сервер с виртуальной картой, которая (видимо) не способна к CUDA.

strace - это крутой низкоуровневый инструмент. думаю что в данном случае он тебе не даст нужного ответа (ты получишь столько ненужной информации, что нужную там не сможешь увидеть).

судя по самоучителю, ты ДО того вызова, который ты указал, должен был запустить clGetPlatformIDs().
как ты его запустил (с какими параметрами) ?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
borisbn
Дата 2.6.2012, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(bilbobagginz @  2.6.2012,  21:09 Найти цитируемый пост)
Икс сервер с виртуальной картой, которая (видимо) не способна к CUDA.

из-под sudo способна, а без - нет ?

Цитата(bilbobagginz @  2.6.2012,  21:09 Найти цитируемый пост)
судя по самоучителю, ты ДО того вызова, который ты указал, должен был запустить clGetPlatformIDs().
как ты его запустил (с какими параметрами) ?

В понедельник обязательно посмотрю. Спасибо.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
borisbn
Дата 4.6.2012, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



bilbobagginz, это не OpenCL'ный проект, поэтому там нет никакого clGetPlatformIDs(). Проект построен на низкоуровневом API от ATI. Функция calDeviceGetCount как раз из этого API.

Похоже, что из-под sudo моей программе дают "правильный" Икс сервер, а без оного - Икс сервер с виртуальной картой. Чудеса... Я ж и так под root'ом  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
borisbn
Дата 5.6.2012, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Чтобы подвести черту...
Мне тут посоветовали выкинуть vncserver и поставить x11vnc.
Во-первых, заработало на порядок быстрее
Во-вторых, ушла проблема с sudo


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.