Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> like "runas", запуск потока под другим пользователем 
V
    Опции темы
tepkuh
Дата 19.5.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Доброе, Уважаемые.

Я вот тут дня три пытаюся отсерчить гугл и все как то без результатно. У меня такая вот задача:

Есть jre которая запускается с админскими правами (либо root под *никсом либо administrator под виндой) мне надо чтобы моя программа запускала новый поток под правами другого пользователя(а именно пользователь операц. системы oracle) и брала весь энваремент этого(oracle) пользователя. Т.е. аналог "su -" под никсом или "runas" под виндой.
Не мог бы ты подсказать хотя бы направление куда копать?
PM MAIL   Вверх
AntonSaburov
Дата 19.5.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Так может как раз через sudo и запускать - из командной строки.
PM MAIL WWW ICQ   Вверх
tepkuh
Дата 19.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Цитата(AntonSaburov @  19.5.2008,  13:52 Найти цитируемый пост)
Так может как раз через sudo и запускать - из командной строки.

Я думал по поводу этого но это не юзабельно не фига( по двум пунктам
- Мне нужно запускать именно поток под опред. юзером с передачей туда параметров, а не команды вида "ps -ef".
- Как быть под виндой не представляю даже. Там ведь выскочить консоль cmd'шная где надо будет ввесли пароль. А это вроде как не круто.

Вообщем я это решение оставил на самый крайний случай

PM MAIL   Вверх
LSD
Дата 19.5.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(tepkuh @  19.5.2008,  15:22 Найти цитируемый пост)
Мне нужно запускать именно поток под опред. юзером с передачей туда параметров, а не команды вида "ps -ef".

А вообще есть ОС которая бы такое позволяла?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tepkuh
Дата 20.5.2008, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Цитата(LSD @  19.5.2008,  14:35 Найти цитируемый пост)
А вообще есть ОС которая бы такое позволяла?

не много не понял вас. Что значит есть такая ОС? 
- Если вы про команду "ps -ef" то это вывод спика процессов под боьшенством *никс лайк систем
- Если вы про возможность операц. системы работать сразу с несколькими пользоватеялми то это большенство операц. систем от виндовзов НТ4.0 до любыйх *никсов.
- Если вы про мою фразу "запускала новый поток под правами другого пользователя" то я естсественно очепятался так как все потоки работают в рамках одного процесса (соответственно, с общим адресным пространством и привилегиями). Т.е. нужен новый процесс под правами др. польвателя)
PM MAIL   Вверх
ecologist
Дата 20.5.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



Ну так и надо писать - "процесс". А то "поток" - у меня аж голова уехала.

Под Виндой можно javaw запускать. Параметры - ну в конце концов можно в файл записать - хоть 10 метров параметров.
PM MAIL   Вверх
tepkuh
Дата 20.5.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Нуу... виноват)

