HackerzLab.博多 Vol.21 子供向けLinuxハンズオン資料（macOS版）

# HackerzLab.博多 Vol.21 子供向けLinuxハンズオン（macOS版）

2019/05/05(日) HackerzLab.博多 Vol.21 子供向けLinuxハンズオンの資料（macOS版）です。


## 1. 事前準備

### 1-1. ターミナル画面を開く

メニューバーから**[移動]** ==> **[ユーティリティ]**を開き、
**[ターミナル]**をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/9e963816-04f6-abf3-0638-77a48d0ebdb8.png" width=100%>

今回のハンズオンでは、Linuxサーバの専用ログインスクリプトの関係で、ターミナルの背景色は黒色をおすすめします。（プロファイルであれば Basic, Homebrew, Pro など）


## 2. Linuxサーバとの通信

### 2-1. ハンズオン用Linuxサーバとの通信の確認

**ターミナル画面**で、pingコマンドを使ってLinuxサーバとの通信を確認します。

**192.168.xxx.xxx**は、LinuxサーバのIPアドレスです。
具体的なアドレスはハンズオン当日にお知らせいたします。


```
ping 192.168.xxx.xxx
```

応答が帰ってきているようでしたら、
**CTRL + C** と入力してpingの実行を終了させます。

実行結果例）

```
yuza-no-MacBook:~ yuza$ ping 192.168.xxx.xxx
PING 192.168.xxx.xxx: 56 data bytes
64 bytes from 192.168.xxx.xxx: icmp_seq=0 ttl=64 time=25.314 ms
64 bytes from 192.168.xxx.xxx: icmp_seq=1 ttl=64 time=9.712 ms
64 bytes from 192.168.xxx.xxx: icmp_seq=2 ttl=64 time=3.953 ms
64 bytes from 192.168.xxx.xxx: icmp_seq=3 ttl=64 time=17.016 ms
^C
--- ubuntu1804 ping statistics ---
8 packets transmitted, 8 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.953/28.101/68.037/19.525 ms
```

### 2-2. ファイルサーバへの接続

メニューバーから**[移動]** ==> **[サーバへ接続]**をクリックします。

サーバーの欄に```smb://192.168.xxx.xxx/```と入力します。
（下記の画面例では **192.168.xxx.xxx** が **ubuntu1804** となっています。）

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/22ac9d40-fdfa-1cbe-02e4-58946cf42b80.png width=70%>

続いて、ユーザー名とパスワードを入力します。
ユーザーの種類の指定を"ゲスト"から"登録ユーザ"に変更し、

各自に割り当てられた**ユーザー名**と**パスワード**を入力します。

画面では**s19**になっていますが、そのまま真似しないこと！！
**s??**は、各自に割り当てられた**番号**を入力してください。

|項目|入力値|
|---|---|---|
|名前|s??|
|パスワード|s??|


<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/4bc638b0-ffc7-33e1-924b-92642354bc55.png width=70%>

接続に成功すると\\192.168.xxx.xxx\s19フォルダの内容が以下のように表示されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/0c892483-ce29-26b0-249a-1f86e684eb65.png" width=70%>

## 3. telnet/sshでのログイン

### 3-1. telnetでのログイン

```
yuza-no-MacBook:~ yuza$ telnet 192.168.xxx.xxx
```

**telnet**接続に成功すると、以下のようなメッセージが表示されますので、各自に割り当てられた**ユーザー名**および**パスワード**を入力します。

```
Trying 192.168.xxx.xxx...
Connected to ubuntu1804.
Escape character is '^]'.
Ubuntu 18.04.2 LTS
ubuntu1804 login: s19      <--- ユーザー名を入力
Password:                  <--- パスワードを入力（表示されない）
```

ログイン後の画面の例

```
Last login: Tue Apr 23 11:10:08 JST 2019 from 192.168.xxx.xxx on pts/0
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-47-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

0 個のパッケージがアップデート可能です。
0 個のアップデートはセキュリティアップデートです。

s19@ubuntu1804:~$ 
```

ログアウトするには、**exit**と入力します。

```
s19@ubuntu1804:~$ exit
```


### 3-2. sshでのログイン

#### 3-2-1. /etc/hostsの編集
```
yuza-no-MacBook:~ yuza$ su -
Password:
```

**/etc/hosts**の編集の前に、**/etc/hosts** を **/etc/hosts.org** というファイル名で（タイムスタンプを保持して）バックアップしておきます。

あらかじめ、バックアップ後のファイル名 **/etc/hosts.org** が存在していないことを確認しましょう。

