Mainframe Unbreakable

zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Michael, another e-mail:

"Lately there has been an increase in Internet-based viruses, primarily those sent via e-mail with file attachments or links to external Web sites. Some notable viruses are "SoBig" and "W32/Dumaru."

To help reduce the risk of these viruses infecting our systems, please exercise caution when reading e-mail with file attachments or links to Internet Web sites."

Not only attachments, right? Please, comment.
Michael Popov
Уже с Приветом
Posts: 991
Joined: 09 Sep 2001 09:01
Location: The Earth

Post by Michael Popov »

1. Ваши администраторы перестраховываются глупым образом. Фраза "please exercise caution" не несет никакой полезной смысловой нагрузки.

2. Я слышал о вирусах, которые запускали скрипты внутри mail client и что-то там вытворяли. Сам с ними не сталкивался, как впрочем и со всеми остальными (тьфу-тьфу-тьфу). При правильно сконфигурированной системе эти гадости происходить не должны. Кроме того, если network administrators не ленивые и хозяева не жадные, то существуют анти-вирусные системы, которые "выкусывают" вирусы на mail servers. В нашей фирме администраторы жалуются, что в основном вирусы приходят вместе с лаптопами, которые включают в корпоративную сеть, или от подключающихся VPN users.
Best regards,

Michael Popov
VYLE
Уже с Приветом
Posts: 1772
Joined: 06 Sep 2001 09:01
Location: Boston, MA -> Charlotte,NC ->Danbury,CT

Post by VYLE »

zVlad wrote:20 MODESET KEY=ZERO,MODE=SUP
21+* MACDATE Y-3 81030
22+ CNOP 0,4
23+ BAL 1,*+8
24+ DC B'00000000000000000000000000111100'
25+ L 1,0(0,1)
26+ SVC 107 ----> this is a CPU command "Call Supervisor" 107 - function to change PSW key-mask



О да! modeset aka svc 107. Помню, помню..Написал я как-то программульку с этой svc у нутре, составил JCL чтобы в авторизованную библиотечку модуль положить. Запускаю..
Звонок от девочки-оператора - "Ваша задание чего-то спрашивает на консоли- что ответить?" "Yes, говорю, в смысле U". :wink:
Я не настолько богат, чтобы пить дешевую водку.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

zVlad wrote:недавно пытался сам разобраться, один парень лавал ссылку на добротный документ по архитектуре Интел процессора. Крупный документ, много времени надо чтобы во всем разобраться - а мне это надо?

Вот некрупный документ на 17 страниц. Вполне официально и доходчиво об архитектуре i386 (которой, между прочим, уже 20 лет): Overview of the Protected Mode Operations of the Intel Architechrure.

Кстати, Tengiz, а MIcroSoft использует ИБМ мэйнфрэйм? Я слышал что использует. Так ли это?

Насколько я знаю, лет несколько назад для внутренней бухгалтерии использовался парк AS/400 на которых работала какая-то правильная бухгалтерская система, адекватная по возможностям для компании размера MS (30.000+ сотрудников в 1998 году). Но ситуация с тех пор изменилась (например, MS SQL Server стал одной из основных платформ для SAP, пригодных практически для бизнесов любых размеров), других подробностей не знаю.
Cheers
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Michael, спасибо за разъяснения. Я далек от тех дел, но знаю что хозяева вроде не жадные и системных администраторов по крайне мере много, хоть один то должен быть нормальный. И что еще интересно за последнии 2 недели нас как минимум три раза "моль чикала". Каждый раз я смотрел новости и не находил, что это были "world wide" вирусы.

Я обещал ссылку. Вот одна:

http://www-1.ibm.com/servers/eserver/zseries/

и другая:

http://www-1.ibm.com/servers/eserver/zseries/library/

Особо рекомендую обратить внимание на ReadBooks - это то что пишут опытные пользователи (может я ошибаюсь?)

Честно говоря я думал найти что-нибудь на несколько страниц, но боюсь у меня нет времени. А может такого и нет вовсе. В любом случае - насладитесь, мэйнфрэйм - это весьма значимая веха в компьютерной индустрии. Насколько я знаю, самая древняя из ныне здравствующих и переживающая ренесанс, но незаслуженно преданная забвению в определенных кругах компьютерщиков. С моей стороны любая поддержка гарантирована. Нужно странслировать С программу на мэйнфрэйм - спрашивай. Сделаю, хоть Jav-у.
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

VYLE wrote: "О да! modeset aka svc 107. Помню, помню..Написал я как-то программульку с этой svc у нутре, составил JCL чтобы в авторизованную библиотечку модуль положить. Запускаю..
Звонок от девочки-оператора - "Ваша задание чего-то спрашивает на консоли- что ответить?" "Yes, говорю, в смысле U""

