class: compact,img-right # <small>第03回おしながき</small> <div class=footnote> <small><small> </small></small> </div> ![](../../images/cist-schedule-202501.png) <small> 1. おしらせ(or アンケート) - 補講日いつがいいですか? - 1/15(水)4時限目でよい? <br> (1/17は授業ありません、入試前だから?) <br> たぶん14回目は最終課題モクモク会です - vocareum と aws consoleは起動しておいてください - ポータルのパスワードはqQaK 1. EL (確認テスト) 1. 今回のハイライト 1. 演習 "ユーザまわり" - 課題はポータルのレポート機能で提出 - 今回、課題の動作確認はありません </small> --- class: compact # <small>ハイライトの前に補足</small> ``` $ sudo python3 www.py ``` - 春学期に散々叩いたコレ、いったい何をやっているのか? - 秋学期の授業では「コレを、きちんと説明できること」を目指しています --- class: compact # <small>第03回のハイライト</small> <div class=footnote> <small><small> </small></small> </div> <small> - タイムシェアリングシステム(TSS)はマルチユーザ - ユーザの区別 - ユーザ登録時に各ユーザに数字(uid = user id)を割り当てています、名前の文字列は自由 - 歴史的に管理者ユーザは、uid = 0, ユーザ名root - ユーザに、できること、できないこと - 管理者ユーザrootは何でもできます - 一般ユーザadminも日常こまることはないはずです。 OSの管理やデバイスの設定などの危険なことは出来ません(させません) - ユーザrootは極力つかわない、必要な場面で一時的に使う(最小権限の原則); suやsudoコマンド </small> --- class: compact # <small>演習</small> <div class=footnote> <small><small> </small></small> </div> - おおむね一緒に操作をしていきます - vocareum と aws console 両方の画面を出しておいてください - 課題: ワークシートを出してください - 答え合わせは来週します --- class: compact # <small>5W1HはUnixでも大事</small> <div class=footnote> <small><small> (脚注) 例題は一緒に手を動かして行きます </small></small> </div> - システム構築でも、 <B>つねに</B>、 <B>いま自分が誰(役)で、どこで、何をしているのか?を把握する</B> ことは重要です - よくつかうUnixコマンド - id ... いま、誰の役? (id は、そのまま id = identifictaionの頭文字?) - pwd ... いま、どこにいるのか?を確認する (print working directory) --- class: compact # <small>[演習の準備] AWS EC2にログインしてください?</small> <div class=footnote> <small><small> (脚注) 演習の前に春学期の種明かしと正しいオペレーションについて話します </small></small> </div> <small> - 初心者向けの支援システムColitasでは何もしなくてもEC2で操作させていますが、これは本来よくありません。 秋学期では、本来のサーバ操作にも慣れていくことにします。 - 秋学期末の自由課題(システム構築)は、本来のやり方でも、Colitas支援のもと実行でも、 好きな方を使ってください - 本来(普通の作業では)、 「AWS EC2にログインしてください」とは「sshコマンドでAWS EC2にリモートログインしてください」という意味です </small> --- class: compact # <small>例題: vocareum から EC2 に ssh ログインする</small> <div class=footnote> <small><small> </small></small> </div> <small> 1. いったん vocareum の画面を出してください 1. AWS EC2のPublic IPをクリップボードにコピーしてください 1. ターミナルで次のコマンドを叩いてください - IPアドレスは各自ことなります - IPアドレス以外は全員おなじ文字列です ``` $ ssh -i .ssh/labsuser.pem admin@10.20.30.40 ``` - 10.20.30.40の部分は上でコピーしたPublic IPです。各自ことなります - `$`の部分は、もっと長い変な文字が書いてありますが、上の例では省略しています </small> --- class: compact # <small>[解説] sshコマンド</small> <div class=footnote> <small><small> </small></small> </div> <small> ``` $ ssh -i .ssh/labsuser.pem admin@10.20.30.40 ``` - sshコマンドの引数 = ログインしたい目的のサーバ。 フォーマットは「ユーザ名@サーバのIPアドレス」 - だれ = ユーザ名 = admin (AWS EC2 debianの場合デフォルトが admin なので本科目ではadmin) - どこ = サーバのIPアドレス = EC2のPublic IP - sshコマンドのオプション - 公開鍵暗号の認証情報を`-i ファイル名`で指定します。 ここで`-i`はidentityの頭文字です。 たいていオプション名は機能や役割を意味する英語の頭文字から選んでいます。 `-h`がhelpを意味するのも同様です。 代表的なオプションは、ほぼ、このパターンなので、よく使う英語は覚えておくべきです - <B>パスワード認証は危ないので、サーバでは利用できません</B> (ふつう、サーバ構築時にパスワード認証など出来ないように作成します)。 よってシステム構築・利用の際、公開鍵暗号の理解は必須です - <B>ファイル名の .ssh/labsuser.pem はAWS Academy特有のファイル名</B>です。 - ここは案件ごとに違うはずです。各案件の指示書に従ってください </small> --- class: compact # <small>[解説] sshコマンド (初回だけの例外)</small> <div class=footnote> <small><small> </small></small> </div> <small> - 初回だけは、このペッセージが出るので yes を入力してください。 これは、なにをやっているのか?を調べるのは自由課題(任意)としましょう ``` eee_W_3695760@runweb140968:~$ ssh -i .ssh/labsuser.pem admin@54.205.249.209The authenticity of host '54.205.249.209 (54.205.249.209)' can't be established.ECDSA key fingerprint is SHA256:gfVHVWHNgTM3ajJ1+tlsiwjN053PPacmR9RyZV3O5KU. Are you sure you want to continue connecting (yes/no)? ``` - yes を入力後 ```` Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '54.205.249.209' (ECDSA) to the list of known hosts. Linux ip-172-31-37-84 6.1.0-26-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 The programs included with the Debian GNU/Linux system are free software; ... 省略 ... Last login: Fri Oct 11 05:15:24 2024 from 44.243.172.246 Script started, output log file is '/usr/local/src/himo/typescript_476'. ``` </small> --- class: compact # <small>例題: 目的のEC2にログインできたのか?</small> <div class=footnote> <small><small> (脚注1) このホスト名はEC2のプライベートIPアドレスを表示しています。 ただ、このIPアドレスはランダムに割り振られているし、 変わっていくことも多いので、この数字を覚えるのは無意味です <br> (脚注2) ホスト名にはwww.fml.orgといった識別しやすいドメイン名をつけるのが普通です <br> (脚注3) その他の確認方法は第5回にでもやりましょう </small></small> </div> <small> - 自分が今<B>インターネット上の「どこ」にいるのか?</B>を確認するには? - sshログインした先が正しい目的地か?を調べる方法その1はサーバの名前を確認することです - hostname ... サーバの名前(ホスト名)を教えてくれるコマンド - ただ、AWS EC2の場合、ホスト名では自信が持てません。 今日のところは、ターミナルの左端のプロンプトが、 へんてこな`eee_W_3695760@runweb140968:~$`のような文字列から `admin(Public IPアドレス)`に変更されていればOKとしましょう ``` [参考例] EC2でhostnameコマンドを実行したところ admin(54.205.249.209):~ $ hostname ip-172-31-37-84 ``` </small> --- class: compact # <small>例題: いま自分は誰(役)なのか?</small> <div class=footnote> <small><small> 例題は一緒に手を動かして行きます </small></small> </div> <small> - いま、みなさんはAWS EC2にログインしていますね? - コマンド - id ... ユーザ情報を表示するコマンド ``` // デフォルトでは、たくさん表示されますが $ id // uidのみを表示したいなら -u オプションをつけます $ id -u // では、これを実行すると、どうなるでしょう? $ sudo id -u ``` </small> --- class: compact # <small>解説: いま自分は誰(役)なのか?</small> <div class=footnote> <small><small> </small></small> </div> <small> - id コマンドを実行しているユーザの uid が表示されています - sudo を前(左側)につけて id コマンドを実行すると、 <br> uid = 0 つまりユーザ root として実行していることが分かります ``` $ id -u 1000 $ sudo id -u 0 ``` </small> --- class: compact # <small>例題: では、これをやってみましょう</small> <div class=footnote> <small><small> (脚注1) ちなみに、これがユーザの設定情報が書かれている設定ファイルです。 <br> (脚注2) このファイルを直接編集してはいけません!必ずuseradd/usermod/userdelなどの管理コマンドを使ってください </small></small> </div> <small> - 実行する前に、どういう結果になるでしょうか?を5秒間かんがえてからやってみくてださい ``` $ vi /etc/passwd $ vi /etc/shadow ``` </small> --- class: compact # <small>例題: では、こうすると?</small> <div class=footnote> <small><small> (脚注) このファイルを直接編集してはいけません! 何もせず、すぐに終了してください </small></small> </small></small> </div> <small> ``` $ sudo vi /etc/shadow ``` </small> --- class: compact # <small>課題</small> <div class=footnote> <small><small> (脚注) よくわからなくても、とりあえず考えて見てください。 来週、答え合わせをします。 基本、毎週の課題は、参加することに意義があります (課題提出 = 出席あつかいです、ポータルの出席は成績を付ける上では重要ではありません) </small></small> </div> - 必須: なんども春学期に実行した`sudo python3 /home/admin/www.py`について、 - 何のコマンドを、だれが、引数とオプションを何にして実行してるのか?を、きちんと説明してください - 任意(自由課題、すこしは加点していく) - ssh コマンドで初回接続時にだけ発生する問い合わせは何をやっているのか?を説明してください (該当スライドページを参照)