Переміщаємо додатки UNIX в WINDOWS за допомогою SUA

Корпорація Microsoft забезпечувала підтримку додатків UNIX для своїх операційних систем, починаючи з випуску Windows NT 3.1, яка мала сумісну з POSIX підсистему. Підтримка додатків UNIX і интероперабельность поступово розширювалися, і розробники Microsoft реалізували такі функції, як підтримка мережі, демонів і навіть X Window. З випуском Windows Server 2008 і Windows Vista, ймовірно, настав час підприємствам подумати про переміщення додатків для бізнес-застосування з UNIX в Windows, використовуючи підсистему Microsoft для додатків, заснованих на UNIX Subsystem for UNIX-based Applications (SUA). Дізнатися деякі функції цієї підсистеми і встановити її легко: завантажте потрібні інструменти, перевірте можливості, які пропонує SUA для традиційних додатків UNIX, і змініть додаток UNIX, щоб запустити його на Windows.

установка SUA

Перш ніж почати використовувати SUA, який включений в Server 2008 і Vista, потрібно встановити і запустити цей компонент Перш ніж почати використовувати SUA, який включений в Server 2008 і Vista, потрібно встановити і запустити цей компонент. В панелі управління в модулі Programs and Features клацніть на Turn Windows features on or off в панелі зліва. У Vista в діалоговому вікні Windows Features слід вибрати прапорець SUA, як показано на екрані 1, і натиснути OK. Якщо ви використовуєте Server 2008, запустіть Server Manager, потім правою кнопкою клацніть на Features, виберіть Add Features з контекстного меню і встановіть прапорець для Subsystem for UNIX-based Applications (необхідні системні файли були скопійовані раніше, коли ви встановлювалася Windows Server 2008 або Vista) .

В папці SUA, яка з'являється в меню All Programs згодом, бачимо два пункти. Файл підказки Help допоможе в освоєнні нових функцій підсистеми. Пункт Download Utilities перенаправить в Microsoft Download Center, звідки можна завантажувати утиліти і набір засобів розробки SDK для SUA. І 32-розрядна, і 64-розрядної версії SUA доступні на Server 2008 і Vista. Завантажити та встановити комбінований пакет, що містить утиліти і SDK, які мають різні розміри (від 193 до 210 Мбайт) в залежності від версії і операційної системи. SDK доступний для будь-яких систем, на які ви портіруете або для яких ви будете компілювати програми для UNIX. Те ж саме відноситься до утиліт, які мають програмні оболонки в стилі UNIX. При завантаженні ви отримаєте виконуваний файл архіву. Буде потрібно вказати каталог, куди файли будуть розархівовані для подальшої установки.

В процесі установки система запитує ім'я, згоду з умовами ліцензійного договору і пропонує стандартний або вибірковий варіант установки. Стандартний варіант передбачає розміщення використовуваних файлів в C: WindowsSUA і відповідні налаштування системи. Однак я рекомендую вказати вибіркову установку і встановити тільки ті компоненти, які дійсно потрібні, такі як підтримка систем BSD і UNIX, утиліти GNU, SDK і модуль для Visual Studio. Якщо вирішено встановити GNU SDK, потрібно прийняти умови ліцензійного договору, з назвою GNU Lesser General Public License, копія якого встановлюється разом з SDK.

Єдиний крок в роботі майстра, на який необхідно звернути особливу увагу, - це налаштування системи безпеки, показані на екрані 2 Єдиний крок в роботі майстра, на який необхідно звернути особливу увагу, - це налаштування системи безпеки, показані на екрані 2. Що з'являються параметри (як в стандартній, так і в вибіркової установці) залежать від ваших уподобань в ході установки. Параметр Enable Su To Root behavior for SUA programs дозволяє додаткам виступати від імені користувача root (це аналог облікового запису Administrator в системі Windows), коли активована функція User Account Control (UAC). У багатьох випадках системні програми і процеси, такі як демони в системах UNIX, вимагають цієї можливості; дії кінцевого користувача, такі як введення даних або призначені для користувача настройки програм, рідко вимагають подібної функціональності. Другий параметр дозволяє управляти настроюванням setuid, яка пов'язана зі здатністю додатків UNIX виступати від імені власника програми. Поширений сценарій в системах UNIX - це коли даний параметр дозволяє користувачам, які зазвичай не мають доступу до баз даних або файлів, запускати додаток як власника ресурсу і отримувати доступ, контрольований додатком. Всякий раз по можливості відключайте цю функцію.