Да, VYLE, давно это было. Я думаю, если спроецировать на ИБМ линию (не на ОС ЕС MVT) так это будет конец 60-х начало 70-х. Тогда это была пакетная система и не о каком злом умысле извне "лапоть не звенел", потому что "извне" не существовало. И это (SVC 107) имеется сейчас, но добраться к этому можно только через security guy. И его первый вопрос будет: " Где парашют закопал, гад?"
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Tengiz, большое спасибо за сылочку. 17 страниц я смогу прочитать не один раз, и тогда перестану подставляться.

А вообще, братцы давайте потопим этот топик. Все мы крутые, и никто в этом не сомневается, потому что так оно и есть, и компьютеры наши самые-самые. Главное, что они нас кормят.
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote:Dmitry67, DB2 utilities are special programs (supplied together with DB2) to perform special actions: CATMAINT (catalog maintenance), CHECK DATA, CHECK INDEX, CHECK LOB, COPY, DIAGNOSE (very nice utility), LOAD, MERGECOPY, MODIFY RECOVERY, QUIESCE, REBUILD INDEX, RECOVER, REORG INDEX, REORG TABLESPACE, REPAIR, REPORT (recovery), RUNSTATS, STOSPACE.
Everybody can start those utilities using authorized ways (see below) but you have to have authority in order to perfom utility function, for example:
----------------------------------------------------------------
Authorization required: To execute this utility (REORG) on a user index, the privilege set of the process must include one of the following:

REORG privilege for the database
DBADM or DBCTRL authority for the database
SYSCTRL authority
SYSADM authority.
------------------------------------------
But, because those utilities are using special system functions (you called them API), utilities are system protected in order to prevent taking over those system functions. Shortly saying, only authorized programs can call programs using system-dangerous functions (in this case DB2 utilities). This is another example of how MVS protected.


Вот что непонятно. В MS SQL server такие операции тоэе требуют специальной Permiison. У того пользователя кто выполняет эти команды SQL. Но не у процесса !!! При чем тут процесс ???

Попытаемся догадаться. Дело наверняка в том, что REORG INDEX делает не сам сервер, а сама утилита, которая открывает файл и начинает там рыться на уровне блоков. И делает она это мимо сервера базы

Из этого следует что
1. В DB2 нет online index reorg.
2. Эти утилиты нельзя запустить с другой машины по сети.
Я прав ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Dmitry67, в то время как с точки зрения программиста все реляционные базы практически одинаковы (благодаря SQL), администрирование же баз может сильно отличаться. Ты это знаешь не хуже меня. И это потому что разные системы, разные машины, наконец разные подходы и внутреняя организация.

Отвечу на вопросы:

Утилиты - это не комманды SQL, это специальные служебные программы, которые могут и напрямую "лазать" в базу данных, это так называемые standalone utility. Они запускаются когда RDBMS не активна. Online utility работают когда RDBMS активна. Те что перечислил - онлайн утилиты. Утилиты всегда выполняются в той же системе где находится БД, но в разных адресных пространствах.
Они могут запускаться и удаленно, т.е. с другой машины по сети. Для этого имеется специальная хранимая процедура, но как я уже писал эта утилита требует наличия Work Load Manager-a.
WLM - недавнее изобретение ИБМ. Эта штука, в отличии от традиционного планирования по приоритетов, может обеспечивать достижения неких целей (goal mode), требуемых разными процессами (например процент CPU, или время ответа, или ... я не знаю что). WLM сам разберется кому и когда и какой приоритет назначить. Т.е. в конечном счете он конечно через приоритеты управляет, но он их постоянно потстраивает, чтобы ь заданым цели были достигнуты.
У нас к сожалению в системе этого парня нет. Руководство просто рассуждает, типа нам ведь и так неплохо живется, а чтобы его внедрить это ж надо столько согласований и тестирования пройти. Короче закостенели. Интересно было бы узнать, а у Windows Unix есть что-нибудь подобное?

Вернемся к утилитам DB2. Утилиты общаются с менеджером базы посредством их внутреннего интерфэйса. Я никогда не встречал описания этого интерфейса, но думаю что при желании его можно добыть, потому что до недавних пор утилиты написанные не ИБМ считались лучше. Но ИБМ посмотрел как third-party гребут деньги (анализ показывает, что цены тех кто пишит для DB2 много выше чем ИБМ-овские) и улучшил свои утилиты так, что нужды в других просто не стало. Может только по привычке кто-то пользуется, скажем Platinum. Не знаю. К слову, ИБМ утилиты идут бесплатно, но недавно ИБМ анонсировало Utility-suite за деньги, но я его не смотрел еще. Просто по тому, что руководство денег тратить не хочет. Маразм.

Да, поскольку утилиты используют некий внутренний интерфейс, поэтому в системе им требуютя спец. права. И система строго следит за программами, которые вызывают утилиты. Ведь эти программы могут воспользоваться полномочиями утилиты. У того кто запускает утилиты тоже должны быть определенные полномочия. Причем эти полномочия могут быть гранулированы и по утилитам и по объектам базы. Например, можно сказать пусть этот парень будет иметь право выполнять утилиту LOAD для таблицы T1. Кстати парень мог иметь право INSERT на туже таблицу, но не иметь право LOAD. Я ответил на твой вопрос Dmitry67?