```
yuza-no-MacBook:~ root# ls -al /etc/hosts*
-rw-r--r--  1 root  wheel  269  4 21 23:52 /etc/hosts
```
（/etc/hosts*は１つしか表示されないはず）
**cp -pコマンド**でコピー（バックアップファイルを作成）します。

```
yuza-no-MacBook:~ root# cp -p /etc/hosts /etc/hosts.org
```

**/etc/hosts**を編集します。

```
yuza-no-MacBook:~ root# nano /etc/hosts
```

**/etc/hosts**を以下のように編集します。
入力が終わったら、CTRL + X を押し、y と答えて保存・終了しておきます。

**192.168.xxx.xxx**は、*2-1.*の作業で応答が返されてきた**IPアドレス**に置き換えて入力してください。。

```sh:/etc/hosts
192.168.xxx.xxx	    ubuntu1804    <-- 最下行に追記
```

**catコマンド**で編集後の内容を確認します。

```
yuza-no-MacBook:~ root# cat /etc/hosts
```

間違いがなければ、**exitコマンド**でrootユーザーからログオフします。

```
yuza-no-MacBook:~ root# exit
logout
```

#### 3-2-2. sshコマンドでの接続

**sshコマンド**でLinuxサーバに**ssh接続**します。
**sshコマンド**に続いて、**ユーザー名@接続先ホスト名**と入力します。

```
yuza-no-MacBook:~ yuza$ ssh s19@ubuntu1804
Warning: the ECDSA host key for 'ubuntu1804' differs from the key for the IP address '192.168.xxx.xxx'
Offending key for IP in /Users/yuza/.ssh/known_hosts:13
Matching host key in /Users/yuza/.ssh/known_hosts:15
```

途中で、接続を続けるか尋ねてくるので、**yes**と入力します。

```
Are you sure you want to continue connecting (yes/no)? yes
```

続いて、パスワードを入力します。

```
s19@ubuntu1804's password: 
```

ログインに成功すると、以下のようなメッセージが表示されます。

```
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-47-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

0 個のパッケージがアップデート可能です。
0 個のアップデートはセキュリティアップデートです。

Last login: Tue Apr 23 12:37:57 2019 from 192.168.xxx.xxx
s19@ubuntu1804:~$ 
```


## 4. Linuxコマンドで遊んでみよう

### 4-1. slコマンドを実行してみる。

ログインしたら、とりあえず**slコマンド**を実行してみましょう。
何かが画面上を走ります(笑)

```
s19@ubuntu1804:~$ sl
```

### 4-2. ディレクトリ（フォルダ）の中身を見てみる

ディレクトリ（フォルダ）の内容を表示するには、**lsコマンド**を使用します。
まだ何もファイルは作成していないので、何も表示されずに次のプロンプトが表示されます。

```
s19@ubuntu1804:~$ ls
s19@ubuntu1804:~$
```

**lsコマンド**の後ろに**"-al"**を付けて実行すると、「.」で始まるファイル名およびディレクトリ名を含めて出力し、さらに**アクセス権**や**所有者名、サイズ、修正時刻**などの**詳細情報**も表示されます。

```
s19@ubuntu1804:~$ ls -al
合計 52
drwxr-xr-x  4 s19  students  4096  4月 23 11:12 .
drwxr-xr-x 26 root root      4096  4月 23 07:54 ..
-rw-------  1 s19  students    31  4月 23 10:56 .bash_history
-rw-r--r--  1 s19  students   220  4月 23 07:54 .bash_logout
-rw-r--r--  1 s19  students  3771  4月 23 07:54 .bashrc
drwx------  2 s19  students  4096  4月 23 09:49 .cache
-rwxr-xr-x  1 s19  students 19331  4月 23 07:54 .fd2rc
drwx------  3 s19  students  4096  4月 23 09:49 .gnupg
-rw-r--r--  1 s19  students   807  4月 23 07:54 .profile
```

### 4-3. ファイルを作ってみる

**catコマンド**に続いて、**> ファイル名** と入力すると、
キーボードから入力した内容をファイルに書き出すことができます。

```
s19@ubuntu1804:~$ cat > test.txt
aaa
bbb
ccc
12345
    <--- 入力が終わったら、CTRL + D と入力する
```

**catコマンド**では、ファイルの内容を表示することもできます。

```
s19@ubuntu1804:~$ cat test.txt
aaa
bbb
ccc
12345
```