Третій параметр - чи включати в Windows чутливість до регістру символів. За замовчуванням в Windows цього немає, і можна отримати доступ до файлу README. TXT, відкривши readme.txt. Роблячи Windows чутливим до регістру символів, що вводять, ви можете розмістити різні файли в тій же папці, і їх імена будуть відрізнятися тільки регістром вводу, наприклад README. TXT, Readme.Txt і readme.txt. Зломщик, що знає про те, як отримують доступ до таких файлів, може використовувати це. Я рекомендую вам не робити Windows чутливим до регістру, а зайнятися проблемами капіталізації тексту при портировании додатків. Опис проблем з безпекою для всіх параметрів можна знайти в файлі Install.htm в C: WindowsSUA.

досліджуємо SUA

Після того, як ви встановите утиліти і SDK для підсистеми, додаткові пункти меню приєднаються до групи програм SUA, включаючи (залежить від варіантів установки) програмні оболонки C і Korn, файл з останніми змінами і посилання для перевірки критичних оновлень. Найпростіший спосіб досліджувати підсистему - це запустити новий продукт в одній з встановлених командних оболонок. Тоді ви зможете досліджувати файлову систему підсистеми, використовуючи cd і ls - команди UNIX, як показано на екрані 3.

Тоді ви зможете досліджувати файлову систему підсистеми, використовуючи cd і ls - команди UNIX, як показано на екрані 3

Кореневої каталог файлової системи змонтований до каталогу установки SUA, як показано на екрані 4. Щоб розкрити файлову систему і отримати доступ до локальних і мережевих дисководів Windows, використовуйте пристрої файлової системи, розташовані в / dev / fs. Наприклад, dev / fs / C дозволяє отримати доступ до кореневого каталогу або диска C; / dev / fs / Z дає доступ до мережного диска, змонтованого як диск Z; а / dev / fs / C / Windows надає доступ до папки Windows.

Наприклад, dev / fs / C дозволяє отримати доступ до кореневого каталогу або диска C; / dev / fs / Z дає доступ до мережного диска, змонтованого як диск Z;  а / dev / fs / C / Windows надає доступ до папки Windows

При використанні команди cd або написанні шляху до цієї команди слід пам'ятати, що в UNIX потрібно використовувати прямий слеш (/), а не зворотний (), як в Windows. Перегляд відомих каталогів для здійсненних файлів, таких як / bin, / usr / bin (який є символічною посиланням к / bin), / usr / local / bin і / usr / sbin, відкриває багато утиліт командного рядка, відомих користувачам UNIX (наприклад, cp, rm, mkdir, find, size, join, sort). В інших каталогах можна знайти підтримку підсистеми X Window, sendmail і служб мережі, а також демонів. Останнє я опишу пізніше.

Ви можете переглянути запущені процеси підсистеми, використовуючи команду ps. Спочатку команда Ps повертає тільки процеси, запущені користувачем з оболонки. Якщо ви застосовуєте складні програмні оболонки або хочете оглянути процеси підсистеми і всієї Windows, які запущені, можете використовувати команду ps з ключем х (для інформації про всі процеси, що належать користувачеві) або з ключем А (для інформації про всі процеси в системі).