Другой вопрос: "1. В DB2 нет online index reorg. ". Требуется уточнить что такое онлайн. В принципе все утилиты о которых я намекал - онлайн, в том смысле, что они выполняются одновременно с манагером. Но кроме того, в DB2, утилиты (большинство) имеют три SHARELEVELs:

1. NONE - утилита требует нераздельного доступа к ресурсу. Т.е. она будет ждать пока все кто использует ресурс уйдут (при этом новых пускать перестанут, этот процесс называется drain) и затем наложит замок (специальный, утилитный) на время своей работы. Если в процессе работы утилиты кто-нибудь к ресурсу обратиться, то он не будет становиться в очередь, а будет сразу выпихнут с соответствующим SQLCODE.
2. REFERENCE - кратко этот уровень позволяет доступ к ресурсу по чтению пока утилита делает свое дело.
3. CHANGE - вот этот уровень у нас называется также online. Этот уровень позволяет чтение-запись в процессе, например, REORG INDEX or REORG TABLESPACE. Мы этим штуку пользуемся широко, так как наша система 24Х7 (кроме полночи в пятницу, когда DB2 по графику перезапускается. Т.е. останавливается, делается независимый backup каталога DB2 и DB2 снова запускается. На это уходит 10-15 минут. Это не обязательно, но так повелось с давних пор) REORG c SHARELEVEL CHANGE - моя любовь. Тут недавно Michael Popov прикалывался надо мной ставя в пример Unix DBA-ев, которые пишут скрипты для автоматизации своей работы. Так вот у меня есть один (из многих) скрипт (объемом примерно 4000 строк на REXX), которому мы днем готовим список табличных пространств и/или индексных пространст, которые нам надо бы реорганизовать по каким либо причинам (можно дописать тот скрипт и он сам будет этот список готовить, но что тогда нам то делать?). И этот скрипт, в 2 часа ночи, расчитывает (на основании накапливаемой другим скриптом статистики) новые space параметры для реорганизуемого пространства, меняет эти параметры в каталоге и стартует утилиту REORG. Контролирует как утилита завершилась (вот тут то я и хотел получить более тесную связь с утилитой, но защита MVS меня не пустила, но и так проблема была решена), если утилита завершилась нормально делает пометку в некой таблице, если утилита завершилась аварийно делает некий cleanup. Причем скрипт запускает утилиты в несколько потоков одновременно. Короче можно долго рассказывает о том что этот скрипт делает. Думаю это могло бы быть интересно для тех кто администрит DB2 в MVS. Это скрипт уже несколько лет работает и я в него постоянно что-нибудь новое добавляю. Ну думаю и на этот вопрос я тоже ответил. Если есть еще вопросы по DB2 - c удовольствием отвечу. А вообще есть по DB2 изумительная (на мой взгляд) документация здесь:

http://www-3.ibm.com/software/data/pubs/

, доступная без каких-либо регистраций и бесплатно. Особенно меня впечатляет список так называемых ReadBooks. Вот список Top15 (most popular, а весь список содержит 402 названия):

1. Database Performance Tuning on AIX
2. Who Knew You Could Do That with RPG IV? A Sorcerer's Guide to System Access and More
3. LDAP Implementation Cookbook
4. Up and Running with DB2 for Linux
5. Using LDAP for Directory Integration: A Look at IBM SecureWay Directory, Active Directory, and Domino
6. Cross-Platform DB2 Stored Procedures: Building and Debugging
7. DB2 UDB Evaluation Guide for Linux and Windows
8. Servlet and JSP Programming with IBM WebSphere Studio and VisualAge for Java
9. DB2 UDB Exploitation of the Windows Environment
10. DB2 UDB for z/OS Version 8 Technical Preview
11. DB2 UDB/WebSphere Performance Tuning Guide
12. DB2 Java Stored Procedures Learning by Example
13. Fibre Array Storage Technology A FAStT Introduction
14. VSAM Demystified
15. Getting Started on Integrating Your Informati
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote:1
Утилиты - это не комманды SQL, это специальные служебные программы, которые могут и напрямую "лазать" в базу данных, это так называемые standalone utility. Они запускаются когда RDBMS не активна. Online utility работают когда RDBMS активна. Те что перечислил - онлайн утилиты.

2
Утилиты всегда выполняются в той же системе где находится БД, но в разных адресных пространствах.
Они могут запускаться и удаленно, т.е. с другой машины по сети. Для этого имеется специальная хранимая процедура, но как я уже писал эта утилита требует наличия Work Load Manager-a.

