とりあえずの記録

はじめは同学科の人向けのナレッジまとめでした

はじめてsudoする人へ(仮)

(注) 本ページの内容は,私が学内の某組織向けに執筆した内容を転記したものです.
一部,学内者にしか通じない表現があったり,伏せ字にしている箇所があったりします.ご了承ください.

はじめに

このページは,初めてLinuxサーバーの管理側に立つ人に向けて作成したものです.
授業で習うような ls / cat / vim あたりに関する説明は省きつつ,初めて扱うであろう箇所については極力丁寧な解説を心がけています.

分からないところがあれば,まずはインターネットで調べてみてください.検索する力はとても重要です.調べてもよくわからない,調べ方がわからないときには,遠慮なく先輩に聞いてみてください.きっと優しく教えてくれるはずです.(だって先輩だって数年前まで触ったことなかったんだもの)

そして,後輩のために残しておいたほうが良さそうな情報があれば,ぜひ追記/更新をお願いします.仕様変更や運用方法の変更は頻繁に起こります.遠慮なく書き換えちゃってくださいね!

それから,

この文のようにインデントされている部分は補足説明です.簡潔な表現にするために省かれた部分であったり,プラスアルファの要素が含まれています.気になったら読んでみてください.初めてでよくわかんないよ!!という方は読み飛ばしてもらって全く問題のない部分です.

このページを読んでくださっている方が,Linuxをツールとして使いこなせるエンジニアになることを願っています.

それではやってみよう!

演習用の環境をつくろう

いきなり本番環境(実際にサービスを提供しているサーバー)でいろいろ触ってしまうと,取り返しのつかないことに繋がるかもしれません.
そのため,いくらでも自由に吹っ飛ばせる演習用の環境を構築してみましょう.

以下のような方法があります.

  1. 専用のPCを確保して,LinuxOSをインストールする
  2. 手元のPCの中に,仮想的にLinuxOSをインストールする
  3. AWSGCPといったクラウドサービスを使用して,インターネット越しに仮想的にLinuxOSをインストールする

1や2は,手元の環境が使用できることから高性能な環境が構築しやすいです.
しかし,いざ実際に吹っ飛ばしてしまって1からやり直したいとき,クラウドサービスであれば使用できる便利な機能が使えず毎回時間を食われます.

また,サーバーとして動作させてみたいとき,1や2だとサーバー本体だけでなく,自宅のネットワーク機器(ルーターなど)の設定を変更する必要があります.
このとき,設定が不適切であったり脆弱性を外部から突かれたりした時に自宅のネットワークに繋がっている他の機器にまで影響を及ぼす可能性があったり,そもそもプロバイダの方針で運用が難しかったりすることがあります.

グローバルIPアドレスが頻繁に変わり固定できない,グローバルIPアドレスを近隣と共有していてそもそもポート開放ができない,家庭の方針でネットワーク機器の設定を触らせてくれないなど

というわけで,今回は 3. の方法で構築してみることにします.
方法は自分で調べてみましょう.参考ページのURLを1つ置いておきます.

qiita.com
好き好みですが,OSには Ubuntu 20.04LTS を使ってみることにしましょう.

サーバーOSとして,Ubuntuは世界的シェアNo.1のOSです.
しかし日本では,これまでCentOSというOSのシェアが高い状況でした.理由として無償で10年単位でサポートされており予算面で運用しやすいということが考えられます.これからもその状況が続くかと思いきや,2020年に急に長期サポートを取り止めると発表されました.
結果として,無償で5年単位でサポートされるUbuntuのシェアは日本においても今後上昇するのではないかと推測します.ただ,しっかりと予算を確保できるような大企業では,有償(数十万〜数百万/年)で長期サポートを得られるRHEL(レル,RedHat Enterprise LinuxCentOSととても似ている)を使うようになるのかもしれません.

1つ注意として,本来は有償のものを,スペックを「無料枠」に収めることで無料で使用することができるという状況です.
設定を誤ると数円〜数千万円の請求が来ますので十分注意する必要があります.
(頻繁に仕様や方針を変えてきます.よく分からない設定項目があれば,ぜひ徹底的に調べてみましょう.)

手元のPCからSSH接続ができるようなるところまで,やってみましょう.
このとき,ブラウザ上ではなくTeraTermやRlogin,Termiusやターミナルなどから「公開鍵暗号方式」で接続できるとなおよいですね.

sudoとは

通常,システム的に一般ユーザーから見られたり触られたりするとまずい部分は管理者(root)からしか触れることができないようにされています(します).

そのため,管理者は重要な操作を実行するときには
 sudo su
と実行することでしばらくrootユーザーに成り代わる(exitで元のユーザに戻れます),
または
 sudo (コマンド)
とすることでそのコマンドについてだけroot権限で実行する必要があります.

以降,
 Permission denied.
と表示されたときには頭に sudo をつけて実行してみてくださいね.

パッケージマネージャーを使ってみよう

スマートフォンでアプリをインストールしたいときにAppStoreやGooglePlayを使うのと同じように,Linuxにはパッケージマネージャーという仕組みがあります.(厳密にはちょっと違いますが今はそういうものという認識で大丈夫です)

今回GCPでセットアップしてもらったUbuntuでは,apt という種類のパッケージマネージャーを使います.

CentOS8/RHEL8ではdnf,それ以前のCentOS/RHELではyumを使います.
ほか,snapdだとかdpkgだとか,類するものもありますが違いが気になる人は調べてみてください.
もちろん,こういったものを使わずに,手動でソースコードをDLしてビルド(コンパイル+α)して使う方法もあります.
ただ,依存関係の管理やアップデートが面倒なので基本的にはパッケージマネージャーを使いますね.

