HackerzLab.博多 Vol.21 子供向けLinuxハンズオン(macOS版)
2019/05/05(日) HackerzLab.博多 Vol.21 子供向けLinuxハンズオンの資料(macOS版)です。
1. 事前準備
1-1. ターミナル画面を開く
メニューバーから**[移動]** ==> **[ユーティリティ]**を開き、
**[ターミナル]**をクリックします。

今回のハンズオンでは、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 となっています。)

続いて、ユーザー名とパスワードを入力します。
ユーザーの種類の指定を"ゲスト"から"登録ユーザ"に変更し、
各自に割り当てられたユーザー名とパスワードを入力します。
画面ではs19になっていますが、そのまま真似しないこと!!
s??は、各自に割り当てられた番号を入力してください。
|項目|入力値|
|---|---|---|
|名前|s??|
|パスワード|s??|

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

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*は1つしか表示されないはず)
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アドレスに置き換えて入力してください。。
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が表示されているはずです。

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

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コマンドを使用すると、お互いに同時にメッセージを送受信することができます。
2人ずつペアを組み、talkコマンドに続いて相手のログイン名を指定して実行してみてください。
- Aさんの入力例
s01@ubuntu1804:~$ talk s19
- Bさんの入力例
s19@ubuntu1804:~$ talk s01
talkコマンドのConnectionが確立されると**[Connection established]**という文字列が画面上に表示されます。
画面が上下に2分割され、相手からのメッセージを表示しながら、相手に送るメッセージを入力・送信することができます。
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