СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H Линуксоид переходит на windows в черновиках

Не так давно я сменил работу — перешел в очень крупную организацию со строгими политиками безопасности. По корпоративному кодексу здесь все сотрудники сидят под Windows с урезанными правами. Политики безопасности довольно жесткие. До этого в качестве основной рабочей системы я использовал Linux, на который перешел очень давно, сначала поставив его на служебный компьютер, а потом и на все домашние.



Помимо основной работы я веду дополнительно несколько проектов на Django, а моя должность никак не связана с программированием. Можно сказать, что с точки зрения IT-шников и безопасности, я являюсь обычным офисным планктоном. И здесь я опишу вещи, которые я развернул на своей урезанной во всех правах рабочей станции. Возможно большинство моих заметок будут наивны, но для меня они стали открытием — за последние 8 лет windows я видел три раза, два из которых по телевизору) И эта статья окажется полезной людям, оказавшимся в схожем со мной положении.

Базовый софт


Сначала это кажется непривычным — здесь за каждой программой надо идти на официальный сайт и качать ее руками. А как качать? Надо открывать Internet Explorer, искать в google, ждать, пока он подвиснет или упадет. Никаких wget-ов и curl-ов обнаружить мне не удалось… Благо мучиться с этим браузером недолго — первым делом встает мой любимый огнелис. После этого ослика (его еще так называют?) можно отправить подальше.

Далее нам нужно как-то общаться с людьми. Здесь мне нужен скайп и аська. Быстро находим родной pidgin и skype. Skype… здесь он тормозит еще больше и жрет памяти больше всего офисного пакета. Хотя вроде теперь он принадлежит Microsoft, неужели никак нельзя оптимизировать? Хорошо, что весь этот софт подхватывает системные настройки прокси.

На заметку. В Windows 7 есть встроенная утилитка «Ножницы». Она позволяет удобно делать скриншоты — а именно выделить нужную часть экрана для снимка. Ищется она в меню «Пуск». Я хотел повесить запуск ее на горячую клавишу, но пользовательские права доступа не дали мне этого сделать. Зато она находится в system32 и ее можно вызвать через <Win-R> -> snippingtool. Ей я и делал все скриншоты в статье.

Консолька


Первое, с чем я не мог смириться — отсутствие консоли и привычных команд. Как бывший пользователь linux я не мог вообразить работу без привычного bash-а. Порыскав по интернетам, нашел для себя хороший эмулятор терминала Conemu. Довольно добротная консоль. Имеет кучу настроек, позволяет делать табы, умеет нормальное выделение-копирование-вставку текста без особо лишних телодвижений, поддерживает терминал по умолчанию (я выбрал powershell), автозапуск скриптов при загрузке, файловый менеджер FAR. Смотрится вполне симпатично.



В линуксе я привык делать ссылки на часто используемые программы в исполняемые директории. Здесь у меня нет на это прав. В system32 просто так ничего не добавишь. Свой PATH по умолчанию я тоже не нашел, как поменять. Пришлось ставить в ConEmu при запуске выполнение скрипта для добавления новой директории.

PowerShell порадовал — довольно логичные команды есть на многие часто используемые утилиты — Get-Process, Format-List, Select-String, Stop-Process… Конечно не так удобно — непривычные опции, на выходе не строки, а объекты, но положить отжирающий память процесс уже можно. В прочем, можно и в cmd — tasklist и killtask там также есть. Также порадовало наличие уже привычных в алиасов. ls, mv, ps, kill — уже есть из коробки, что несказанно радует.

Конечно не обошлось без граблей. Так, команда cat есть, за ней скрывается Get-Content, которая выводит текст в кодировке ANSI. Чтобы вывести в UTF-8, нужно добавлять дополнительный параметр. И хотя алиасы есть, я не могу сделать их с параметрами! То есть alias cat «Get-Content -Encoding UTF8» не работает. Обход этого — создание своего скрипта. Все советуют делать chcp 65001 и выставлять шрифт Lucida. Хрен — для PowerShell это не работает!