3.1 Да, поскольку утилиты используют некий внутренний интерфейс, поэтому в системе им требуютя спец. права.
3.2 И система строго следит за программами, которые вызывают утилиты.
3.3 Ведь эти программы могут воспользоваться полномочиями утилиты.
3.4 У того кто запускает утилиты тоже должны быть определенные полномочия. Причем эти полномочия могут быть гранулированы и по утилитам и по объектам базы. Например, можно сказать пусть этот парень будет иметь право выполнять утилиту LOAD для таблицы T1. Кстати парень мог иметь право INSERT на туже таблицу, но не иметь право LOAD. Я ответил на твой вопрос Dmitry67?



1 ok, то есть ниже мы говорим об online utilities
2 не понял почему их нельзя запустить без WLM. Ну допустим WLM классная приблуда, но что мешает им посылать команду серверу DB2 сделать ONLINE REORG такого то индекса ?
3.1 Безусловно
3.2+3.3 Почему ? Как это связано ?
Допустим у меня есть супер пупер полномочия на команду SQL "ALTER INDEX name СДЕЛАТЬ_ФИГНЮ" (пример абстрактный)
Permission на эту команду SQL есть только у пользователя A,B и C
Если я залогинился в систему как A (или установил комменцию с сервером DB как пользователь A) то я могу выполнить эту команду
То есть если я пользователь A, то я могу сделать это набрав этот оператор в некоей графической утилите, в COnsole Apllication на манер sql*plus, или законнектившись по ODBC как user A к серверу из тупой программы на VB
3.2 я совсем не понял. Почему надо следать ЗА ПРОГРАММАМИ ?
Если DB2 видит что команда которая делается выполняется пользователем у которого нет прав - то отсылает его нафиг

Похоже в IBM с DB2 ответственность за проверку полномочий на некоторые довольно стандартные операции базы (которые Вы изволили назвать "опасными" - что есть негативный опыт ? :) ) ложится на операционную систему. Совершенно непонятно почему.

А вот такой вопрос. Как выглядит работа сервера DB2 с точки зрения OS ?
Для справки MS SQL server с точки зрения OS - просто процесс (правда с кучей threads), и tengiz клялся и божился то он не использует ничего, что недоступно другим процессам писанным не Microsoft

То есть с точки зрения NT ms sql - просто процесс sqlserv.exe, который чтото там активно делает с файлами, и много что шлет и принимает по сетке. Вся работа сервера происходит в пользовательском режиме процессора. В время работы sql server процессор часто бывает в привилегированном режиме но только когда sql server просит систему что то сделать. В принципе поэтому никаокй крах sql server не должен привести к краху NT.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
SVK
Уже с Приветом
Posts: 8403
Joined: 23 Jul 2003 03:53
Location: SPb - KW - NY - CT - MD

Post by SVK »

zVlad wrote: WLM - недавнее изобретение ИБМ. Эта штука, в отличии от традиционного планирования по приоритетов, может обеспечивать достижения неких целей (goal mode), требуемых разными процессами (например процент CPU, или время ответа, или ... я не знаю что). WLM сам разберется кому и когда и какой приоритет назначить. Т.е. в конечном счете он конечно через приоритеты управляет, но он их постоянно потстраивает, чтобы ь заданым цели были достигнуты.


Ну, не такой уж он и новый. Я припоминаю, что году в 1998-99 примерно мне пришлось уже активизировать WLM, потому что какой-то очередной компонент IBM без него не работал (чуть ли не Unix System Services???). Но в WLM помимо Goal Mode была также Compatibility (? кажется) Mode, - и тогда он работал по до-WLM-ским алгоритмам. Вот и активизировали WLM Compatibility Mode (во избежание недоразумений в банковской production system). Этого было достаточно для тех компонентов, кому этот WLM был обязательным.

И к тому же в то время WLM входил в поставку OS/390, дополнительные деньги не требовались. Теперь это изменилось что ли? (Хотя, деньги были не мои; может, и в то время банк за все уплатил? :D )

Я теперь работаю с "удаленным доступом", компьютер стоит в другом штате, и про новые Systems Programmer's штучки знаю плохо.
LG - Life's good.
But good life is much better.
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Я к сожалению не имею возможность исследовать WLM в глубь. Но точно знаю, этот парень не приблуда, а концептуальная вещь. Например, некоторые возможности дисковой подсистемы ИБМ ESS "Shark" могут быть использованны только если есть WLM.
И это нужно не для запуска утилит вообще, а для запуска утилит как хранимых процедур. До WLM, хранимые процедуры выполнялись в специальном адресном пространсте, все в одном.
А вообще в системе может быть до 5+х aдресных пространств (каждое из этих пространств образует кучу threads):

DSNMSTR - главный координатор, SQL машина и Stage2 поиска данных
DSNDBM1 - ввод-вывод, и Stage1 поиска
DSNIRLM - менеджер блокировок . Используется не только DB2 а всеми продуктами требующими блокировки.
DSNDDF - удаленный доступ к DB2 через протокол DRDA.
DSNSPAS - выполнение хранимых процедур и пользовательских функций
DSNWLMх (х - количество хранимых процедур выполняемых в среде WLM) - выполнение хранимых процедур в наиболее защищенном режиме. А поскольку утилиты - критичные программы, выполнение их как хранимых процедур возможно только здесь.