Щоб отримати інформацію про ключах, підтримуваних кожною командою, можна використовувати команду man оболонки. Самі програмні оболонки багаті можливостями, і ви можете використовувати їх, як при роботі в системі UNIX. На екрані 5 показаний сценарій програмної оболонки Korn, який використовується для розпакування за допомогою zip і tar дистрибутива XFree86 UNIX, який поставляється у вигляді декількох файлів. Програмна оболонка Korn - це інтерпретатор командного рядка UNIX, аналог cmd.exe в Windows, але більш гнучкий. Tar - це команда, яка використовується для створення архівів файлів і вилучення файлів з наявних архівів.

Вона раніше призначалася для роботи з магнітною стрічкою, але зараз це утиліта, яка використовується для розповсюдження програмного забезпечення, що складається з великої кількості файлів.

Запуск SUA, демонів і мережевих служб

Запускаючи Vista, ви запускаєте і підсистему UNIX. Як і UNIX, наша підсистема має процес init, який читає файли запуску з папки / etc / rc2.d, що містить символічні посилання на файли в каталозі / etc / init.d. В системі UNIX у вас були б додаткові папки, такі як rc3.d і rc4.d, що представляють кожен рівень виконання і стан, в якому може бути система, таке як «одного користувача», «без підтримки мережі», «в нормальному режимі і запущена ». На відміну від систем UNIX, SUA працює тільки з рівнем виконання 2. Назви сценаріїв в rc2.d починаються з Snn (для сценаріїв, викликаних при запуску) або з Knn (для сценаріїв, викликаних при завершенні), де nn - двозначне число, що використовується для вказівки порядку, в якому викликаються сценарії. Сценарій, який закінчується на 00, викликається першим; той, який закінчується на 99, - останнім. Така підтримка запуску і завершення демонів спрощує їх під'єднання до Windows Vista.

Підсистема забезпечує підтримку служб, запущених inetd (диспетчером служб, який керує службами Internet), таких як сервери Telnet, FTP, і TFTP. SUA підтримує IPv4 та IPv6. Щоб активувати мережеві служби, відредагуйте файл / etc / inetd.conf і зніміть символ коментаря у стандартній служби або додайте власну. Якщо у вас є мережева служба UNIX, запущена inetd, SUA буде підтримувати службу після її портирования.

Підтримка X Window

Як уже згадувалося вище, SUA підтримує X Window. Однак підсистема нt включає в себе X Server, тому необхідно або придбати і встановити комерційну версію сервера Х Window, такого як Exceed jn Hummingbird ( www.hummingbird.com ), Або недорогий або безкоштовний Х Server, такий як SourceForge.net ( www.sourceforge.net ).

З встановленим і запущеним Х Server можна працювати з програмами X Window, які поставляються з підсистемою SUA, в тому числі такими, як xeyes, системний годинник, з назвою xclock, і xterm (стандартний емулятор терміналу для X Window). Підсистема також доповнена менеджером X Window: twm. До того ж X Window підтримується з боку SUA заголовними файлами і бібліотеками, необхідними для створення додатків X Window.

Сценарії оболонки для портування

З повністю функціональними оболонками C і Korn і звичними інструментами обробки даних, такими як sort, uniq і col, портирование більшості сценаріїв оболонок повинно бути порівняно легким. Тут відповідні кандидати - сценарії, які перетворюють дані з файлів, наприклад сортують або з'єднують їх, видаляють копії або фільтрують вибрані стовпці, до того як вони будуть завантажені або після вилучення з бази даних, а також сценарії, які використовує FTP для відправки або отримання файлів даних. Клієнт і сервер FTP, які поставляються разом з підсистемою SUA, є більш функціональними, ніж їх аналоги в Windows. Багато організацій до сих пір покладаються на FTP, щоб переміщати велику кількість даних, і на системи UNIX, якщо справа стосується додаткових функцій і параметрів, що клієнтів FTP.

Компонування додатків Сі і C ++