Ну и да, эти чертовы слеши в другую сторону! Работая в консоли постоянно с ними путаешься. И еще доставляет регистронезависимые команды и файлы — быстро привыкаешь и уже поступаешь также на других машинах с обычной консолью.

Такие косяки все больше и больше подталкивали развернуть окружение Cygwin или собрать нужные мне вещи через mingw. Но об этом ниже.

Питончик


Конечно, я привык ставить все devel-вещи через apt или yum, но в чудном мире windows ничего такого так и не появилось. Опасаясь за отсутствие админских прав и идя по принципу методики установки прочего стороннего софта, я стал рыскать в поисках portable-версии. Зря, все portable версии python ужасны. Они либо не содержат половины встроенных библиотек, либо тянут за собой все, что только можно. Поставив одну из них, я обнаружил Pycharm, Sublime, django и кучу еще всякой всячины. Господи, там прилетело даже PyQT с QTDesigner-ом!.. Все хорошо, но нафига? Тем более версии стороннего софта оставляют желать лучшего.

В итоге я скачал обычный интерпретатор CPython с офсайта — его можно установить без админских прав.



Мой инструмент наконец-то поставлен и запускается! Дальше, естественно, мне нужны дополнительные либы для него. Я привык ставить их через pip. В новых версиях python (>=3.4) менеджер библиотек идет сразу в составе интерпретатора, но я до сих пор использую вторую ветку. Вопрос этот холиварный, лично меня не устраивает тотальный unicode и расширенный object.

Ну что же, официальное руководство говорит нам ставить pip через утилиту get-pip. Возможно на linux я бы и попробовал это сделать, но у меня на работе прокся, да еще и с NTLM-аутентификацией. Консольными скриптами не пробьешь просто так. Поэтому берем бинарь отсюда и ставим через него.

На заметку. В windows версии питона различные команды (pip, easy_install, startproject...) добавляются в папку <install-dir>\Scripts. Не забываем включить ее в PATH.

Коварная прокся


У нас в организации стоит прокси с аутентификацией NTLM. Это печально — мало софта могут с ней работать. Тем более сторонние библиотеки. Будет вылетать ошибка 407. Что уж говорить, даже git не может пойти через нее. Выход есть — ставим свою проксю cntlm на локальной машине. Для нее не требуется админских прав, запускается как бинарник из консоли. Для запуска создаем файл настроек.
cntlm.ini
Username       UserName
Domain           DOMAIN
Password        PASSWORD
PassLM           XXXXXXXXXXX
PassNT           XXXXXXXXXXX
PassNTLMv2      XXXXXXXXXXXXXXXXXXXXXXXXX
Proxy           organization-proxy.ru:8080
NoProxy         localhost, 127.0.0.*, 192.168.*
Listen          127.0.0.1:3129


Запускаем и смотрим результат)
PS C:\distr\cntlm-0.92.3> .\cntlm.exe -c cntlm.ini
PS C:\distr\cntlm-0.92.3> netstat -na | findstr 3129
  TCP    127.0.0.1:3129         0.0.0.0:0              LISTENING

Она ждет подключений! Настраиваем софт на нее. Старую проксю из системных настроек удалить не получилось — запрещено.

Удаленный терминал


Следующая наша цель — доступ по SSH к внешним ресурсам. А все порты закрыты. Изначально я запустил на одном из поддерживаемых мной сайтов аяксовый anyterm с авторизацией по SSL-ключу. Изредка проверять хватит, но не очень удобно — не работают привычные для терминала комбинации клавиш. Обычный терминал предпочтителен. Не беда — SSH умеет рабоать через HTTP-прокси, это настраивается в putty.



Но для этого proxy-сервер должен поддерживать метод CONNECT.
Едва ли админы оставят эту особенность. Но он должен работать для HTTPS-сайтов, а это порт 443. Иначе просто не откроется SSL-сессия (да поправят меня профессионалы в этом деле). Значит нужно найти где-то sshd на нужном порту.
У меня завалялся один компьютер с выделенным белым адресом, на нем я запустил OpenSSH на 443 порту. Ну на самом деле я оставил на 22, а просто добавил правило в iptables. К нему в Putty отлично настраивается доступ через корпоративную прокси. Уже оттуда я могу выйти куда надо.

