今流行のクラウドとサーバーについて理解する
Twitterを見てたらトレンドにクラウドとあり、調べて見たら「サーバーは増やすんんじゃなくて、時代はもうクラウドなんですよ」という発言で炎上しているのだそう。
自分もうっすらとしか理解できていないので両者について調べてみた。
サーバーってなんだっけ
クライアント側に色々な情報を渡したりサービスを提供するものでサーバーにユーザーの情報を保存したりするよねって感じ
サーバーについてちゃんと調べてみた
サーバーは保存や共有などに使われる「ファイルの保管」「情報処理」「コンテンツとしての提供」という役割がある。またサーバーはサービスを提供するコンピュータのことを指しインターネットを介してユーザーとつながっている。
クラウドとは
クラウドはデータやソフトウェアなどのサービスをネットを介して誰も参照、使える様にしたもの。
これだとよくわからないのでクラウドサービスを用いた場合とそうでない場合で比較してみる。
まずデータだとクラウドを用いない場合そのパソコンやスマホに保存していた。これを別の端末で見る場合は外部ストレージなどに保存してデータを読み込むしかなかった。
しかしクラウドサービスを使えばネット上にデータを保存することができログインさえできればどの端末からも見ることができる。
またソフトウェアもアプリケージョンを自分の端末にインストールしないと利用できなかったがクラウドを用いるとネット上でそのソフトウェアのサービスが使える様になりわざわざ自分の端末にインストールしなくてもいいと言うこと。
sudu su -って何?
今回はLinuxでrootユーザーになる際に使う
sudo su -
について調べてみた。と言うのもこのコマンド自体とっても重要なコマンドなのになぜこのような振る舞い(rootに切替)をするのか知っておきたいからだ。
そもそもsudoコマンドは主にスーパーユーザーの権限でのみ実行可能な命令をsudo経由で実行することが可能。
suコマンドは主に他のユーザーに切り替わる際に使うコマンドらしくこれは複数ユーザーを持っている人じゃないとあまり実行しないコマンドだ。 またユーザーを指定しないでコマンドを打つとrootユーザーに切り替わる。 (実際に私もsuコマンド単体で使ったことがなくてっきりsudoコマンドのオプションだと勘違いしていた、、、)
ここで両者の違いはsudoコマンドは元のユーザーのパスワードが聞かれるのに対して、suコマンドはrootユーザーのパスワードが聞かれるってこと。
つまりsudo su -はrootユーザーのパスワードなしにrootユーザーに切り替わる事のできるようにしている。
ここまで触れてこなかったがsudu su -の-はどういう役割かというと
このようになっている。 ユーザーを切り替えた際にそのユーザーのホームディレクトリに移動するコマンドらしい。
サーバーに新ユーザーを作ってsshできるようにする。
早速始めていこう。
今回使ったサーバーはAWSEC2です。
使うosはcentos.
まず前提として自分のパソコンからサーバーにログインできることが必要ですね
~~新ユーザー作成
ではサーバーにログインしたら新ユーザーを作りましょう。
そのためにはroot userにならないと行けない。
sudo su -
このコマンドでrootになったら
useradd [オプション] ユーザー名
また今回はこのユーザーにsudo権限を付けようと思ってるのでパスワードもつける。
passwd [オプション] ユーザー名
ここで単純なパスワードを設定するとBAD PASSWORDと出るがEnterを押すと設定できてしまうので気を付ける。
作成したユーザーは/etc/passwdに追加されている。
~~権限を与える
次に作ってあげたユーザーにsudo権限を付与する。
作ったユーザーにsudo権限を持たせるには/etc/sudoersを開き編集したらいい。
/etc/sudoersはsudo権限を設定する重要なファイルである。そのため専用のコマンドが用意されている。
そこで使うコマンドが[visudo]である。
このコマンドでファイルを書き換えたら自分のユーザーにsudo権限が付与できる。
だが、一般的にはユーザーにsudo権限を持たせたい場合[wheel]というグループに入れてあげれば良い。
wheelグループはデフォルトでsudo権限が与えられているためわざわざ/etc/sudoersを編集しなくてもいいということである。(編集して色々バグとか起きたら直すの大変だしね)
usermod -aG wheel ユーザー名
これでwheelグループに追加され無事sudo権限を手に入れた。
~~秘密鍵作成
新ユーザーのホームディレクトリで.sshディレクトリを作成しよう。
その後、一度サーバーからローカルに戻り秘密鍵を作る。
~/.sshディレクトリに入って
ssh-keygen -f [鍵の名前]
- fは秘密鍵に名前をつけるオプション。
これで公開鍵(.pub)と秘密鍵が生成された。
早速作ったユーザーに公開鍵を送りたいところだが今その設定をしているため一度元々存在するユーザー(元々sshログインできるユーザー)に送ってから新ユーザーに渡す。
scp -i [既存ユーザーの鍵] ローカルディレクトリパス ユーザーホスト名@ipアドレス:サーバーディレクトリパス
これで公開鍵はサーバーに渡った。あとはこれを新ユーザーの.sshディレクトリに入れてあげる。
公開鍵のあるディレクトリで
mv 公開鍵名 /home/ユーザー名/.ssh/authorized_keys
<追記>
ここでおそらくauthorized_keysの所有者とグループは今sshログインしたユーザーのものになってるから自分のユーザーに変更しておこう。
これで公開鍵の設置完了!
あとは.sshとauthorized_keysの権限を確認しよう。
これが間違えてたらPermission deniedと怒られてしまう。
- .sshは700
- authorized_keysは600
最後に
ssh ipアドレス -l ユーザーホスト名 -i ~/.ssh/秘密鍵名
これでログインできたら終了!!!お疲れ様でした
Docker使ってみた
学校の授業でdockerを使う機械があり、そこで苦戦したのでメモとして残していこうと思う。
dockerインストール
macosなので以下のurlからインストールした。
docs.docker.com
次に無事dockerがインストールできたのでイメージを入手しようとしたら
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
とのこと。
ネットで調べたデーモン起動のコマンドも弾かれ再インストールかと思ったが原因はインストールしたdockerを起動していなかっただけだった。
改めてイメージ作成、今回はubuntuを選択。以下のサイトを参考にubuntuのイメージ、コンテナを作成した。
weblabo.oscasierra.net
というかここまでdockerをなにに使うか説明してなかった。
授業でCTF問題を扱っているのだがそこでmacでは実行できないバイナリファイルを解析する為linuxの環境が必要だった。
なのでコンテナを立ち上げローカルからubuntuコンテナにファイルを送らなければいけない。
dockerへのファイル送信コマンドは次のようになってる。
$ docker cp 【ホスト OS のファイル】 【コンテナ ID】:【転送先のフルパス】
これでようやくこのバイナリファイルを実行できる。
./ファイル名
これでファイルを実行したら答えが出た。
ブログを初めてみようと思う。
ブログを始める経緯としては今までやったことを忘れないように備忘録として書こうというのと、人に見られることを意識して書くことで文章作成能力を高めたいと思ったから。あとは友達がやってて興味を持ったからですね。
投稿する内容としては情報工学系の分野や趣味のゲームを投稿していくと思います。
継続することを意識して趣味や勉強したことを更新して行こうと思います。なのできちんとした記事は少なくなると思いますがよろしくお願いします!