Страница 1 из 1

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

Добавлено: 02 июн 2015, 12:59
s2176
Добрый день!
Есть интерфейс, который анализирует файл журнала - таблицу X$JOURNAL (цепляет до кучи еще X$USERS).
Интерфейс должен запускаться ночью автономно.
В bat-файле, запускающем интерфейс на выполнение, приходится прописывать имя пользователя и пароль.
У нас есть такой фиктивный пользователь с сильно урезанными правами (в плане видимости меню и доступа к таблицам), под которым проходят ночные выгрузки.
Так вот, если интерфейс запускается под таким пользователем (с типом "пользователь"), то он просто ничего не делает (видимо, нет прав на журнал), а если делаю этого пользователя администратором, то он начинает видеть все меню Галактики, что не есть хорошо.
Можно ли настроить права так, чтобы ограничить меню (оставить одни отчеты из ФРО), но при этом дать права на чтение словарных таблиц.
Или как-то "спрятать" имя пользователя и его пароль. Ведь в bat-файле это все явно приходится прописывать.

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

Добавлено: 02 июн 2015, 13:50
edward_K
1. Если у вас СУБД MSSQL то можно включить Windows авторизацию.
2. Проверьте зверя в сапорте - SQL . может ли он там видеть эти таблицы. Еще вопрос и какую именно. На старых версих вроде была тробла с X$users
может можно без нее обойтись. Вообще logstrtofile вам в помощь - заодно будете видеть а чего он там вообще делал.
3. Видимость меню по админам вот не помню можно ли зарезать.
4. батник можно поместить в закрытый ресурс.
5. Попробуйте из галактики запустить тот ж фейс.

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

Добавлено: 02 июн 2015, 13:58
s2176
У нас первасив.
Я именно в лог и пишу информацию.
Если запускаю батник, где не прописаны логин/пароль, то Гал-ка просит ввести мои данные (я, понятное дело, админ), и все корректно отрабатывает, а стоит поменять пользователя, как в лог ничего не пишется. Даже мессаджи вставляла, они отрабатывают, т.е., фейс запускается, но в лог не пишется.
В Саппорте думала добавить пользователю права на журнал, но, увы, не предлагает :((
Там таблицы начинаются с №900.
Не очень понятен Ваш совет: "батник можно поместить в закрытый ресурс." Это как?
Кстати, мне выгрузку нужно повторить на 20 разных базах.
Все они пишут инфу в один и тот же лог-файл.

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

Добавлено: 03 июн 2015, 09:47
edward_K
Ну вы же можете создать папку и дать на нее права тока одному зверю от имени которого будете галку стартовать.
Раз 20 баз, то лучше чтобы это был один батник. Лог тоже вопрос как выводите . попробуйте во второй лог писать диагностику - с первой строки cmInit. Все таки вопрос начиная с какой строки он не сработает. Мож имо файла не так указали или еще что.

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

Добавлено: 03 июн 2015, 14:16
s2176
"Ну вы же можете создать папку и дать на нее права тока одному зверю от имени которого будете галку стартовать"
- можно конечно, только у нас всяких ночных выгрузок куча с грудой. Сильно заморочно все переделывать, разруливать права на папки.
Но, видимо единственный вариант - завести во все базы новых пользователей с правами админа...

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

Добавлено: 03 июн 2015, 19:43
m0p3e
Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.

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

Добавлено: 04 июн 2015, 01:12
LaaLaa
m0p3e писал(а):Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.
:? О боги

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

Добавлено: 04 июн 2015, 10:39
edward_K
Ну да - наверняка в фейсе косяк. Скока фейсов делал для автообмена, но без x$users и ничего - все пахало.

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

Добавлено: 04 июн 2015, 10:45
m0p3e
LaaLaa писал(а):
m0p3e писал(а):Можно воспользоваться каким-нибудь обфускатором.
Типа: http://www.battoexeconverter.com/
От визуального просмотра батника поможет.
:? О боги
Задачу скрыть пароль для "дурака" решает. :)

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

Добавлено: 05 июн 2015, 15:09
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.

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

Добавлено: 10 июн 2015, 13:53
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.
Делаю пользователя в суппорте админом (при этом больше ничего в правах не меняю) - все работает, делаю простым пользователем - лог не пишется.