Делаем доступ везде


Получив доступ по SSH к удаленным ресурсам мы немного развязали себе руки. Идем дальше — запускаем putty в режиме socks-сервера.



Выставляем в браузере доступ к нужным ресурсам через созданный локальный socks… ну вы поняли, что теперь ко всем заблокированным ресурсам я иду через созданный туннель… А ведь ничего хитрого.

Честно сказать, мне это не обязательно, но мои руки было уже не остановить.

Разворачиваемся


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

apt-get install git python-virtualenv vim-nox
virtualenv venv 
. venv/bin/activate
pip install django==1.7.0
./manage.py startproject myproject


Но windows не так удобен. Идем на сайт git-а, качаем и ставим. Благо для этого админских прав не требуется. Щелкнув по ярлыку я был приятно удивлен, что git запустился в окружении cygwin, а это значит передо мной нормальный shell и я могу работать с файлами в привычном режиме.



Помните, выше мы поднимали NTLM-прокси на своей машинке? Изначально ее я делал как раз из-за git-а. Теперь у него в настройках можно указать ее.

git config --global https.proxy http://localhost:8080/

В линуксе я для написания кода использовал мой любимый VIM. В виндоус я не нашел его полезным. Наладить его работу можно, но его преимущество было в том, что всегда торчишь в одной из нескольких открытых консолей. Здесь же все визуально, по этому был поставлен Sublime Text. Раньше мне про него рассказывали хорошее. И не обманули — в условиях тотального GUI оно мне показалось удобнее.

Конечно потребовался еще и легкий блокнотик вместо notepad, а то он уж совсем убогий. Наверно его не меняли со времен Windows 98. В интернете прочитал, что многие пользуются Notepad++. Попробовал, понял, что не мое — слишком наворочено всего много, да и компьютер у меня не слишком шустрый. Выбор пал на akelpad. Легко, просто, читает линуховое окончание строк, понимает разные кодировки, ищет и заменяет по регекспам, умеет несколько вкладок. Мне не хватает только VIM-режима.

В заключение


Ну вот и все. Как показала практика, в окружении врага службы безопасности со скованными руками порезанными правами и в незнакомом окружении жить можно! Конечно многое недоступно в этом диковинном мире Windows, но со временем все приходит. Если это читают те, кто прыгнул в окна после многолетнего сожительства с пингвинами, пишите ваши ощущения. И да, опытные пользователи windows, извините меня за невежество по отношению к этой системы и поправьте, если я что-то написал не так.

P. S. Кстати, почему в обновленном хабре есть топик «Настройка Linux», а нет «Настройки windows». Для меня это оказалось не такой уж тривиальной задачей.

комментарии (45)