К вопросу как выглядит DB2 с точки зрения системы. Не как обычное приложение. И не только DB2. В МVS имеется понятие подсистема, и кстати CPU mainframe имеет не только привилигированные и проблемные команды, но также "semi-privilеge" команды, видимо для поддержки подсистем типа DB2. Не знаю, могут ли быть NT Services аналогами подсистем в MVS? Кстати SQL в NT - это Service?

Кроме того имеется DB2 код, который активизируется системой в процессе начальной загрузки независимо от того будем мы запускать DB2 или нет. Этого кода может и быть если мы вообще не планируем мспользовать DB2 на данной системе.

"........3.2+3.3 Почему ? Как это связано ?"
Моя программа и вызванная ею утилита будут выполняться в одном адресном пространстве с одним и тем же ключом защиты памяти, и следовательно моей программе будут доступны области памяти утилиты и она сможет вмешиваться в процесс общения утилиты с DB2. А это требует санкции.

".........Допустим у меня есть супер пупер полномочия на команду SQL "ALTER INDEX name СДЕЛАТЬ_ФИГНЮ" .....
То есть если я пользователь A, то я могу сделать это набрав этот оператор в некоей графической утилите, в COnsole...."

В отношении ALTER-а, который есть оператор SQL, это так но в случае утилиты - нет.

"......3.2 я совсем не понял. Почему надо следать ЗА ПРОГРАММАМИ ?"
Точнее было бы сказать - система НЕ позволяет неавторизованным программам запускать авторизованные. Мне кажется это логично.


".......Похоже в IBM с DB2 ответственность за проверку полномочий на некоторые довольно стандартные операции базы (которые Вы изволили назвать "опасными" - что есть негативный опыт ? ) ложится на операционную систему. Совершенно непонятно почему."

И так и не совсем так. Часть функций по контролю осуществляет ПОДсистема RACF (Resource Access Control Facility), который используется всеми в MVS (аналогичный продукт имеется в VM и AIX). Например, ваш запрос даже не дойдете до компоненты работающей с удаленными конекциями DSNDDF, если у вас нет READ прав на так называемый "facility class profile" с именем DSN.DIST, который определен в RACF. Проверка полномочий, например, на получение данных из таблицы Таб1 может осуществляться самой DB2, но также может быть делигирована RACF. В нашей установке это делает DB2, но я планирую передать это RACF - просто хочу попробовать, но скорей всего это ужесточит защиту и без того достаточно сильную. Может быть разгрузит DB2. Пока не знаю.

Вообще, ИБМ строит свои продукты модульно. Если есть модуль управления блокировками, то он используется всеми, модуль защиты (хотя как мы видели DB2 имеет и свой внутренний механизм) - тоже, модуль управления транзакциями CICS - всеми кому нужен механизм транзакций (DB2 как положено базам данных имеет свой механизм в том числе two-phase commit, конечно, но через CICS вы можете объединять в транзакции не только работу реляционных, и не только баз данных.В VM напрмер есть файловая система с возможностью отката, видимо и в MVS есть).

Вот такие дела. На все вопросы вроде ответил.
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote:1
Моя программа и вызванная ею утилита будут выполняться в одном адресном пространстве с одним и тем же ключом защиты памяти, и следовательно моей программе будут доступны области памяти утилиты и она сможет вмешиваться в процесс общения утилиты с DB2. А это требует санкции.

2
Точнее было бы сказать - система НЕ позволяет неавторизованным программам запускать авторизованные. Мне кажется это логично.


1 Не понял, не можете ли пояснить
Грубо говоря утилита (рассуждаю с точки зрения знакомства с Win/Linux/VAX/VMS/RSX) это исполняемый файл (EXE). Когда он выполняется, то по определению работает в своем собственном адресном пространстве

То что работает в том же адресном пространстве (DLL) как правило используется для того чтобы быстро выполнять какую то функцию.

Все, кажется понял. Утилита в понимании IBM Более похожа на DLL, который делает чтото хитрое и опасное. Отсюда проблемы.

Непонятно почему нельзя запускать утилиту в отдельном адресном пространстве и общаться с ней по сети. Все проблемы сразу снимаются

2 Не совсем
Вот например у вас есть exec permission на процедуру X. Процедура X делает select из таблицы Y. Допустим у Вас нет привилегии на четие из таблицы Y. Вопрос: что будет при запуске процедуры X в DB2 ?
В MS SQL она благополучно отработает, и это правильно (готов подробно пояснить почему)

Ухожу буду в понедельник
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

