【第9回】目指せLinuxマスター(1) ~sudoersの管理~
皆さま,こんにちは. 迷子のエンリュです.
今回は「目指せLinuxマスター」ということで,sudoersの管理をやっていきたいと思います.なんだかいきなり難しそうなことになってきました...
やることは簡単です.今日の作業をざっくりまとめると,次のようになります.
- wheelまたはsudoグループへのユーザーの追加
- sudo権限を持たないユーザーの追加(比較用)
- sudoers設定ファイルを編集
今日の作業を終えると,今までsudo出来なかったユーザーがsudoで様々なシステムコマンドを使うことができます.その分rootユーザーにログインして作業することを減らせます.
rootユーザーでうっかりシステムの重要な設定ファイルを消してしまった,なんてことはもう起こりません.sudoで権限を制御してあげるというのは,とても大切なことなのです.
それでは早速始めていきましょう.よろしくお願いいたします.
ユーザーの追加とグループの設定
まず,ユーザーとグループを設定していきます.今回sudoコマンドを使えるようになってほしいユーザーは「enryu」です.皆さんは普段使ってるメインのユーザーに置き換えて考えてください.この「enryu」を「wheel」グループに入れることで,sudoを使えるようにしていきます.
それ以外のユーザーは,wheelメンバーではない一般ユーザとします.
また,もう一つ「users」というグループに物理コンソールでログインしたときだけシャットダウンや再起動を行える権限を与えていきましょう.一般ユーザを,usersメンバーと非usersメンバーとに分けるのです.
まとめると,今回の設定の検証には3つのユーザーを使っていきます.設定内容は次の表のようになります.
番号 | 名前 | フルネーム | 所属グループ |
---|---|---|---|
1 | enryu | Lost Enryu | enryu, wheel, users |
2 | bob | Bob Beck | bob, users |
3 | alice | Alice Atanasoff | alice, guest-users |
では早速この通りに設定していきましょう.今回はCUIを使ってユーザーを追加していきます.わからないことがあったらこちらを参考にしてください.
Qiita:Linuxコマンド入門(3) ~ユーザー・グループの管理~
$ su - # useradd bob -c "Bob Beck" # useradd alice -c "Alice Atanasoff" # passwd bob # passwd alice # groupadd guest-users # usermod enryu -aG wheel,users # usermod bob -aG users # usermod alice -aG guest-users
設定は次のように簡単に確認できます.
$ groups enryu bob alice
正しく設定できましたね.
sudoers設定ファイルの編集
いよいよ本日の要,sudoers設定ファイルを編集していきます.設定ファイルは/etc/sudoers
です.ターミナルを開いて確認してみましょう.
$ ls -l /etc/sudoers -r--r-----. 1 root root …/etc/sudoers
以前のアクセス権限の話は覚えているでしょうか(第6回)
「owner」と「group」は「root」,そのアクセス権限はどちらも「r--」.root権限ですら読み込み許可だけで書き込みができません.
/etc/sudoers
は,非常に特殊な設定ファイルです.root権限で無理やり編集することはできなくはないのですが,文法などにミスがあると致命的なエラーにつながってしまいます.そこで,専用のコマンド「visudo」を使います.
visudoは/etc/sudoers
に書き込みを行えるだけではなく,編集した内容が文法的に正しいかどうかも判断してくれます.
例えば間違った文字が打ち込まれた場合,このようになります.
visudo: >>> /etc/sudoers: syntax error nea line ## <<< What now? # ここでEnterを押す Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!) What now?
What now? と聞かれてShift+q
を押さない限り,文法エラーを残してしまうことはありません.安心ですね.
viの使い方
visudoコマンドを使うと,viエディタが立ち上がります.viエディタはコマンドモードと編集モードを切り替えながらCUIでファイル編集を行うエディタで,多くのLinuxマシンにデフォルトでインストールされています.
しかし,一般的なGUIベースのテキストエディタとは操作方法が異なるため,少々慣れが必要です.viの基本的な使い方についてはこちらで説明しています.使いこなせばとても便利なコマンドがたくさんあります.
Qiita: 覚えておきたいviコマンド
最悪覚えていなくてはならないコマンドは次の4つです.
コマンド | 意味 |
---|---|
i | 編集モードに切り替え(文字の挿入) |
Esc | 編集モードからコマンドモードに切り替え |
:q! | 保存しないで終了 |
:wq | 変更を保存して終了 |
編集モードに入ったら,通常通りに編集できます.編集が終わったらEscでコマンドモードに戻り,:wq
(保存して終了)でターミナルに戻りましょう.
visudoで設定変更
では,心の準備はよろしいでしょうか.設定を変更します.なおこの設定はGUIでは行えません.もう,やるしかないのです.
まずはバックアップを取りましょう.Linuxコマンドの「cp」を使ってコピーします.
ターミナルでrootユーザに変更し,以下のようにします.
$ su - # cp /etc/sudoers /etc/sudoers.bak
続いてvisudoを実行します.
# visudo
表示されました.
wheelをsudoersに追加
まずはwheelグループのメンバーをsudoersに追加します.
編集するポイントまで移動しましょう.矢印キーで下に移動してもよいですが,折角のviなので文字列検索コマンドを実行してみましょう.コマンドモードで/wheel
とタイプして,Enter
キーを押しましょう.
色が反転して表示されているマスがカーソルです.見事「wheel」という文字列を探し当てました.それではその下の行の先頭に移動してみましょう.j0
と入力してみてください.
j
が下に一行移動,0
がその行の先頭に移動です.
今カーソルは「#」の上にあるはずです.この「#」はコメントアウト,すなわちその行の無効化を表しています.これを外して行を有効にします.
i
で編集モードにしてから2回Deleteキーを押してもいいですが,ここは2x
と入力しましょう.x
が文字の削除,その前の2
は文字数を表します.これでコメントアウトが外れました.
これで,wheelグループに所属するユーザがsudoを行えるようになりました.
設定ファイルが以下のようになったことを確認してください.
(省略) ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL (省略)
shutdownをusersグループのメンバーに制限
続いて,shutdownを行えるユーザやホストに制限を設けましょう.今度は/shutdown
として「shutdown」を検索します.
(省略) ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now ↑この行を編集します↓ %users localhost=SHUTDOWN (省略)
SHUTDOWNとはコマンドエイリアスのひとつです.コマンドエイリアスというのは,いくつかのコマンドをセットにしてまとめて呼ぶための仮の名前です.これもsudoersの中で定義されている必要があります.
今度は逆向きに検索をかけてみましょう.コマンドモードで?Cmnd_Alias
と打ってみてください.次のような場所まで飛べたでしょうか.もし違う場所にいたら,n
とShift+n
で検索結果を前後に移ることができます.
(省略) ## Drivers # Cmnd_Alias DRIVERS /sbin/modprobe # Defaults specification (省略)
では,Driversの下にShutdownを追加していきましょう.
(省略) ## Drivers # Cmnd_Alias DRIVERS /sbin/modprobe ## Shutdown Cmnd_Alias SHUTDOWN /sbin/shutdown, /sbin/init, /sbin/halt, /sbin/reboot, /sbin/poweroff # Defaults specification (省略)
ここまで書けたらコマンドモードに戻り,:wq
を入力してみましょう.エラーメッセージなしで終了できればOKです.visudoのエラーが出たら,eで編集に戻ってどこか間違えていないか確かめましょう.
再起動して設定のチェック
sudoersの設定が終わったら,再起動して設定を反映させましょう.suコマンドでログインしなおすこともできます.再度ログインしたら,次のコマンドを打ってみてください.
$ sudo -l
末尾に表示されたのがこのアカウントのsudo権限で動かせるコマンドになります.無事enryuはsudoですべてのコマンドをroot権限で実行できるようになりました.他のユーザーについても確認してみましょう.Uオプションでユーザーを指定できます.
$ sudo -l -U bob (省略) User bob may run the following commands on this host: (root) /sbin/shutdown, /sbin/init, /sbin/halt, /sbin/reboot, /sbin/poweroff $ sudo -l -U alice Sorry, user alice may not run sudo on localhost.
bobにはシャットダウンの権限が与えられ,aliceにはsudo権限なしという結果になりました.やったね.
usersでシャットダウン
それでは,シャットダウン権限を与えられたusersメンバー「bob」にシャットダウンしてもらいましょう.
$ sudo su bob # sudoを付けるとpasswordの入力の必要がない $ sudo shutdown -h now
これで今日の作業は完了です.少し長かったですかね.お疲れさまでした.
suって便利なコマンドだなあ
Previous | Top | Next
Prev: 【第8回】CentOSの歩き方 GNOME編(2) ~ユーザー・グループ管理~
Next: 【第10回】目指せLinuxマスター(2) ~権限の制御~
Index
Journey
【第8回】CentOSの歩き方 GNOME編(2) ~ユーザー・グループの管理~
皆さま,こんにちは. 迷子のエンリュです.
前回はsudoersという設定ファイルの管理の前に仮想マシンのバックアップを取っておこうという話でした.
今回はユーザを追加したり,ユーザをグループに入れたり,といったことをできるようにしておきましょう.
sudoの設定を変更したときに,sudo権限を許可したユーザとそれ以外のユーザの挙動を比較出来た方が分かりやすいですからね.というわけで,今回はユーザー・グループの管理を行い,次回から,sudoersの管理,権限の制限の全2回に分けて行っていこうと思います.よろしくお願いいたします.
環境
ユーザーマネージャの起動
まず,ユーザーをsudo権限用のグループに入れます.CentOSなどのRedHat系Linuxではwheel,UbuntuなどのDebian系Linuxではsudoというグループになります.
GNOMEでは,ユーザー・グループの設定はSystem > Administration > Users and Groups
から行います.
この設定にはroot権限が必要なため,パスワード入力ダイアログが出ます.rootのパスワードを入力しましょう.ユーザ―マネージャが起動します.
ユーザを追加
それでは,ユーザーを追加してみましょう.ここではユーザ「hanako」を追加してみます.ユーザマネージャの「Add User」をクリックしましょう.
立ち上がった「Add New User」に以下のように入力していきます.
「OK」を押すと,このように追加されます.
ユーザーの削除
ユーザを消去するときはユーザを選んで「Delete」を押します. 確認のダイアログが出るので,「ホームディレクトリごと消しますか」という旨のチェックボックスにマークが入っていることを確認して「Yes」を押しましょう.とても簡単ですね.
グループの追加
次はグループを作成してみましょう.
「Add Group」を押して,グループ名を入力します.ここでは「labo」としました.
「OK」を押すとグループが追加されます.
グループの削除
グループの削除は,グループを選んで「Delete」ボタンです.
ユーザーをグループに追加
ユーザーをグループに追加する方法は二つあります.ユーザーのプロパティから所属するグループを指定する方法と,グループのプロパティから所属するユーザーを指定する方法です.両方やってみましょう.
ユーザーのプロパティからグループに追加
Usersタブを開きます.追加したいユーザをダブルクリックするか,ユーザを選んで上の「Properties」 をクリックすると,「User Properties」が表示されます.
Groupsタブに現在登録されているグループがすべて表示されています.左のチェックボックスがマークされているものが,現在所属しているグループです.ユーザ「enryu」は現在グループ「enryu」のみに所属していることが分かります.一番下までスクロールすると「wheel」というグループがあるので,チェックボックスにマークしましょう.
「OK」を押せば追加完了です.
グループのプロパティからユーザーを追加
今度はGroupsタブからグループをダブルクリックするか,グループを選んで「Properties」をクリックしてください.
「Group Properties」が開いたら,「Group Users」タブから追加したいユーザーを選び,チェックボックスにマークしていきます.ここでは「enryu」と「hanako」を探して追加します.「OK」ボタンを押すと,「Group Members」の欄に「enryu, hanako」と表示されました.
ここで,再びUsersタブに戻り,どちらかの「User Properties」を開いてGroupsタブを見てみましょう.「labo」グループのチェックが増えているはずです.
グループからユーザーを削除
削除も追加と同じです.プロパティのチェックボックスを外せばユーザーをグループから削除することができます.ユーザー,グループのどちらのプロパティでも構いません.
もちろん,以上の操作はCUIからでも行うことができます.アカウント操作に関するLinuxコマンドはこちらにまとめていますので,練習してみてください.
Qiita: Linuxコマンド入門(3) ~ユーザー・グループの管理~
GUIの設定は簡単ですね
Previous | Top | Next
Prev: 【第7回】VMwareを使いこなせ(1) ~擬似スナップショット~
Next: 【第9回】目指せLinuxマスター(1) ~sudoersの管理~
Index
Journey
【第7回】VMwareを使いこなせ(1) ~擬似スナップショット~
皆さま,こんにちは. 迷子のエンリュです.
今回は,VMwareの仮想マシンのバックアップを撮ったり前の時点に状態を戻したりする方法を実践していきます.仮想マシンの状態を保存したり復元したりする機能はスナップショットと呼ばれます.本来無料版ではスナップショット機能を利用できないVMwareで,まるでスナップショットを撮るような今回の手法を,擬似スナップショットと名付けちゃおうと思います.
それでは早速やっていきましょう.よろしくお願いいたします.
### 仮想マシンのバックアップ
まず行っていくのは仮想マシンの保存,すなわち擬似スナップショットの保存です.もしシステムに復旧不可能な変更を加えてしまっても,保存したマシンの状態から復元することができる,ということです.
その方法はいたってシンプルです.仮想マシンのデータが入っているフォルダを丸ごとコピーしてしまおう!というものです.もちろん,サイズはかなり大きいです.本来のスナップショットは差分を取っていくので,省データな分たくさん保存しておくことができますが,こちらは何とも高燃費です.せいぜい1つ2つどうしても,というものを残せるくらいのものです.それでもバックアップがないよりはましです.また1からインストールするなんて,したくないですからね.
この方法では,無駄なスナップショットは極力減らしていくことが大切になります.仮想マシンに変更を加え,新たなバックアップを作ったら,古いものはどんどん消していってしまいましょう.
CentOS 6.8のコピー
それでは,簡単な初期設定を行った現在の仮想マシンのコピーを作成していきます.仮想マシンを作成したときに入力した"...\CentOS 6.8"フォルダのあるパスを開き,通常のフォルダのようにコピーしてしまいましょう.コピー方法はご自分のホストOSの操作方法で行ってください.コピーしたらフォルダ名をバックアップっぽい名前に変更しましょう.「CentOS 6.8 backup1」や「CentOS 6.8 2016-10-20」など,分かりやすいものなら何でもいいです.
コピーした仮想マシンの名前を変更
コピーした仮想マシンは,そのままではVMwareで扱うことはできません.まずはライブラリに追加することが必要になります.VMware Playerを起動し,ホーム > 仮想マシンを開く
をクリックします.先ほどコピーしたフォルダの中にCentOS 6.8.vmx
と書かれたファイルがあるので,これを選びます.vmxファイルは仮想マシンの設定を記述するファイルです.
開くとVMwareのトップ画面に「CentOS 6.8」がもう一つ追加されます.これではコピー元の仮想マシンと区別がつきません.こちらも名前を変更しましょう.
CentOS 6.8 > 仮想マシンの設定
をクリックします.仮想マシン設定ウィンドウが開いたら,オプションタブをクリック.
まず,ワーキングディレクトリがコピー先のフォルダ「...\CentOS 6.8 2016-10-20」になっていることを確認します.これがコピー元になっていた場合は「キャンセル」を押してもう一つの「CentOS 6.8」の設定を開きなおしましょう.
仮想マシン名を「CentOS 6.8 2016-10-20」に変更して「OK」を押します.これで区別がつかなくなることはありません.
また,仮想マシンの名前は先ほど開いた「vmxファイル」を書き換えることでも変更できます.「CentOS 6.8.vmx」のある場所を開いたら,プログラムを指定してファイルを開きます.開くプログラムはメモ帳などのテキストエディタでいいです.私はサクラエディタを愛用しているので,ここからの画面はサクラエディタのものになります.
名前をGUIで変更してからvmxファイルを見ると,43行目(環境によって違いあり)に「displayName」という変数があります.これがVMwareのトップ画面で表示される仮想マシンの名前です.これを直接編集することでも名前を変更できます.
コピーした仮想マシンを開く
それではコピーした仮想マシンを起動してみましょう.すると最初にメッセージダイアログが出てきます.
ネットワークに接続するときのMACアドレスなどを振りなおすなど,いろいろ設定が必要になるので,コピーした場合はVMwareに必要な変更を行ってもらうことができます.「コピーしました」をクリックしましょう.
あとはいつものように起動して仮想マシンが立ち上がります.今回はこちらのマシンには書き込みを行わないので,このままシャットダウンしましょう.
バックアップマシンの復元
バックアップを復元するときは,今までの操作と逆にバックアップしたものの名前を元に戻していきます.まずVMwareのトップ画面でコピー元の仮想マシンを右クリックします.すると,下の方に「ライブラリから削除」と「ディスクから削除」の二つがあります.「ライブラリから削除」は,トップ画面には表示されなくなりますがデータの入ったフォルダは残るということです.バックアップを復元するときは「ディスクから削除」で完全に消してしまいましょう.
次にバックアップフォルダの名前を元に戻し,その中のvmxファイルをテキストエディタで開いて「displayName」を元に戻します.
これでバックアップの復元は完了です.
もちろんこのバックアップを残しておいて,コピーして復元してもいいです.同様に名前を変更し,起動時に「コピーしました」をクリックしましょう.
仮想マシンへの変更のキャンセル
バックアップマシンをコピーしてバックアップをとるのは,いざというときのための処置でした.今度は,変更をしないことが確定している場合に変更をキャンセルする方法をお教えしましょう.これは,仮想マシンを起動する前にディスクへの書き込みをしない設定を追加してしまう方法です.もちろん,反映したい変更をした場合も保存されないので,変更したい場合はこの設定をキャンセルする必要があります.
仮想マシンの設定ファイル「CentOS 6.8.vmx」をテキストエディタで開きます.「ide0:0.fileName = "CentOS 6.8.vmdk"」または「scsi0:0.fileName = "CentOS 6.8.vmdk"」という記述を探しましょう.数字などは環境によって異なる場合があります.大事なのは"CentOS 6.8.vmdk"の方です.vmdkはVMwareの仮想ディスクファイルです.すなわち,その前についている「ide0:0」「scsi0:0」が仮想マシンでのHDDを表す変数だということです.
次に,ハードディスクの設定を追加していきます.ここでは「scsi0:0」の場合で説明していきます.先ほど見つけた「scsi:0.0」の下に,以下の行を追加しましょう.
scsi0:0.mode = "independent-nonpersistent"
この設定をすると仮想マシンがnon-persistentモードで起動するようになります.仮想マシンの変更はREDOディスクに書き込まれ,VMDKファイルには書き込まれなくなります.REDOディスクは再起動やサスペンドでは残りますが,シャットダウンをすると消去されます.よって,シャットダウンをすると仮想マシンに行った変更がすべてキャンセルされるのです.
例えばアプリケーションの動作確認を行う場合などは,このnon-persistentモードで十分でしょう.また,サーバとして動かすときなどもファイルへの書き込みなどは行いません.non-persistentモードの方が動作が早いらしいので,この設定が推奨されることもあるようです.
VMwareのチューニング7ポイント
non-persistentモード×共有フォルダ
non-persistentモードはファイルへの書き込みができません.よってそのままでは普段から使うことはできません.しかし,VMwareには共有フォルダという機能があります.共有フォルダ設定でゲストOSとホストOSのフォルダを共有させることで,ゲストOSからホストOSのフォルダにアクセスできるようになります.
普段のプログラミングなど,仮想マシンの設定は変えずにファイルを編集していくだけなら,共有フォルダ内で作業を行えばいいのです.この演習ではこれを活用していきたいと思います.
環境構築のためにパッケージをインストールしたり,ゲストOSの設定を変更したりすることはできませんので注意してください.
共有フォルダ設定に関してはまた後日記事にいたします.楽しみにしていてください.
NHMによるスナップショット機能の追加(Windows限定)
さて,これまで説明してきたものは,スナップショット機能と同様に以前の状態を復元することを目的とした,擬似スナップショット機能の説明でした.しかし,少し作業が面倒くさいのが難点です.
ところが,「NHM」というソフトウェアを使えば,もっと簡単にスナップショット機能を実現することができるのです.残念ながらこれはWindows限定のソフトウェアなのですが,新規スナップショットの作成や変更の適用が簡単な操作で実現でき,非常に便利です.
ここでは記事にしませんが,Windowsの方は下の記事を参考にして導入してみてもよいでしょう.
「NHM」VMware Playerを使っていてもスナップショットを作成出来るソフトウェア!
次回
それではバックアップも取ったところで,次回はいよいよsudoersの管理をやっていきたいところですが,その前にユーザーやグループの管理をやっていきたいと思います.
今回はここまでです.ありがとうございました.
次回以降設定が反映されないことのないよう,忘れないうちに「CentOS 6.8」のnon-persistentモードは解除しておいてください.
また次回もよろしくお願いいたします.
Linuxコマンドのファイル操作編,書きました
Qiita:Linuxコマンド入門(2) ~ファイル操作~
Previous | Top | Next
Prev: 【第6回】Linuxコマンド入門(1)
Next: 【第8回】CentOSの歩き方 GNOME編(2) ~ユーザー・グループの管理~
Index
Journey
【第6回】Linuxコマンド入門(1)
皆さま,こんにちは. 迷子のエンリュです.
今日は,CentOSのGNOMEターミナルを使って早速Linuxコマンドの練習をしていきたいと思います.CUIでひたすら文字を打ちコンピュータを動かす.これこそまさにハッカーへの道のりの第一歩と言えるでしょう.
ただ漠然と練習しようというだけでは,何からやろうかわからなくなってしまいますので,今回はディレクトリ操作コマンドを中心に演習していこうと思います.また,CUIベースのシャットダウンや再起動の方法についてもお教えいたします.今回扱うコマンドは以下の通りです.
それではよろしくお願いいたします.
環境
- Cent OS 6.8
カレントディレクトリの表示
ディレクトリというのは,コンピュータのファイルシステムの「場所」を表す概念で,ファイルを格納するものです.フォルダのようなものと考えてよいでしょう.ディレクトリは階層構造を作っており,これによってファイルの場所を一意に表現します.
pwdコマンド
今いる場所,すなわち現在のディレクトリのことをカレントディレクトリといいます.pwdコマンドは"print working directory"という意味で,カレントディレクトリを表示します.
$ pwd
なお,$マークはコマンドラインの入力を意味します.ターミナルにはすでに$が表示されていると思います.$ pwd
と書いてあるときはそこに「pwd」と入力してEnterを押してください.
作業中に今いる場所が分からなくなったら,pwdコマンドで調べましょう.
ディレクトリ内の一覧表示
ls コマンド(1)
lsコマンドは"list"の略で,ディレクトリの中身を一覧表示します.lsには様々なコマンドオプションが用意されています.
$ ls $ ls -a $ ls -l $ ls -al
ls -a
は普段は表示されないドットファイル,ドットディレクトリも表示します.
ls -l
はファイルの詳細情報を併せて表示します.
二つのコマンドオプションを組み合わせることもできます.
おまけ:ファイルの詳細情報
ls -l
で表示されるファイルの詳細情報の一部を切り取ってみましょう.
$ ls -l -rw-r--r--. 1 enryu enryu 124 May 11 08:21 .bashrc drwxr-xr-x. 2 enryu enryu 4096 Oct 16 02:00 Desktop
これらの文字はなにを意味しているかというと,左から順に
を表しています.
パーミッションは10文字のアルファベットからなります.最初のdはディレクトリかどうかを表します.残りの9文字は,誰にどの操作を許可するかというアクセス権を表します.「owner/group/other」の順で並んでおり,「r」が「読み込み権限/ディレクトリの一覧権限」,「w」が「書き込み権限/ディレクトリの作成権限」,「x」が「実行権限/ディレクトリの侵入権限」を表します.
ls -l
で表示される書式を「long listing format」といいます.
パーミッションの設定方法などはまた今度やります.少々ややこしいかもしれませんが,ファイルの管理には欠かせない知識です.
ls コマンド(2)
ls コマンドは,引数にディレクトリ名を入力することで,任意のディレクトリの一覧を表示することができます.例えば次のような使い方があります.
$ ls -a Desktop $ ls / $ ls /usr/bin
ディレクトリを表す記号
いくつかのディレクトリには記号で表されるものがあります.少しまとめてみましょう.
記号 | 名前 | 説明 |
---|---|---|
. | カレントディレクトリ | 現在のディレクトリ |
.. | 親ディレクトリ | ひとつ上の階層のディレクトリ |
~ | ホームディレクトリ | ログインしたときに最初にいるディレクトリ |
/ | ルートディレクトリ | 一番上のディレクトリ |
親ディレクトリとは反対に,一つ下のディレクトリをサブディレクトリといいます.ルートディレクトリの下にあるすべてのディレクトリをサブディレクトリということもあります.
ディレクトリの移動
cd コマンド
cd コマンドは"change directory"の意味で,指定したディレクトリに移動します.ディレクトリの指定には,先ほどのディレクトリを表す記号を使うことができます.ただし,パーミッションの「x」がないディレクトリには入れないので注意しましょう.
ファイルやディレクトリ名を入力するとき,途中まで入力してTabキーを押すと補完してくれます.また,候補がたくさんあるときは候補を表示してくれます.lsコマンドやcdコマンドを使うときに試してみましょう.
$ cd .. $ ls $ cd ./enryu/Documents/ $ pwd $ cd / $ ls -g $ cd /root $ cd ~ $ pwd
相対パスと絶対パス
../../Documents/foo
といったディレクトリの指定は,カレントディレクトリからの相対的な場所を辿っていきます.これを相対パスといいます.一方/home/enryu/Desktop
のような指定方法はルートディレクトリから辿ります.カレントディレクトリに関わらず絶対位置を指定するので絶対パスといいます.
pushd コマンドとpopdコマンド
pushd, popd コマンドはそれぞれ"push directory", "pop directory"の意味です.push/popはスタックというメモリ方式に対する操作の用語ですが,詳しくはまた後日取り扱います.pushdはカレントディレクトリを記憶したまま指定したディレクトリに移動し,popdは最後に記憶したディレクトリから順番に戻ります.記憶したディレクトリはdirsコマンドで見られます.
$ pwd $ pushd Documents/ # ~を記憶して~/Documentsに移動 $ pushd ../Downloads/ # Documentsを記憶してDownloadsに移動 $ pushd -n ../Desktop/ # nオプションで移動しないでDesktopを記憶 $ pushd +1 # カレントディレクトリを末尾に加えて1番のディレクトリに移動 $ pushd -0 # 末尾のディレクトリに移動してカレントディレクトリを先頭に $ popd # 先頭のディレクトリに移動 $ popd +2 # 移動しないで2番目のディレクトリを記憶から削除
ディレクトリの作成・削除
mkdir コマンド
mkdir コマンドは"make directory"の意味で,ディレクトリを作成します.
$ mkdir sample # sampleディレクトリを作成します $ mkdir -v sample/subdir # vオプションで詳細を表示します. $ mkdir -v sample2/subdir # 親ディレクトリが存在しないとエラーになります. $ mkdir -vp sample2/subdir # pオプションを付ければ親も一緒に作成します. $ ls sample sample2 # まとめて二つのディレクトリの一覧を表示
rmdirコマンド
rmdir は"remove directory"の意味で,空のディレクトリを削除します.中身のあるディレクトリは削除できません.中身ごとディレクトリを消したい場合は,rm -r *directory*
とします.
$ rmdir sample # エラーになります $ rmdir sample/subdir $ rmdir sample $ rm -r sample2 # 一度に消したいときはrmコマンドを使います
CUIベースの再起動・シャットダウン
さて,ここまで一気にやってきましたがどうでしょう?こんなにいきなりたくさん覚えられませんよね.
Linuxコマンドはひとつの言語です.いきなりすべて覚えるなんて無理でしょう.使いながら覚えていけばいいのです.逆に言えば,たくさん使えば使っただけ慣れていくものです.今日は,ああこんなものか,と捉えてもらえればそれでいいのです.
最後に,CUIからコマンドでCentOSをシャットダウンしてみましょう.
shutdown, halt, rebootコマンド
shutdown コマンドはシステムの再起動やシャットダウンするときに用います.オプションでシャットダウン時の挙動を設定することができます.halt, rebootは,オプション付きのshutdownコマンドと同じ働きをします.
システムの再起動をするとき $ shutdown -r now または $ reboot システムのシャットダウンをするとき $ shutdown -h now または $ halt
root権限での実行
また,設定で一般ユーザ権限ではコマンドからシャットダウン,再起動できない場合があります.そういうときは,
$ sudo shutdown -h now または $ su - # shutdown -h now
のようにします.sudoは"super user do", suは"switch user"を表し,どちらもroot権限としてコマンドを実行するときに用います.root権限とは,システムを管理する権限だと思ってください.
デフォルトでは,一般ユーザはsudoが使えない代わりにroot権限なしでもhalt
によるシャットダウンが行えたかと思います.これはセキュリティの観点から見るとあまり喜ばしいことではありません.sudoやrootなどシステムのセキュリティに関する設定を変更する必要があります.
しかし,root権限はシステムの設定に係る重要なファイルを書き換えたり削除したりできるため,ちょっとしたミスでシステムの起動ができなくなるなど一大事になりかねません.そこで,次回はVMwareで仮想マシンのバックアップを取る裏ワザをお教えしようと思います.
Virtual Boxならスナップショットが取れるんですけどね...
ディレクトリ操作コマンドについてはこちらでもまとめています.
Previous | Top | Next
Prev: 【第5回】CentOSの歩き方 GNOME編(1)
Next: 【第7回】VMwareを使いこなせ ~擬似スナップショット~
Index
Journey
【第5回】CentOSの歩き方 GNOME編(1)
皆さま,こんにちは. 迷子のエンリュです.
今回はCentOS 6.8をGNOMEデスクトップからGUIで操作する方法について書いていきます.
GUIとはGraphical User Interfaceの略で,GNOMEのように画面を見ながらマウスやキーボードを使って視覚的に操作するユーザーインターフェースのことです.これに対してCUI|Character-based User Interfaceは,コンピュータの状態がすべてコンソール上の文字で表示され,ユーザーもキーボードを使ってコマンドラインから文字で操作を行うユーザーインターフェースです.Linuxの設定はCUIで行うことが多いのですが,GUIの方が直観的でわかりやすいため,まずはこちらからやっていこうと思います.
今回行うのは以下の項目です.
それではよろしくお願いいたします.
タイムゾーン,時刻の設定
ロケーションの設定
まずは,ロケーションを設定していきます.仮想マシンを起動し,デスクトップにログインしたら,右上の時刻表示をクリックします.
すると,カレンダーと登録されている地点が表示されます.Locationsの右のEdit
ボタンを押します.
Locationsタブで地点を登録していきます.Add
ボタンで新しい地点を追加しましょう.
Location Nameの欄に「Tokyo」と入力すると候補が出てきます.「Tokyo, Japan」を選びます.逆に「Japan」と入力すると,日本国内の都市がいくつか候補に挙がります.自分のいる地点に近いところを選びましょう.
地点を選ぶと,それに合わせたタイムゾーンや緯度経度が自動で入力されます.これでよければOK
を押しましょう.
これで新たな地点が登録されました.次にTokyoにカーソルを合わせると出てくるSet...
をクリックします.すると,rootのパスワードの入力が求められます.入力してAuthenticate
を押せば,Tokyoのタイムゾーンがシステムのタイムゾーンとして設定されます.これでタイムゾーンの設定は完了です.
Clock PreferenceのClose
を押すと,時刻表示が更新され,GMTからJSTに変更されます.
時刻の設定
時刻がずれている場合は,「Clock Preference」のTime Settings
から時刻を設定します.
Timeの数字を調整してSet System Time
を押します.rootのパスワードを入力すると,時刻が更新されます.
以上で時刻の設定は終わりです.
画面解像度の設定
画面解像度とは,ゲストOSの画面のサイズのことをいいます.VMwareのウィンドウがゲストOSの画面より小さいと,画面をスクロールするために毎回Ctrl+Alt
で制御をホストOSに戻す必要があり,何かと不便です.
VMware Toolsがインストールされていれば,再起動した時点でウィンドウサイズにあった画面解像度に自動的に設定され,ウィンドウサイズが変わるたびに画面解像度も併せてくれるのですが,手動で解像度を変更する方法も知っておく必要があります.
GNOMEの画面の設定は,上のメニューバーのSystem > Preferences > Display
から行っていきます.ヒントにChange screen resolution
と表示されています.
クリックすると,「Display Preferences」画面が表示されます.
Resolutionをクリックして解像度を変更します.
Apply
ボタンを押すと解像度が変更され,これでいいかの確認ダイアログが出ます.
ここでKeep This Configuration
を押せば,変更は完了です.今回はVMware Tools の自動設定を利用しているので,Restore Previous Configuration
で元に戻しましょう.
これで画像解像度の設定は終わりです.Close
で設定画面を終了してください.
キーボードの種類の設定
次はキーボードの種類を変更します.CentOSでは初期設定でUSキーボードが選択されています.日本製のキーボードに描かれているキー配置は日本語キーボードのものです.日本語キーボードとUSキーボードは記号の配置が異なるため,そのままだと非常にややこしくなります.
(画像:【win8】USキーボードで日本語入力環境を整える)
USキーボードしか使えないときもあるので,USキーボード配列を覚えておくのも一つの手ですが,普段使うにはやはりキーの印字と食い違うというのは不便なものです.これも設定で変えることができます.
先ほどと同様に,System > Preferences > Keyboard
をクリックします.
「Keyboard Preferences」が起動したら,Layouts
タブを選び,「Layout」一覧に日本語キーボード「Japanese」を加えます.下のAdd
ボタンをクリックします.
By Country
タブのCountry
からJapan
を選びます.Variants
にJapanese
と表示されていることを確認します.ここで「かなキーボード」なども選択できます.
Japanese
が選択出来たら,右下のAdd
ボタンを押して前の画面に戻ります.English (US)
の下にJapanese
が表示されていれば成功です.
あとは設定画面をClose
してください.これでキーボード配列の設定は完了です.
キーボードショートカットの設定
引き続きキーボードの設定を行っていきます.今度はショートカットキーの設定です.GUIベースで操作しているとはいえ,LinuxではしばしばCUIを使うことがあります.GUIにおいてCUIを使いたいときには,端末,コンソール,ターミナルなどと呼ばれるアプリケーションを使います.
UbuntuなどではCtrl+Alt+t
というショートカットで端末を起動することができます.このショートカットは便利なので,CentOSでも設定していこうと思います.
System > Preferences > Keyboard Shortcuts
を開きます.
たくさんショートカットが並んでいます.時々この設定を見て使えそうなものを覚えておくといいですね.
Sound
は折りたたんでDesktop
を展開,下の方にスクロールしていきます.Run a terminal
という項目があります.
今はDisabled
になっています.Disabled
をクリックするとNew shortcut...
となるので,ここでCtrl+Alt+t
と押します.なぜか表示はAlt+t
となりますが,これで挙動は問題ありません.Close
を押して設定を終了してください.
ターミナルの起動
早速Ctrl+Alt+t
を入力してみましょう.下のようにターミナルが起動できると思います.
さらにCtrl+Shift+t
を押せば新しいタブが開きます.タブ間の移動はAlt+1
, Alt+2
のようにして実行できます.
さらにCtrl+Alt+t
を押すと新しいウィンドウでターミナルが起動できます.Alt+Tab
で操作するウィンドウを切り替えることができます.また,起動したターミナルはexit
と入力することで終了します.ウィンドウに他のタブがあればそのタブが閉じ,他のタブがなければウィンドウが閉じます.Alt+F4
でウィンドウを閉じることもできます.
ターミナルはこれから何度も使うことになるので,一連のショートカットキーを覚えておくと作業が楽になるでしょう.
GUIベースのシャットダウン
GNOMEでのシャットダウンは,左上の「System > Shut Down... > Shut Down」からできます.前回のようにVMwareのメニューから強制終了することもできますが,できるだけゲストOS内からシャットダウンするようにしましょう.
次回はターミナルからLinuxコマンドを使ってみましょう
Previous | Top | Next
Prev: 【第4回】仮想化環境の構築(3)
Next: 【第6回】Linuxコマンド入門(1)
Index
Journey
【第4回】仮想化環境の構築(3)
皆さま,こんにちは. 迷子のエンリュです.
前回はVMwareをインストールしました.今回はいよいよ,ゲストOSをインストールしていきます.ゲストOSとは仮想化マシンを動かすOSのことです.ホストOSの中でいくつかのゲストOSが稼働する形になります.VMwareを使って新規マシンをどんどん作っていくことで,一台のコンピュータであらゆるOSを動かしたり,仮想ネットワークを作って通信させたり,ということが可能になってきます.何だかわくわくしてきましたね.
それでは早速始めていきましょう.よろしくお願いいたします.
ISOイメージのダウンロード
VMwareで仮想マシンを構築するときは,OSインストールのためのISOイメージというのが必要になります.お店でOSを買うときはCD/DVDとして買うと思います.あのディスクに焼かれているソフトウェアのデータがISOイメージファイルなのです.ですから,市販のOSイメージを買ってきてドライブに挿入してもいいのですが,今回は無料で配布されているISOイメージをWebサイトからダウンロードしようと思います.
CentOS 6.8 のダウンロード
今回インストールするのは,LinuxのRedHat系OSで,サーバのOSとしてよく用いられる「CentOS」です.2016年10月16日現在,最新バージョンは「CentOS 7」ですが,まずはそのひとつ前のバージョンである「CentOS 6.8」をインストールしていこうと思います(理由はそのうち独りごとのコーナーで).
CentOSのイメージはCentOS Wiki|ダウンロードページから無料でダウンロードすることができます.
CentOS Wiki|ダウンロードページ
CentOS Linux Version が6となっている行のCD and DVD ISO imagesから,x86_64を選びます.すると,指定したISOイメージをダウンロードできるリンクの一覧が表示されます.ここから適当に一つ選んでダウンロードします.これはどれでもいいです.私はいつも一番近そうなところを選びます.
リンクに飛ぶとisoイメージの一覧がずらっと表示されます.
今回使うのはCentOS-6.8-x86_64-bin-DVD1.iso
というものです.LiveCDやLiveDVDというのはインストールしながら必要ファイルをオンラインでダウンロードしてくるものなので,インストールに時間がかかります.binはあらかじめ全部ダウンロードするので,インストール作業がオフラインでできますし,比較的早く終わります.ただ,4 GB近くあるので,ダウンロードには時間がかかります.お気を付けください.
それでは,ダウンロードが終わるまで休憩~♪
CentOS 6.8 仮想マシンの作成
ダウンロードは終わりましたでしょうか?
お疲れ様です.それでは早速仮想マシンを作成していきましょう.前回インストールしたVMwareを起動してください.
ホーム画面(画像)の右側の「新規仮想マシンの作成」か,上のメニューバーからPlayer > ファイル > 新しい仮想マシン
の順で仮想マシン作成ウィザードを起動させます.Cntl + N
でも起動できます.
まずは簡易インストール機能を使ってお任せで作成してみましょう. 2番目のラジオボタン「インストーラディスクイメージファイル(iso)」を選んで,参照から先ほどダウンロードしたISOイメージを選んでください.
選択するとOSが検出され,このOSは簡易インストールを使用します
と表示されます.「次へ」を押して次に進みましょう.
まずは,ユーザ情報を入力していきます.パスワードはできるだけ強固なものを設定します.間違っても空欄にしたり,passward
,12345678
,qwerty
などのわかりやすいものにはしないようにしましょう.入力したら「次へ」.
仮想マシンの名前は「CentOS 6.8」としておきます.ここは何でもいいですが,あとから「CentOS 7」も作成することになるので, 区別できるようにしましょう.場所には仮想マシンの設定,状態,ハードディスクのデータなどを格納するフォルダを指定します.かなり大きなデータになるので注意が必要ですが,特に問題ないようでしたらデフォルトで構いません.
次に進むと,ディスクのサイズが指定できるようになっています.ここはデフォルトでいいでしょう.足りない場合は,あとから追加することもできます.
次の画面で,設定を確認できます(画像では仮想マシンの名前が違っていますが,「CentOS 6.8」になっていればOKです).ハードウェアのカスタマイズもできますが,今回はこのままで作成していきます.最後に「完成」を押せば,仮想マシンのファイルが作成されてOSのインストールが始まります.
仮想マシン起動とOSのインストール
インストールはすべて自動で進んでいきますが,とても時間がかかります.気長に待ちましょう.
ちなみに,OSのインストールはAnacondaというプログラムが実行していきます.インストールは/root/anaconda-ks.config
というファイルにしたがって行われます.
インストール作業は
と進んでいきます.
全体で30分ほどでインストール作業は完了し,ログイン画面になります.
画面をクリックするか,Cntl + G
でゲストOSに入ります.この状態になるとマウスの移動やキーボード入力などがゲストOSに反映されるようになります.逆にホストOSの操作はできなくなります.ウィンドウを動かしたり,サイズを変えたり,横のスクロールバーを動かしたいときには,Cntl + Alt
で制御をホストOSに戻す必要があります.それでは,ログイン画面のアカウント名(画像では「Lost Enryu」)をクリックして,最初に決めたパスワードを入力しましょう.「Login」ボタンを押すと,デスクトップ画面が表示されます.
ちなみに,このデスクトップはGNOMEといいます.CentOSのデスクトップはGNOMEとKDEという2種類の環境があります.デスクトップ環境によって見た目や操作が大きく違ってくるので注意しましょう.
これで,OSのインストール作業は完了です.これからの演習は,この仮想化環境で行っていくことになります.
ゲストOSの画面がウィンドウサイズに合っていなかったりして,このままでは使いづらいですね.キーボードの配列も少し違うようです.まずは設定を色々変えないといけないですね.次回は基本的な設定を行っていきます.
VMwareから強制シャットダウン
それでは今回はここまでです.お疲れさまでした.
仮想マシンのシャットダウンは,基本的にはゲストOS内から正規の手順でシャットダウンさせるのが理想ですが,それは次回以降ご紹介するとして,今回はVMwareから強制シャットダウンの信号を送って終了する方法をお教えいたします.
何か問題が発生してゲストOSが止まってしまったときなどは,この方法で強制終了したり再起動したりします.
VMwareウィンドウの上のメニューバーから停止マークを選び,「ゲストをシャットダウン」をクリック.確認画面でEnter
キーを押せば終了処理が始まります.
それではお疲れさまでした.
問題が起こったらすぐにグーグル先生に聞きましょう
Previous | Top | Next
Prev: 【第3回】仮想化環境の構築(2)
Next: 【第5回】CentOSの歩き方 GNOME編(1)
Index
Journey
仮想化技術のあれこれ ~入れ子とコンテナ~
皆さま,こんにちは. 迷子のエンリュです.
第2回から第4回までの仮想化環境構築編を書いておりました.
仮想化ソフトウェアをどれにするか,随分と悩んだものです.結論としてVMwareをベースに,Macの人にはVirtual Boxも使ってもらいながら,という形になりましたが,いかがでしょうか.
正直どちらのソフトウェアも,「無料でここまでやらせてくれるの!?」っていう高度なソフトウェアになっています.有料版との違いといえばVMの監視ツールがなかったり,有事の際のサポートがなかったりという点くらいで,自分で全部調べてやっちゃおう,これはうまくいかなかったけど問題ないだろう,っていう,勉強中の学生にはそれほど必要のないものです.仮想マシンが構築できて,そいつが満足に動いてくれるならそれでいい,というような私のような身には,無料版でも有り余るほどの性能ですね.Macの方には制約があるかもといっていましたが,このブログの演習環境としては十分だと思います.
Hyper-VとNested Virtualization
さて,第2回で問題にさせていただきました,Nested Virtualizationについて,もう少し触れさせていただきましょう.
最近Nested Virtualizationで話題になっているのは,Windows Server 2016から実現されたNested Hyper-Vでしょう. Windows Insider Preview: Nested Virtualization で,2015年10月13日にearly previewとしてリリースされました.あれからもう1年なんですね.記事の中では,Hyper-Vの入れ子によってWindowsの中のWindowsの中にWindowsが立ち上がっている写真が公開されました.
(画像:
Windows Insider Preview: Nested Virtualization
https://blogs.technet.microsoft.com/virtualization/2015/10/13/windows-insider-preview-nested-virtualization/)
これは壮観ですね.
Nested Virtualizationとコンテナ型仮想化による「DevOps」の実現
しかし,なぜMicrosoftはNested Virtualizationを実装したのでしょうか.一体何のためにこのような複雑なことをしようとしたのでしょうか.記事の中にちらっと「Hyper-V Containers」という言葉が出てきます.これはヒントですね.新しい仮想化技術の概念としてコンテナ型仮想化というものがあります.普通のサーバ仮想化のような,OS丸ごとパッケージするよりも小さく,アプリケーション実行環境をパッケージングし,同一OSの上に分離されたプロセスとして展開する,というものです.
(画像:WHAT IS DOCKER? https://www.docker.com/what-docker)
では,コンテナ型仮想化とNested Virtualizationはどのように関係するのでしょうか.コンテナ型仮想化システムのメリットはサーバ上に素早くサービス実行環境を構築できることです.これにより,従来よりも迅速に開発・運用を行っていく新しいビジネスの形「DevOps」が実現できるのです.そのためには,クラウド上で展開された仮想サーバに,仮想コンテナをどんどん乗っけていく形が理想的です.仮想コンテナを持つホストOSが仮想化されていれば,そのリソースを必要に応じて増減させることができるのです.Microsoftのドキュメンテーションには,次のように記されています.
入れ子になった仮想化は、Hyper-V 仮想マシン内での Hyper-V の実行を可能にする機能です。 つまり、入れ子になった仮想化により、Hyper-V ホスト自体を仮想化することができます。 入れ子になった仮想化の使用例として、仮想化されたコンテナー ホストで Hyper-V コンテナーを実行したり、仮想化環境に Hyper-V ラボをセットアップしたり、個別のハードウェアを必要とせずに複数コンピューターのシナリオをテストしたりする方法があります。
(参照: Run Hyper-V in a Virtual Machine with Nested Virtualization)
Nested Virtualizationの実現とコンテナ型仮想化の普及は,ITビジネスをより高速で効率的なものへと押し上げていくことでしょう.
日本では文化的になかなか広がっていかないという「DevOps」.これからの世界で戦うために無視することのできないこの新しい概念と,従来のシステムをなかなか変えられない日本文化との折り合いをつけていくことも大切ですね.いつか「DevOps」についても記事を書きたいと思っておりますが,まずはこの新技術,Nested Virtualizationとコンテナ型仮想化について,いろいろ試していきたいところですね.
いろいろ参照記事
注目を浴びる「Dockerコンテナ」、従来の仮想化と何が違うのか?
VMwareとどう違う?Dockerに見るコンテナ型仮想化サービス
コンテナ技術の基礎知識
DevOpsとは何か? そのツールと組織文化、アジャイルとの違い
DevOpsとは開発と運用の改善ではない:4人の“DevOpsガイ”が熱弁
なんだか難しい話だったなあ...
Previous | Top | Next
Prev: 迷いの森
Next: 未定