以降,ソフトウェアをパッケージと呼びますね.
とりあえず,nyancatという最高に癒やされるスクリーンセーバーをインストールしたいときの方法をたどってみましょう.(一緒にやってみよう)
aptをさわるときは,ほとんどの場合で管理者権限が必要です.上の節を参考に管理者権限で実行してくださいね.

まずは,パッケージのリスト(一覧)をアップデート(更新)します.
パッケージをインストールするときには,忘れずに行います.
 apt update

次に,実際にパッケージをインストールしてみます.

......何のパッケージをインストールしたかったのか忘れてしまいました.ただし,nyanから始まっていたことは覚えています.
そんなときは,
 apt search nyan
で検索してみます!

root@whale:~# apt search nyan
Sorting... Done
Full Text Search... Done
nyancat/focal 1.5.1-1+build1 amd64
 Animated terminal Nyancat
nyancat-server/focal 1.5.1-1+build1 all
 Animated terminal Nyancat server configurations
plasma-wallpapers-addons/focal 4:5.18.4.1-0ubuntu2 amd64
 additional wallpaper plugins for Plasma 5

ありました,nyancatです!

でも名前が似ているnyancat-serverというものもありますね.今回インストールするべきはどちらでしょうか...
パッケージ名の下に書いてある1行解説には気づかなかったことにして,今回は以下の方法で調べてみることにします.
 apt info nyancat
出てきましたか?それでは,同じようにしてもう1つの方も調べてみます.
 apt info nyancat-server
いろいろ出てきましたね.
今後パッケージをインストールするときは,求めているものは本当にそれなのか,こうやって確認できるとよいですね.
見てもらって分かったかと思いますが,まぁ英語で書かれていることが多いです.といっても技術系の用語がほとんどですので,さっさと慣れちゃいましょう.嫌でも慣れざるを得ない(というか自然と慣れる)ので,ぜひ早いうちにインターネットも活用しながら自分の力にしていきましょう.

では,本命のnyancatをインストールしてみることにします.
 apt install nyancat
もし,
 E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
 E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
と怒られたら,それは管理者権限を持たない状態で実行している状況です.1つ上の節をもう一度読んでみてください.
ズラズラっとテキストが流れて,コマンドが打てる状態に戻ったとしたら,それはおそらく成功です.
 nyancat
とだけ打って実行してみて,成功の余韻に浸ってください.飽きたらCtrl+Cで抜けることができます.

かんたんにまとめると,
 apt update
 apt install nyancat
です.わかりやすいですね.

それでは,各パッケージのバージョンをアップデートしたいときはどうしましょう.
実は,一斉に更新をチェックしてアップデートすることができるコマンドがあります.
 apt update
で一覧を更新した上で,
 apt upgrade
で実際に更新します.update(アップデート)とupgrade(アップグレード),少し似ているので注意しましょう.

新機能が追加されたとき以外に,脆弱性が見つかったときなどにも新しいバージョンが公開されます.極力常に最新のバージョンを使うようにしましょう.
しかし,最新のバージョンにバグが混入しており/仕様が変更されておりシステムが止まってしまう,データが吹き飛んでしまうこともあります.
ですので,本番環境ではあえてしばらく待ってみて,トラブルが起きたら即復元できる体制を整えた上で実行することも少なくありません.サーバのバックアップ状況や,運用システムの重要度,脆弱性の深刻さなどを考慮した上で,いつ誰がどのように更新するかを決定する必要があります.

ちなみに,アンインストールしたいときは
 apt remove nyancat
です.

諸々まとめると,
 apt update
 apt search
 apt info
 apt install
 apt upgrade
 apt remove
ですね.いずれもとても重要なものですので,怪しいものがあれば振り返って調べてみてください.
これからどんどん使っていきます.

(まだまだ作成を始めたばかりです)

随時,内容の追加/修正などを行います.

おわりに

おつかれさまでした!このページはここでおしまいです.

いかがでしたか?少し難しかった?簡単すぎた?
なにか1つでも得られた知識があったとしたら,このページを作成した人はとても嬉しいです.

さて,これでいよいよサーバー管理者としての第1歩を踏み出す準備ができている...! と言いたいところですが,実はもうちょっとだけ続きます.

私たちがさわることになる○○○○のような公的機関のサーバーは,毎日様々な国の様々な人/組織から攻撃を受けています.
ことと次第によっては数十億円単位の損害賠償を支払わねばならない事態になることだって十分考えられるほど,恐ろしい世界です.

しかし,せっかく目の前にあるのに恐ろしいからと遠ざかってゆくのは,それはそれで本当にもったいないことです.
そこで私たちがやるべきことは, "遊べる環境を何度もぶっ壊しながら遊び方を理解する" ことだと思っています.

(注:この "遊べる環境" というのは本校の本番環境ではないということにだけ,注意してください)

遊べる環境で何度も失敗して,何度もOSをインストールし直して,遊んでみてください.次第に知識や感覚が育ってゆくのではないかと思います.

失敗して自分だけではどうしようもなくなってしまったときには,近くの人を頼ってみてください.ここは高専です.変な人が身の回りにたくさんいることと思います.
友人や先輩,先生方は,きっと解決のための手助けをしてくれるはずです.

最後に1つだけお願いです.
 本番環境でsudoするときは,原則事前に連絡しましょう.
 ここでいう #○○○○ あたりを使ってもらえたらと思います.

  • こういうことがしたくて
  • この情報源によるとこういう手順を踏めばできそうで
  • こんな流れでやってみたいと思っている

      くらいの情報があると良いですね!

参考になるサイト,書籍情報

を,別のページにまとめています.

tamasan238.hatenablog.com

ぜひ,たくさんの情報をインプットしながら,実際に試して自分のものにしていきましょう!