SUA підтримує портирование додатків Сі і C ++ з UNIX, але необхідно враховувати деякі моменти. Підсистема поставляється з підтримкою компіляторів Сі і C ++ GNU. Однак за замовчуванням для компілятора використовується інтерфейс середовища Microsoft Visual Studio, яка повинна бути встановлена. Visual Studio може використовуватися для компіляції програм, написаних тільки в Сі, але не в C ++. На екрані 6 показано зміст Makefile - простого файлу на Сі - і приклад того, що відбувається, коли запускається команда make.

Якщо у вас немає Visual Studio, і вам потрібно компілювати вихідний код на C ++ або ви просто віддаєте перевагу використовувати компілятори GNU, можете зробити це, викликаючи gcc або g ++. Використовуючи компілятори GNU, звертайте увагу на розширення файлу. Наприклад, файл з вихідним кодом на C ++ в Windows зазвичай має розширення cpp, але компілятор g ++ очікує від файлу з вихідним кодом на C ++ розширення .cc. Якщо у файлу неправильне розширення, ви можете зіткнутися з випадковими помилками, особливо на платформах з 64-розрядної архітектурою. Я рекомендую перевірити файли підказок SUA і останні виправлення; ці документи містять корисну інформацію, яка допоможе уникнути труднощів.

У каталозі / usr / examples можна знайти приклад вихідного коду, який показує, як використовувати Oracle Call Interface (API для бази даних Oracle) і ODBC API. Приклад демонструє, як використовувати процедуру клієнта Open Network Computing для виклику віддалених процедур.

При портировании пакетних додатків для SUA вам, можливо, доведеться міняти сценарії командної оболонки, які можна використовувати для перегляду системи і створення файлів makefile, необхідних для компонування додатків. Сценарії старіших версій, особливо config.guess і config.sub, працюють в підсистемі не дуже добре; я рекомендую завантажити останні версії цих сценаріїв з сайту ftp.gnu.org до портирования додатків.

Коли ви портіруете або створюєте додатки X Window, переконайтеся, що встановлені і доступні всі необхідні файли. Багато додатків X Window використовують додаткові модулі або шрифти незалежних компаній, тому слід встановити і скомпонувати їх в першу чергу. Більшість відомих пакетів повинні Портировать порівняно легко, особливо якщо застосовуються компілятори GNU.

Інший світ

Отже, ми познайомилися з підсистемою для додатків, заснованих на UNIX, які доповнюють Server 2008 і Vista. Ця підсистема забезпечує реальну альтернативу системам UNIX для багатьох підприємств, дозволяючи їм виключати застарілі системи UNIX за рахунок переміщення додатків на Windows Server 2008 або Vista. Функціонально багаті програмні оболонки підсистеми, засоби управління файлами, легкий запуск демонів і мережева підтримка дійсно роблять розгортання і управління деякими сценаріями і утилітами в SUA простішим, ніж в середовищі Windows.

Джон Хоуі ( [email protected] ) - керівник підрозділу World Wide Services and IT Technical Community for Security компанії Microsoft. Має сертифікати CISSP, CISM і CISA

Проблема З часу Windows NT 3.1 система Windows підтримувала додатка POSIX. Однак недолік вбудованих функцій і інструментів вимагав підключення додатків UNIX до Windows, так що користувачам доводилося купувати і використовувати інструменти незалежних фірм.
Рішення Встановіть підсистему для додатків, заснованих на UNIX, Subsystem for UNIX-based Applications (SUA) для Server 2008 і Vista.
Що потрібно Server 2008 або Vista, зв'язок з Internet, пакет X Server (необов'язково)

кроки

  1. Встановіть SUA.

  2. Завантажити та встановити додаткові утиліти і SDK з сайту Microsoft.

  3. Встановіть X Server (необов'язково).

  4. Визначте кандидатів на портирование з числа сценаріїв командних оболонок і додатків.

  5. Скомпілюйте додатки Сі і C ++ для запуску в SUA.

Труднощі: 3/5