0
btd ,  
Сам пару дней на винде, нашел вот эту сборку ConEmu. Имхо самая удачная (входит msysgit, есть tab-автодополнение).
+2
+3 –1
sasharu ,  
Очень странная организация, дающая права администратора на рабочие места, но запрещающая ставить свой дистрибутив.
Кстати о правах администратора, а чем вас виртуальная машина с любимым дистрибутивом не устраивает?
0
+2 –2
AndersonDunai ,  
Виртуалка — не торт :(
+8
sasharu ,  
Ну да, а cygwin торт. По мне так это костыль.
0
vvpoloskin ,  
Прав действительно нет. Cygwin не торт, просто приятное дополнение. В нем я могу быстро открыть какой-нибудь текстовый файл и обработать его привычными мне командами (cat, sed, grep, cut, sort)
+1
+2 –1
digitallez ,   * (был изменён)
Автор пишет что прав нет. Может если были-бы права, не было-бы этой статьи.
+6
+7 –1
pnick ,  
А потом приходит СБ (или подключается по удаленке) и начинается. 10 объяснительных, почему и зачем тебе этот софт на машине, зачем обходишь прокси итд.
0
vvpoloskin ,  
Ну строго говоря, обходить я ее еще и не начинал. Все же работает через нее.
+1
lvx ,  
Свой PATH по умолчанию я тоже не нашел, как поменять.

В доп. параметрах системы имеется кнопка «Переменные среды», за которой прячется окошко с системными и пользовательскими переменными. Создаем в пользовательской части переменную PATH, заполняем чем нужно, сохраняем, перезагружаемся, радуемся.
+2
Borz ,   * (был изменён)
перезагружать не надо — достаточно перелогиниться (если глобально). Локально — достаточно перезапустить сессию приложения.
0
lvx ,  
ну да, это я по привычке, обычно проще сказать «перезагрузитесь», чем объяснять как выполнить перелогин
+2
Borz ,  
ну вы же «бывшему» линуксоиду комментировали :)
0
Grox ,  
«Пуск-Выйти, а затем войти». Главное не употреблять слов — разлогинся/залогинься и прочего слэнгового и отлично работает.
+1
lvx ,  
К сожалению, у кого-то «Пуск, Выйти», у кого-то «Пуск, Завершение работы, Завершение сеанса, да, именно Завершение сеанса выбрать», а у кого-то и Пуска нет уже. А вот как перезагрузиться — все знают независимо от версии ОС.
+1
Evengard ,  
Как знаком этот путь… Вам ещё повезло. У вас авторизация по ntlm (и видимо на рабочей станции) парольная. у меня смарткарта. пришлось под это cntlm править. хотя я себе ещё дополнительно таки права локального админа получил, да…
+1
Borz ,  
Если у вас установлен корпоративный MS Office, то скорее всего установлен и OneNote. В этом случае, можно вместо виндовых «ножниц» использовать фиктивную отправку в OneNote:
1) Единоразово (при входе в систему) запускаем OneNote. Он запихивает в трей утилиту.
2) нажимаете Win+Shift+S и выбирается «снимаемую» часть экрана
3) в появившемся окошке жмёте кнопку «Скопировать в буфер обмена»

Домашнее задание: посмотреть что ещё она умеет (быстрый вызов — Win+N)
0
Skywrtr ,  
Яндекс.Диск умеет переназначать PrtScr, открывая удобный редактор, где можно обрезать скриншот, нарисовать стрелочки и другие фигуры, и прочее… Конечно, если политики безопасности позволят его установить.
0
eyeless_watcher ,  
Для получения скриншота текущего окна вместо мучений с ножницами можно использовать Alt+Print Screen
0
Borz ,  
это когда надо активно окно заскринить. а если нужен участок экрана?

ЗЫ: у PrtScr (без Alt) есть преимущество — он захватывает и всплывающие подсказки и не скрывает контекстное меню
0
eyeless_watcher ,  
В статье нет ни единого скриншота чего бы то ни было, кроме текущего окна приложения.
0
Borz ,   * (был изменён)
смотреть надо ширше — автор не только для этой статьи скриншоты может делать.
+2
IlyasR ,  
По поводу разработки на django лучше использовать удаленную, но полноценную линуксовую машину, tmux и vim вам в помощь.
0
CaptainFlint ,  
В линуксе я привык делать ссылки на часто используемые программы в исполняемые директории. Здесь у меня нет на это прав.
Если делать не symlink, а junction, то можно и с правами обычного пользователя.
+4
mrakgi ,  
Вы забыли добавить. «А работать мне предстоит менеджером по продажам». Это я к тому что чаще всего все это пользователю не нужно. Нужно тем кто хочет заниматься на работе не работой а своими делами ) До сихпор помню кошмар как такой же умный человек запустил в сетке на 400 компов с 98ми DHCP сервер. Так как это был 2001 год и я был еше зеленый. Сигареты улетали одна за одной а понять что происходит я за два часа не смог ))
+6
+7 –1
differentlocal ,  
Хороший и полезный опыт, но… вы на работе работать не пробовали?
+1
vvpoloskin ,   * (был изменён)
Вам кто-то сказал, что я не работаю? Конкретно мой случай — я приезжаю на работу за час до начала, ухожу на два позже, дела рабочие делаю. Причина — мне не удобно дома работать.
0
Borz ,  
«приезжаю за час до начала, ухожу на два позже» не показатель того, что вы работаете ;)
да и дома не надо работу работать. Или у вас ещё своей семьи пока нет?
+2
rpv ,  
А не проще согласовать установку софта, который необходим и не ставить костыли?
–1
thunderspb ,  
Простите, но как вы обоснуете необходимость установки python и иже с ним на компьютер «менеджера по продажам»? К тому же в крупных компаниях та еще бюроктария, одобрения непосредственного руководителя и т.п.
0
HDDimon ,  
вместо консольного vim попробуйте gvim. Для винды очень годная сборка.
+1
JuraZ ,  
В Windows не всё так просто с security, типо есть root [читай мембер в Local Administrators] или нет.
Нужно смотреть что там ваши сисадмины с GPO накрутили, как Firewall настроен и т.д… Похоже что гаики не слишком туго затянуты, так, обычного пользователя попугать :)
Ради интереса посмотрите URA вашего usera: whoami /all
0
k12th ,  
Ох уж эта корпоративная прокся с NTLM!..

