Win10でbashを使う~X11転送まで~

# はじめに
8月2日にAnniversery UpdateがWindows10に来たのでついにWindowsでBashが使えるようになりました。
なのでBashを使うようにする手段と軽い活用方法を書きます。

# 前提
* OS：Windows10
* 8月2日公開のWindows Updateを行っている

# bashを使う手順
基本的にはInsiderの時と変わっていません。
変わった点はbashを起動する際のみなので簡単に終わります。

## 開発者モードに変更
win10の設定からセキュリティ->開発者向け　に移動し、開発者モードに変更します。
再起動するまで、一部の機能は動作しない可能性があります。とありますがbashの有効化の時に再起動するので今はいいです。

 <img width="638" alt="win10設定者.png" src="https://qiita-image-store.s3.amazonaws.com/0/42927/46cad610-51ef-2411-d686-5a218254fc14.png">
## bashの有効化
コントロールパネル->プログラム->プログラムと機能->Windowsの機能の有効化または無効化
からWindows Subsystem for Linux (Beta)にチェックを入れてOK
ここで再起動しますか、と出るので再起動をします。

<img width="346" alt="windows機能.png" src="https://qiita-image-store.s3.amazonaws.com/0/42927/8ba95be2-2788-5245-b924-c897cd10f0b6.png">

## bashを起動
再起動後コマンドプロンプトを起動(「Win」+「R」cmdを入力してEnter)
bashコマンドを実行します。ここでyを入力するとインストールが始まります。

<img width="461" alt="bashinstall.png" src="https://qiita-image-store.s3.amazonaws.com/0/42927/99847532-8f30-7585-d094-189ba6888f7b.png">

インストールが進むと新しいUNIXユーザの作成を要求されます。（自分はアンインストールして入れたので復元が入りました。）ここでユーザ名とパスワードを設定することでインストールが完了します。画像では前にインストールしたときに.bashrcをいじったので起動できずにコマンドプロンプトに戻されていますが、初めての場合普通に起動します。

<img width="460" alt="basninstall2.png" src="https://qiita-image-store.s3.amazonaws.com/0/42927/f0e02c65-f0e8-2dcb-615f-8a4d01af7abf.png">

# bashインストール後
bashをインストールしたことによってapt-getも使えるようになります。なのでapt-getを利用していろいろなことをやっていきます。
# apt-getを使う
まず下記のコマンドを行ってください。

```bash
$ sudo apt-get update
$ sudo apt-get upgrade
```

ここで要求されるパスワードはbash起動時に作成したパスワードとなります。

# zshを使う
zshはapt-getでインストールできますが、chshで変更はなぜかできなかったので代替案を使います。日本語の表示はされますが入力は標準ではできないのでzshをいれておくと日本語ディレクトリの移動ができるようになるのでやったほうがいいと思います。(tabを使った予測から)

```bash
$ sudo apt-get install zsh
$ touch ~/.zshrc
$ vim ~/.bashrc


# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# ここから以下4行を書き込む
#Launch Zsh
if [ -t 1 ]; then
exec zsh
fi
# ......

$ source ~/.bashrc
```
こうすることでbash起動時にzshが動くようになります。

# その他コマンド
ここから先は確認だけ、今後いろいろ試したい。

## sshでX11転送

[Xming X Server for Windows](https://sourceforge.net/projects/xming/?source=typ_redirect)をインストールする(sourceforgeに飛びます)

インストールしたらXmingを起動

起動後にdisplayを確認
<img width="276" alt="xming.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42927/ccae2ff9-c3f2-107e-264d-db9e56e72b25.jpeg">

bashで以下のコマンドを行う。

```
$ export DISPLAY=localhost:0.0
```

これでssh接続時に-XYオプションをつければx11転送ができるようになります。

## ping

普通にやると下の結果になる

```zsh
% ping google.com
ping: icmp open socket: Permission denied
```

bashを開くcmdを管理者権限で開く必要があり、そうするとpingコマンドが使えるようになる。(情報提供:緋雪さん)

```zsh
% ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=0.000 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=0.000 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 0.000/0.000/0.000/0.000 ms
```

## nslookup
問題ない模様

```zsh
% nslookup google.co.jp
Server:         x.x.x.x
Address:        x.x.x.x#53

Non-authoritative answer:
Name:   google.co.jp
Address: 216.58.221.195
```

## nmap
これもダメ

```zsh
% nmap server
Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-04 19:32 DST
Problem binding to interface , errno: 22
socket_bindtodevice: Invalid argument
NSOCK ERROR [1.0570s] mksock_bind_device(): Setting of SO_BINDTODEVICE failed (IOD #1): Invalid argument (22)
NSOCK ERROR [1.0570s] mksock_bind_device(): Setting of SO_BINDTODEVICE failed (IOD #2): Invalid argument (22)
NSOCK ERROR [1.0570s] mksock_bind_device(): Setting of SO_BINDTODEVICE failed (IOD #3): Invalid argument (22)
Problem binding to interface , errno: 22
socket_bindtodevice: Invalid argument
```

# 感想
今日気づいて投稿したのでいろいろ確認したくてもできてない部分が多い。
ネットワーク系統はもうちょっと見てみたい。
windowsで仮想マシン使わずにctfができたらいいよね！