Запуск интерфейса из bat-файла с правами не администратора

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Запуск интерфейса из bat-файла с правами не администратора

Сообщение s2176 »

Добрый день!
Есть интерфейс, который анализирует файл журнала - таблицу X$JOURNAL (цепляет до кучи еще X$USERS).
Интерфейс должен запускаться ночью автономно.
В bat-файле, запускающем интерфейс на выполнение, приходится прописывать имя пользователя и пароль.
У нас есть такой фиктивный пользователь с сильно урезанными правами (в плане видимости меню и доступа к таблицам), под которым проходят ночные выгрузки.
Так вот, если интерфейс запускается под таким пользователем (с типом "пользователь"), то он просто ничего не делает (видимо, нет прав на журнал), а если делаю этого пользователя администратором, то он начинает видеть все меню Галактики, что не есть хорошо.
Можно ли настроить права так, чтобы ограничить меню (оставить одни отчеты из ФРО), но при этом дать права на чтение словарных таблиц.
Или как-то "спрятать" имя пользователя и его пароль. Ведь в bat-файле это все явно приходится прописывать.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение edward_K »

1. Если у вас СУБД MSSQL то можно включить Windows авторизацию.
2. Проверьте зверя в сапорте - SQL . может ли он там видеть эти таблицы. Еще вопрос и какую именно. На старых версих вроде была тробла с X$users
может можно без нее обойтись. Вообще logstrtofile вам в помощь - заодно будете видеть а чего он там вообще делал.
3. Видимость меню по админам вот не помню можно ли зарезать.
4. батник можно поместить в закрытый ресурс.
5. Попробуйте из галактики запустить тот ж фейс.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение s2176 »

У нас первасив.
Я именно в лог и пишу информацию.
Если запускаю батник, где не прописаны логин/пароль, то Гал-ка просит ввести мои данные (я, понятное дело, админ), и все корректно отрабатывает, а стоит поменять пользователя, как в лог ничего не пишется. Даже мессаджи вставляла, они отрабатывают, т.е., фейс запускается, но в лог не пишется.
В Саппорте думала добавить пользователю права на журнал, но, увы, не предлагает :((
Там таблицы начинаются с №900.
Не очень понятен Ваш совет: "батник можно поместить в закрытый ресурс." Это как?
Кстати, мне выгрузку нужно повторить на 20 разных базах.
Все они пишут инфу в один и тот же лог-файл.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение edward_K »

Ну вы же можете создать папку и дать на нее права тока одному зверю от имени которого будете галку стартовать.
Раз 20 баз, то лучше чтобы это был один батник. Лог тоже вопрос как выводите . попробуйте во второй лог писать диагностику - с первой строки cmInit. Все таки вопрос начиная с какой строки он не сработает. Мож имо файла не так указали или еще что.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение s2176 »

"Ну вы же можете создать папку и дать на нее права тока одному зверю от имени которого будете галку стартовать"
- можно конечно, только у нас всяких ночных выгрузок куча с грудой. Сильно заморочно все переделывать, разруливать права на папки.
Но, видимо единственный вариант - завести во все базы новых пользователей с правами админа...
Кто сказал, что бесполезно биться головой об стену?!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение m0p3e »

Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.
LaaLaa

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение LaaLaa »

m0p3e писал(а):Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.
:? О боги
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение edward_K »

Ну да - наверняка в фейсе косяк. Скока фейсов делал для автообмена, но без x$users и ничего - все пахало.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение m0p3e »

LaaLaa писал(а):
m0p3e писал(а):Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.
:? О боги
Задачу скрыть пароль для "дурака" решает. :)
lStep
Новичок
Сообщения: 28
Зарегистрирован: 27 июл 2006, 16:49

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение lStep »

s2176 писал(а): ..
В bat-файле, запускающем интерфейс на выполнение
..
Можно ли ... ограничить меню (оставить одни отчеты из ФРО), но при этом дать права на чтение словарных таблиц.
если bat-файл запускает:
start /wait ...\exe\atlexec.exe /galaxy.nowrun=IF_NAME1 /Login.UserName=Usr1_NoMenu /P=PASSWORD

для запуска своего конкретного фейса IF_NAME1:
1) меню не нужно. В правах Usr1_NoMenu меню обрезать полностью.
2) в правах на таблицы выбрать ВСЕ таблицы с полными правами.
3) у пользователя Usr1_NoMenu поставить права на Рабочие станции: имя сервера и свой комп для отладки.
4) на папку где Bat-ник про NTFS уже сказали
Итог:
Зайти в Галактику таким пользователем с других железок не получится, а если получиться, то без меню что там делать?
А вот под SQL-Server через ODBC дыра!!! закрывать или NTLM или шифрованием паролей или bat-ник прятать в Exe.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Re: Запуск интерфейса из bat-файла с правами не администрато

Сообщение s2176 »

Интерфейс должен запускаться ночью автономно или по запросу на машине любого из админов.
Ночью запускается батник:

Код: Выделить всё