SVK wrote:
"Ну, не такой уж он и новый. Я припоминаю, что году в 1998-99 примерно мне пришлось уже активизировать WLM, потому что какой-то очередной компонент IBM без него не работал (чуть ли не Unix System Services???). Но в WLM помимо Goal Mode была также Compatibility (? кажется) Mode, - и тогда он работал по до-WLM-ским алгоритмам. Вот и активизировали WLM Compatibility Mode (во избежание недоразумений в банковской production system). Этого было достаточно для тех компонентов, кому этот WLM был обязательным....."

Да, ты конечно прав, это мы недавно скакнули на 2.10 с 1.6. USS у нас работает. Наоборот я знаю, что без USS MVS нынче не работает. ОК, залогинился, смотрю, торчит в активных задачах WLM. Может он в Compatibility (да есть такой), а той хр. процедуре нужен именно Goal Mode? Я нынче не системный, я DBA. Поэтому меня все равно не пустят чтото в системе менять.

"....И к тому же в то время WLM входил в поставку OS/390, дополнительные деньги не требовались. Теперь это изменилось что ли? (Хотя, деньги были не мои; может, и в то время банк за все уплатил? )...."

Он и сейчас входит и "забесплатно". Ясный пень chargе-ат за все. WebSphere тоже входит за так.

"Я теперь работаю с "удаленным доступом", компьютер стоит в другом штате, и про новые Systems Programmer's штучки знаю плохо." Взаимно...
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Dmitry67 wrote:

"1 Не понял, не можете ли пояснить
Грубо говоря утилита (рассуждаю с точки зрения знакомства с Win/Linux/VAX/VMS/RSX) это исполняемый файл (EXE). Когда он ............
Непонятно почему нельзя запускать утилиту в отдельном адресном пространстве и общаться с ней по сети. Все проблемы сразу снимаются"

Вообще то утилиты работают автономно. Я ее запускаю с определенным заданием(мя), она их выполняет (или нет если что-то не так), строит репорт и завершается. С ней нет возможности (так впрочем и надобности) общаться.

".........2 Не совсем
Вот например у вас есть exec permission на процедуру X. Процедура X делает select из таблицы Y. Допустим у Вас нет привилегии на четие из таблицы Y. Вопрос: что будет при запуске процедуры X в DB2 ?
В MS SQL она благополучно отработает, и это правильно (готов подробно пояснить почему)......."

В свете твоего примера DB2 постапает также точно. Но SQL - это ведь не программы, запускаемые в системе. Система (MVS или NT) про SQL и таблицы ничего не знает, но вот программы, выполняемые в системе должны подчиняться некоторым требованиям безопасности. В MVS на этот счет имеется понятие авторизации программ.
User avatar
r00t
Уже с Приветом
Posts: 676
Joined: 28 Apr 2003 02:06
Location: Vilnius->Boston

Post by r00t »

Наскока я понял на мэйнфрейме есть одна операционка - MVS. Все остальное уже не имеет прямого доступа к железу, только через MVS. А MVS отточена годами - это раз. Не делает ничего кроме проверки прав того или иного приложения (включая все VM) - это два. Если довести MVS до уровня винды по финкциональности или дать поставить на мэйнфрейм ось без посредничестве MVS (то есть прямой доступ до железа из, скажем линукса), то дырявость общей системы будет сопоставима с дырявостью той-же оси на любом другом железе. Аппаратная защита в мэйнфрейме примерно такая-же как в писюке. А далее все софт.
User avatar
SVK
Уже с Приветом
Posts: 8403
Joined: 23 Jul 2003 03:53
Location: SPb - KW - NY - CT - MD

Post by SVK »

r00t wrote:Наскока я понял на мэйнфрейме есть одна операционка - MVS. Все остальное уже не имеет прямого доступа к железу, только через MVS. А MVS отточена годами - это раз. Не делает ничего кроме проверки прав того или иного приложения (включая все VM) - это два.


Если отвечать в двух словах - то всё совсем не так. И операционок есть несколько разных. И делает MVS намного больше, чем сам Windows. И делала большую часть из того, что делает сейчас, ещё когда Windows даже "в проекте" не было...

А вообще - понятно, что этот топик не имеет смысла продолжать. Как уже было отмечено выше.
LG - Life's good.
But good life is much better.
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

r00t wrote:
"Наскока я понял на мэйнфрейме есть одна операционка - MVS......"

Нет. Имеется как минимум три оси:

MVS - multiple virtual storage

VM - virtual machine, много лет назад имели место быть дискуссии, а можно ли ось считать осью поскольку собственно операционной среды эта система не дает, хотя сочетание VM/CMS - это конечно операционная среда. Основная особенность VM в том что на виртуальных машинах можно грузить любые системы МФ, в том числе саму VM, а в той другую и так далее пока не надоест. Гениальная система. Не имеет аналогов. В настоящее время овновное рекламируемое направление эффективного использования - выполнение множества Linux-ов (сотни). MVS может быть загружен на виртуальную машину под VM.

VSE - самая древняя из ныне здравствующих систем. Появилась в 1964 под названием DOS/360. В следующем будет празновать 40 летие. Притерпела множество изменений, используется и поддерживается ИБМ-ом до сих пор.