ファイルの内容が表示されたら、2-2.で開いたファイルサーバのフォルダを開いてみましょう。
さきほど作成した**test.txt**が表示されているはずです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/f6daba42-d181-8e5b-36e6-c33e2fdc5149.png" width=70%>

**test.txt**をダブルクリックして、テキストエディタで開いてみましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/06b337d7-bf7a-55b8-3e2f-8fdef541c43c.png" width=70%>


### 4-4. ファイルを消してみる

**rmコマンド**を使うと、ファイルを削除することができます。

**rm test.txt**と入力してみてください。

```
s19@ubuntu1804:~$ rm test.txt
```

続いて、**ls -al**コマンドでファイルの一覧を表示してみます。
**test.txt**が表示されなくなっているはずです。

```
s19@ubuntu1804:~$ ls -al
合計 52
drwxr-xr-x  4 s19  students  4096  4月 23 11:25 .
drwxr-xr-x 26 root root      4096  4月 23 07:54 ..
-rw-------  1 s19  students    31  4月 23 10:56 .bash_history
-rw-r--r--  1 s19  students   220  4月 23 07:54 .bash_logout
-rw-r--r--  1 s19  students  3771  4月 23 07:54 .bashrc
drwx------  2 s19  students  4096  4月 23 09:49 .cache
-rwxr-xr-x  1 s19  students 19331  4月 23 07:54 .fd2rc
drwx------  3 s19  students  4096  4月 23 09:49 .gnupg
-rw-r--r--  1 s19  students   807  4月 23 07:54 .profile
```

ファイルの内容が表示されたら、2-2.で開いたファイルサーバのフォルダを開いてみましょう。
ファイルサーバ上のフォルダからも、**test.txt**が消えているはずです。


### 4-5. 他のユーザーにメッセージを送ってみる

**whoコマンド**を実行すると、同一のサーバにログインしているユーザーの一覧を確認することができます。

**ログイン名（ユーザー名）**のほかに、**端末番号、ログイン時刻、ログイン元のIPアドレス**なども表示されます。

```
s19@ubuntu1804:~$ who
s19      pts/0        2019-04-23 11:10 (192.168.xxx.xxx)
s00      pts/1        2019-04-23 11:34 (192.168.xxx.xxx)
s01      pts/2        2019-04-23 11:35 (192.168.xxx.xxx)
```

**mesgコマンド**で、現在のメッセージの受付可否を確認します。

```
s19@ubuntu1804:~$ mesg
有効になっています
```

もし、無効と表示された場合は、

```
s19@ubuntu1804:~$ mesg y
```

と入力して、有効にしておきます。

それでは、ほかのユーザーにメッセージを送ってみましょう。
メッセージを送信するには、**writeコマンド**を実行します。

```
s19@ubuntu1804:~$ write s01     <-- writeに続いて、送信相手のログイン名を入力する
Hello!!
I am s19.
todoki masita ka??
    <--- 入力終了（CTRL + D と入力する）
```

送信先の**s01**さんの画面では、以下のようなメッセージが表示されます。

```
Message from s19@ubuntu1804 on pts/0 at 11:46 ...
Hello!!
I am s19.
todoki masita ka??
EOF
```

### 4-6. 他のユーザーとチャットしてみる

**writeコマンド**では、自分から相手にしかメッセージを送れませんでしたが、
**talkコマンド**を使用すると、お互いに同時にメッセージを送受信することができます。

２人ずつペアを組み、**talkコマンド**に続いて相手のログイン名を指定して実行してみてください。


* Aさんの入力例

```
s01@ubuntu1804:~$ talk s19
```

* Bさんの入力例

```
s19@ubuntu1804:~$ talk s01
```

**talkコマンド**の**Connection**が確立されると**[Connection established]**という文字列が画面上に表示されます。

画面が上下に２分割され、相手からのメッセージを表示しながら、相手に送るメッセージを入力・送信することができます。

**talkコマンド**を終了する場合は、CTRL + C と入力してください。


## 5. 後片付け

特にありませんが、必要に応じて **/etc/hosts** を元に戻しておきましょう。
（/etc/hosts が /etc/hosts.org の内容で上書きされます。）

間違って上書きしてしまったり、削除してしまわないように注意してください。
作業が不安であれば、そのままにしておいてもかまいません。

```
yuza-no-MacBook:~ yuza$ su -
Password:
yuza-no-MacBook:~ root# cp -p /etc/hosts.org /etc/hosts
yuza-no-MacBook:~ root# exit
yuza-no-MacBook:~ yuza$ exit
```