start \\dbs14\Galdata\gal810\exe\galnet.EXE /galaxy.nowrun=USERACTSTATISTIC /DATABASE.DATABASENAME=%GalData% /c:fcom_1.cfg /p: /u:
sleep 5m
start \\dbs14\Galdata\gal810\exe\galnet.EXE /galaxy.nowrun=USERACTSTATISTIC /DATABASE.DATABASENAME=%GalData% /c:fcom_2.cfg /p: /u:
sleep 4m
start \\dbs14\Galdata\gal810\exe\galnet.EXE /galaxy.nowrun=USERACTSTATISTIC /DATABASE.DATABASENAME=%GalData% /c:fcom_3.cfg /p: /u:
sleep 4m
....
start \\dbs14\Galdata\gal810\exe\galnet.EXE /galaxy.nowrun=USERACTSTATISTIC /DATABASE.DATABASENAME=%GalData% /c:fcom_20.cfg /p: /u:
sleep 4m
Собственно сам интерфейс:

Код: Выделить всё

interface UserActStatistic 'Статистика действий пользователя' escclose;
file f_cfg;
var _isAUTO: word;

create view
var _date: date
    _nrec, _nrecTD: comp
select jour.tablecode, jour.tablenrec, jour.operation, tuser.XU$FULLNAME, tuneval.strval
from x$journal jour, x$users tuser, tstat, tuneval
where ((1==jour.status and _date==jour.lastdate and usercode==tuser.atl_nrec and
        1==tuneval.obj and tuser.atl_nrec==tuneval.cuser and _nrecTD==tuneval.ctune
	  ))
;
parameters _isAuto;

HandleEvent
cmInit:
{ var _nt, i, ii, _jo, _cnt: word;
  var _pr: boolean;
  var _kompan, _fioUser, _ss, str_path: string;
  var _codeTable: array [1..10] of word;
  var _NameTable: array [1..10] of string;

...

  _date:=sub_day(cur_date(),1)
  if _isAUTO=1 then RunDialog('C_Common::GetFormNa', _date);

  _kompan:=sGetTune('MYORG');
  if getfirst tunedef where (('USER.DESGR'==code)) = tsOk
    then _nrecTD:=tunedef.nrec;

  _codeTable[1]:=15028; _NameTable[1]:='отпуска';  //otpusk
  _codeTable[2]:=15027; _NameTable[2]:='больничные';  //blisnet
  _codeTable[3]:=25000; _NameTable[3]:='рабочая корзина';  //zarsignal
  _codeTable[4]:=15030; _NameTable[4]:='ведомости межпериода';  //sys_mbf
  _codeTable[5]:=15016; _NameTable[5]:='предварительный просмотр';  //uchrabvr
  _codeTable[6]:=9044; _NameTable[6]:='платежные ведомости';  //platved
  _codeTable[7]:=9015; _NameTable[7]:='бух.справки';  //plpor
  _codeTable[8]:=15014; _NameTable[8]:='детские пособия';  //child

!message(datetostr(_date,'DD/MM/YYYY'));
  if _isAUTO=1 startNewVisual(vtNumericVisual,vfTimer+vfBreak+vfconfirm,'Просматриваю журнал событий ...',1);
  _loop jour where (jour.operation<>8)  //кроме удаления
  { _ss:=tuneval.strval;
    if _ss='KADR' continue;
    _nt:=jour.tablecode;
    _pr:=false; ii:=0;
    for(i:=1;i<9;i++)
	{ if _nt=_codeTable[i] { _pr:=true; ii:=i; i:=10; }
	}
	if not(_pr) continue;  //таблица не из списка
    _fioUser:=tuser.XU$FULLNAME; _nrec:=jour.tablenrec;
	_pr:=true;
	if _nt=15016 //предварительный просмотр
 	{ if getfirst uchrabvr where ((_nrec==uchrabvr.nrec)) = tsOk
	  { if uchrabvr.summa34=0 _pr:=false; //автоматическая разноска, не считаем
	  }

	}
	if _pr
	{ if getfirst tstat where ((_ss==group_Name and _fioUser==user_Name and ii==table_Name and _nrec==Table_nrec)) <> tsOk
	  { insert tstat
		   set group_Name:=_ss, user_Name:=_fioUser, table_Name:=ii, table_Nrec:=_nrec;
	  }
	}
	if _isAUTO=1 and NextVisual()=false { stopVisual('',0); exit; }
  }
  if _isAUTO=1 and VisualizationActive() stopVisual('',0);

  i:=1;
  _loop tstat
  { i:=i+1;
    _ss:=_kompan+';'+tstat.group_Name+';'+tstat.user_Name+';'+_NameTable[tstat.table_Name];
	ii:=0;
	groupBy G1: tstat.group_Name, tstat.user_Name, tstat.table_Name
	{ ii:=ii+1;
    }
	_ss:=_ss+';'+string(ii);
    logstrtofile(str_path+'statZPL_'+datetostr(_date,'YYYYMMDD')+'.log',_ss);
  }
  if _isAUTO>0 runinterface(StatLogtoExcel,_isAUTO,_date);
}
end;
end.
Делаю пользователя в суппорте админом (при этом больше ничего в правах не меняю) - все работает, делаю простым пользователем - лог не пишется.
Кто сказал, что бесполезно биться головой об стену?!
Ответить