Два дня мы пытались понять, почему в Safari одни кросс-доменные запросы работают, а другие, точно такие же — нет. Оказалось, что Safari не очень дружит с NTLM (или наоборот, точно не знаю до сих пор).
А как увлекательно было каждые три месяца вписывать новый пароль в конфиги npm, git, bower!..
–1
KarasikovSergey ,  
Так проблема наверное в Сафари, который не умеет NTLM, а не NTLМ, которой до того, кто ею пользуется дела нет?
0
Zeeeee ,  
Просто идём с бутылкой пива шоколадкой к админу, и получаем root)
0
JIghtuse ,  
А потом админа увольняют. Не сработает такое в крупных компаниях.
0
JIghtuse ,   * (был изменён)
По корпоративному кодексу здесь все сотрудники сидят под Windows с урезанными правами. Политики безопасности довольно жесткие.
<...>

Сначала это кажется непривычным — здесь за каждой программой надо идти на официальный сайт и качать ее руками.

Странно, обычно в таких компаниях есть внутренний ресурс, с которого разрешается ставить программы. Они оттестированы и работают для большинства, качать что-то откуда-то ещё не рекомендуют.
+1
lvx ,  
По моему опыту в таких компаниях чаще вообще запрещается самостоятельно ставить программы. А вот админы — да, ставят что-то протестированное, из запасов, если не требуется самая последняя версия.
+1
+2 –1
DirtyDog ,  
Человек пытается из виндовса сделать линукс, а когда эта сомнительная идея заканчивается неудачей, то винит систему. И если верить насчет тормозов и крашев, то либо железу давно пора на покой, либо система захламлена до ужаса.
0
Goodkat ,  
либо система захламлена до ужаса
Ну так столько левого софта он там поустанавливал.
Неудивительно, если ещё и трояна какого притащил, пока рыскал в поисках portable-версий, линуксоиды — они ж как дети, всё в рот тянут устанавливают всё подряд, зловредов опасаться не приученные :)
0
vvpoloskin ,  
Вы сделали странный вывод. Я не делаю из нее linux, просто пытаюсь адаптироваться к новой системе. Очень тяжело, знаете, после нескольких последних лет работы линуховым и сетевым сисадмином, получать ограничения в правах.
+1
KarasikovSergey ,  
Что-то слабовато права ограничены. Ограниченные права — это когда правый клик запрещен, доступ к c:\ запрещен, а запускать можно только то, что напрямую разрешено политиками. А тут в худшем случае речь идет о стандартной юзер-конфигурации.
0
out0f0rder ,  
А какая прокся не знаете?
+1
Viacheslav01 ,  
Интересно было почитать.
Единственное, что меня как пользователя винды удивило, это: Надо открывать Internet Explorer, искать в google, ждать, пока он подвиснет или упадет.
Если честно уже забыл, когда ослик вис или падал, в моей практике чаще падает хром (лису не пользую) хотя и используется гораздо реже.
0
Viacheslav01 ,  
Хотя если разговор идет о старичке ХП, то да наверное там еще шестой ослик топчется.
+1
nerudo ,  
[Задумчиво чеша бороду] Что-то многовато вам прав оставили. Надо было разрешить запускать только конкретные установленные программы.