Но возникают дальше вопросы как мне дальше то быть. Т.е. мне то нужен в конечном итоге результат отработки метода под заданным юзером и соотвветсвенно его энварементом? 
Это все безобразие так чтоли должно выглядеть:
Runtime.getRuntime().exec(runas /user:Юзер "java any.jsp any.method");
Как мне получить то что отработал метод, что то я с процессами не очень дружу( Мне ведь от него объект надо получить( 
PM MAIL   Вверх
ecologist
Дата 20.5.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



Если второй процесс тоже на JAVA - то можно сериализовать.
Если что-то другое - в файл все поля прописать и потом считывать. Или можно через сокеты пообщаться - но по-моему это усложняет, а толку немного.
PM MAIL   Вверх
tepkuh
Дата 20.5.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Цитата(ecologist @  20.5.2008,  10:45 Найти цитируемый пост)
Если второй процесс тоже на JAVA - то можно сериализовать.

Пасиба большое, помоему вы мне очень помогли)  


Это сообщение отредактировал(а) tepkuh - 20.5.2008, 11:01
PM MAIL   Вверх
tepkuh
Дата 20.5.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



хотя фиг знает. Не поперло меня с сериализацией. Не сериализуются мои объекты(
Буду думать через сокеты(

ЗЫ. Я же говорил))) Runtime.getRuntime().exec... это попытка выкрутится( чем придумать хорошее решение
PM MAIL   Вверх
AntonSaburov
Дата 20.5.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(tepkuh @  20.5.2008,  12:42 Найти цитируемый пост)
Runtime.getRuntime().exec... это попытка выкрутится(

Так другого решения все равно нет - процесс-то отдельный. А как с ним общаться - тут уже вариантов много.
Ну можно попробовать через ProcessBuilder - там всяких возможностей с установкой окружения побольше.
PM MAIL WWW ICQ   Вверх
LSD
Дата 20.5.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(tepkuh @  20.5.2008,  09:47 Найти цитируемый пост)
Если вы про мою фразу "запускала новый поток под правами другого пользователя" то я естсественно очепятался так как все потоки работают в рамках одного процесса (соответственно, с общим адресным пространством и привилегиями). Т.е. нужен новый процесс под правами др. польвателя)

Именно об этом. И без Runtime.exec() не обойтись. Можно использовать RMI, в данном случае все будет достаточно просто.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tepkuh
Дата 20.5.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Цитата(LSD @  20.5.2008,  15:07 Найти цитируемый пост)
Можно использовать RMI, в данном случае все будет достаточно просто.

нипалучится(
Вот копи-паси из учибника про RMI:
RMI использует механизм сериализации по умолчанию Java для передачи параметров
методу и возврата значений через сеть. В этой связи все параметры метода и возвращаемые
значения должны иметь описатель Serializable или один из примитивных типов.


А у меня мой один объект не сериалзуется. Часть серилизуется, а часть нет. Не знаю мож не так что то делаю.
У меня вот есть такой код котороя должна работать отдельным процессом под отдельным юзером.
Код

import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;

public class ser_par implements java.io.Serializable {
    Browser browser;
    Shell shell;

    ser_par()
     {
     shell = new Shell();
     browser = new Browser(shell, SWT.NONE);
     shell.setLayout(new FillLayout());
     }
}


И есть другой класс который выполняется из под root'а\administrtor'а:
Код

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class ser 
{

    public static void main(String[] args)

    {
    ser_par rolodex = new ser_par();
      try 
        {
          FileOutputStream fo=new FileOutputStream("rolodata");
          ObjectOutputStream serial=new ObjectOutputStream(fo);
          serial.writeObject(rolodex);
          serial.flush();
        } 
      catch (Exception ex) 
        {
          System.out.println(ex);
        }

    }
}


получаю вот такую вот ошибку:
java.io.NotSerializableException: org.eclipse.swt.browser.Browser

если Серилизация не поперла, то и RMI не должен( Но чуть попозже попробую Надо еще разобратся как он работает) Что то там мудренно очень)

Это сообщение отредактировал(а) tepkuh - 20.5.2008, 16:04
PM MAIL   Вверх
LSD
Дата 20.5.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



1. Что мешает сделать классы сериализуемыми?
2. В любом случае как-то данные передавать придется, хоть в бинарном виде, хоть в текстовом виде (по сокетам ничего другого не передашь). А byte[] и String прекрасно передаются с помощью сериализации.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tepkuh
Дата 20.5.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 23.4.2008

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



Цитата(LSD @  20.5.2008,  15:53 Найти цитируемый пост)
1. Что мешает сделать классы сериализуемыми?

там бабка за дедку ципляется. Делаю класс  org.eclipse.swt.browser.Browser Сериализованным он цепляется дальше к org.eclipse.swt.browser.IE делаю его сериализованным он идет дальше... 
Я не уверен можно ли так вообще делать? Там этих классов... они вообщем все на свет лезут.  И то я могу сделать так лишь по причине того что org.eclipse.swt является опенсорсовым продуктом и я могу просто править там все что хочу. А оказался он бы закрытым... что бы делать тогда?
Если так можно делать я могу по ним пройтись и понаставить у всех классов сериализацию.

Цитата(LSD @  20.5.2008,  15:53 Найти цитируемый пост)
2. В любом случае как-то данные передавать придется, хоть в бинарном виде, хоть в текстовом виде (по сокетам ничего другого не передашь). А byte[] и String прекрасно передаются с помощью сериализации.

у меня они тоже передались хорошо из других классов помощью сериализации, без проблем. А вот с этим классом заглох.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

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


 




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


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

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