Linux - может грузиться на виртуальные машины VM, но может также быть единственной системой управляющей целым мэйнфрэймом. Такой вариант я лично не воспринимаю. Хотя ИБМ предлагает.


"......Все остальное уже не имеет прямого доступа к железу, только через MVS....." - не верно смотри выше.

"....... А MVS отточена годами - это раз......" - точно

" Не делает ничего кроме проверки прав того или иного приложения (включая все VM) - это два....." права проверяет подсистема RACF, имеющаяся также в VM-е и AIX.

" Если довести MVS до уровня винды по финкциональности......." - если сравнивать сервер-винду с MVS то на самом деле MVS представляет много большую функциональность чем винды. Достаточно сказать что MVS и VM каждый обладает фукциональностью Unix, дополнительно к своей очень не бедной функциональности. Клиентские GUI программы - это сфера персоналок, хотя терминальный режим MVS имеет всё необходимое для написания диалоговых программ.

"...... или дать поставить на мэйнфрейм ось без посредничестве MVS (то есть прямой доступ до железа из, скажем линукса), то дырявость общей системы будет сопоставима с дырявостью той-же оси на любом другом железе. Аппаратная защита в мэйнфрейме примерно такая-же как в писюке. А далее все софт."

Про Linux ничего не могу сказать. Про аппаратную защиту.... мое мнение, что МФ имеет принципиально иной уровень аппаратной защиты, я приводил выше пример на Ассемблере и никто мне не показал ничего подобного для ПК. Tengiz дал ссылку на документ по i386, вот прочитаю его может быть смогу найти правильный ответ. Если Вы хотите показать что i386 и МФ имеют одинаковый уровень аппаратной защиты - приведите аналогичные моим примеры на Ассемблере. Да и тогда все равно останется разница в том как работает ввод-вывод.
User avatar
VladDod
Уже с Приветом
Posts: 55982
Joined: 06 May 2001 09:01

Post by VladDod »

SVK wrote: ... А вообще - понятно, что этот топик не имеет смысла продолжать. Как уже было отмечено выше.

Звиняюсь, ... но этот топик - один из самых интересных, которые я когда либо читал на Привете. :umnik1:
в реале супруги редко бывают друзьями, так как их отношения подпорчены сексом (с)Роза
Плавали-Знаем! (C)
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

zVlad wrote:Про аппаратную защиту.... мое мнение, что МФ имеет принципиально иной уровень аппаратной защиты, я приводил выше пример на Ассемблере и никто мне не показал ничего подобного для ПК. Tengiz дал ссылку на документ по i386, вот прочитаю его может быть смогу найти правильный ответ. Если Вы хотите показать что i386 и МФ имеют одинаковый уровень аппаратной защиты - приведите аналогичные моим примеры на Ассемблере. Да и тогда все равно останется разница в том как работает ввод-вывод.

zVlad, никто Вам ничего не показал просто потому, что вся эта беседа - натуральный Кафка по степени сюрреализма. ЛЮБАЯ интересующая Вас информация доступна в интернете. Причём того времени, которое Вы потратили на набор текстов, содержащих вопросы по поводу реализации защиты в современных микропроцессорах уже вполне хватило бы для того, чтобы получить все необходимые ответы.

Вот Вам код для Visual C++ с заплатками на ассемблере, который при запуске под Windows на Интеле вызовет исключения при попытке выполнить привелигированные инструкции в пользовательском режиме, включая ввод/вывод и попытки изменить MSW и управляющие регистры подсистемы виртуальной памяти. Ровно то же самое получится на Linux - код, разумеется, придётся переделать, чтобы его можно было номально скомпилировать gcc:

Code: Select all

#include <windows.h>
#include <stdio.h>

DWORD   ExFilter (DWORD dwExceptionCode)
{
   printf ("Exception code: %0x\r\n", dwExceptionCode);
   return EXCEPTION_EXECUTE_HANDLER;
}

int main (int argc, char** argv)
{
   // let's try to issue a basic IO instruction
   //
   __try   {   
      _asm   mov   dx, 0x300
      _asm   in   al, dx   // <- this will cause EXCEPTION_PRIV_INSTRUCTION
   }
   __except (ExFilter (GetExceptionCode ()))
   {
   }

   // what if we try to load the local descriptor table register?
   //
   __try   {   
      _asm   mov   eax, 0x12345678
      _asm   lldt   [eax]   // <- this will cause EXCEPTION_PRIV_INSTRUCTION
   }
   __except (ExFilter (GetExceptionCode ()))
   {
   }

   // Ok, lets load the CR0 control registers (machine status word)
   //
   __try   {   
      _asm   mov   CR0, eax   // <- this will cause EXCEPTION_PRIV_INSTRUCTION
   }
   __except (ExFilter (GetExceptionCode ()))
   {
   }

   // Hm... how about loading page directory register?
   //
   __try   {   
      _asm   mov   CR3, eax   // <- this will cause EXCEPTION_PRIV_INSTRUCTION
   }
   __except (ExFilter (GetExceptionCode ()))
   {
   }
}
Cheers
User avatar
SVK
Уже с Приветом
Posts: 8403
Joined: 23 Jul 2003 03:53
Location: SPb - KW - NY - CT - MD

Post by SVK »

А мне эта дискуссия уже стала напоминать известный анекдот-тест. На сайте Fomenko он звучал так.

Решил мужик жениться и думает: кого бы в жены взять? Нашел трех девушек, дал каждой по пять штук "зеленых" с целью выяснить, кто же из них лучше.

Первая накупила модных шмоток, косметики и говорит мужику: "Я - лучшая, т.к. буду у тебя самой красивой и твоей гордостью".

Вторая пошла и купила ему самую модную одежду и говорит: "Я - лучшая, буду заботиться о тебе, ты будешь моей гордостью".

Третья взяла деньги, вложила в дело, раскрутилась, отдала ему пять штук и говорит: "Я - лучшая, потому как деловая и могу заработать сама".

Долго думал мужик и выбрал ту у которой сиськи больше...
LG - Life's good.
But good life is much better.
User avatar
Dmitry67
Уже с Приветом
Posts: 28283
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote: Моя программа и вызванная ею утилита будут выполняться в одном адресном пространстве с одним и тем же ключом защиты памяти, и следовательно моей программе будут доступны области памяти утилиты и она сможет вмешиваться в процесс общения утилиты с DB2. А это требует санкции.


zVlad wrote:Вообще то утилиты работают автономно. Я ее запускаю с определенным заданием(мя), она их выполняет (или нет если что-то не так), строит репорт и завершается. С ней нет возможности (так впрочем и надобности) общаться.


Вот и возникает вопрос: если это выглядит как вызов процесса с другими параметрами (аналог вызова команды "чтото .EXE параметры") то нахрена это делать в том же адресном пространстве ???
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Post by zVlad »

Для того чтобы точно знать когда и как вызваная утилита завершилась. Общаться в процессе выполнения не надо, но знать когда и как завершилась таки надо. В настоящее время, запуская утилиту как автономную единицу, я (программа) должен в цикле опрашивать систему типа "а как там задание такое-то, не завершилось ли?". И как только система ответит "да мол завершилось", идти и смотреть а как она завершилась. Not big deal, of course.
User avatar
Митяй
Уже с Приветом
Posts: 10000
Joined: 16 Jul 2003 18:47
Location: CA->AZ->DE->NJ-> AZ->GA->AZ

Post by Митяй »

zVlad wrote:Для того чтобы точно знать когда и как вызваная утилита завершилась. Общаться в процессе выполнения не надо, но знать когда и как завершилась таки надо. В настоящее время, запуская утилиту как автономную единицу, я (программа) должен в цикле опрашивать систему типа "а как там задание такое-то, не завершилось ли?". И как только система ответит "да мол завершилось", идти и смотреть а как она завершилась. Not big deal, of course.


То есть прерывания и сигналы в мире мэйнфреймов еще не изобрели ?: Так и тратят циклы CPU на опросы ?

ЗиВлад, скажите, зачем вы начитаете разговор о вирусах, в которых ни ухом ни рылом ? Да еще столь сильными утреждениями типа "мэйнфремы unbrakeble, потому что у них есть аппаратные средства защиты" ? Вы в курсе, что досовских вирусов, дописывающих себя в конец exe файла, или там бутовых каких, уже не производят ? Все норовят макрос присобачить, или по сети залезть. Вирусописатели вышли на новый уровень абстракции, на котором аппаратные средства - как мертвому припарки. Так что вас от вирусов спасает, как тут правильно заметили, положение "неуловимого Джо" плюс большой штат высокооплачиваемых админов, а вовсе не некие аппаратные преимущества.
А пристыдишь их - и сальцо найдется, и горилочка...
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

zVlad wrote:Для того чтобы точно знать когда и как вызваная утилита завершилась. Общаться в процессе выполнения не надо, но знать когда и как завершилась таки надо. В настоящее время, запуская утилиту как автономную единицу, я (программа) должен в цикле опрашивать систему типа "а как там задание такое-то, не завершилось ли?". И как только система ответит "да мол завершилось", идти и смотреть а как она завершилась. Not big deal, of course.

zVlad, что-то здесь не так. Даже в самых примитивных операционных системах типа UNIX или NT не нужно так делать: циклический опрос системы о состоянии определённого задания с целью последующего вычитывания кода завершения - это пустое сжигание циклов процессора, не говоря уже о том, что это вообще может не работать без того, чтобы система была в курсе, что кого-то интересует код завершания определённого процесса. Иначе идентификаторы процессов/заданий, или что там однозначно их адресует, нельзя было бы повторно использовать до следующего перезапуска системы.
Cheers

Return to “Вопросы и новости IT”