検証用の CentOS をインストールした直後に行う初期設定手順

公開日: : 最終更新日:2014/09/06 プログラム , ,

職場でも自宅でも Linux で検証したい作業があったので VMware に 64 ビット版の CentOS バージョン 6.5 を “Minimal” でインストールしました。

いつも OS をインストールした直後に行うユーザ作成とかお決まりの手順があります。自分にとっての必要最低限リストなので不足があるかと思いますが、メモしておきます。

icatch-8785445626_587fdac14d_z

photo credit:Some rights reserved by Financial Times photos

目次

1. パッケージをアップデートする

まずはインストールされている全てのパッケージをアップデートして最新化します。わざわざ古いバージョンのパッケージを使う必要はありません。

[root@CentOS6 ~]# yum -y update

2. SELinux を無効にする

検証環境なので SELinux は無効にしてしまいます。これが有効になっていると邪魔することがあって面倒なので。

/etc/selinux/config を以下のように修正します。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  # ← 変更
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

変更したらサーバを再起動して設定を反映させます。

SELinux が無効になっているかは getenforce コマンドで確認できます。実行結果が “Disabled” と表示されれば無効になっています。

[root@CentOS6 ~]# getenforce
Disabled

3. ntpd をインストールして現在時刻を合わせる

時刻が正確でないとログが追いにくくなるので最初に合わせてしまいます。

手順は次のサイトのものをなぞったものです。

yum で ntpd をインストールします。

[root@CentOS6 ~]# yum -y install ntp
:
:
Installed:
  ntp.x86_64 0:4.2.6p5-1.el6.centos                                                                 
Dependency Installed:
  libedit.x86_64 0:2.11-4.20080712cvs.1.el6          ntpdate.x86_64 0:4.2.6p5-1.el6.centos         

Complete!

次に、ntpd の設定ファイル /etc/ntp.conf を以下のように修正します。

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1

# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  # ← コメントを外した

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
server ntp.nict.jp  # ← 追加

#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client

# Enable public key cryptography.
#crypto

includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

日本標準時刻を提供している NTP サーバと同期するように設定を変更したあとに、手動で時刻を同期します。

[root@CentOS6 ~]# ntpdate ntp.nict.jp
 5 Aug 00:11:18 ntpdate[1193]: step time server 133.243.238.244 offset 45678.502606 sec

サーバを起動するたびに手動で時刻を同期するのは面倒なので、自動で同期してくれるように設定します。まずは、デーモンを起動して、、、

[root@CentOS6 ~]# /etc/init.d/ntpd start
ntpd を起動中:                                             [  OK  ]
[root@CentOS6 ~]# /etc/init.d/ntpd status
ntpd (pid  1201) を実行中...

chkconfig コマンドを使って自動起動するように設定します。

[root@CentOS6 ~]# chkconfig ntpd on
[root@CentOS6 ~]# chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

これで OK です。

4. zsh をインストールする

使いこなしているとか、駆使しているなんてレベルではないんですが、実行コマンドを遡って検索できるのがとても便利だったので bash ではなく zsh を使っています。

yum で zsh をインストールします。

[root@CentOS6 ~]# yum -y install zsh
:
:
Installed:
  zsh.x86_64 0:4.3.10-7.el6                                                                         
Complete!

インストールが完了すると /etc/shells に zsh のパスが追加されます。

[root@CentOS6 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/zsh

ログインシェルの変更は chsh コマンドで行います。chsh コマンドは対話式になっていて、ログインシェルにしたいシェルのパスを指定します。

[root@CentOS6 ~]# chsh
root のシェルを変更します。
新しいシェル [/bin/bash]: /bin/zsh
シェルを変更しました。

ログインしなおすと、ログインシェルが zsh に変更されています。

[root@CentOS6]~# echo $SHELL
/bin/zsh

zsh の設定ファイル ~/.zshrc は検索すればたくさん出てくるのでいいとこ取りして作成します。

5. 作業ユーザを追加する

検証環境とはいえ、常に root で作業するのは気が引けます(楽なんですけどね)。なので、作業ユーザ hoge を作成します。

ユーザ hoge のログインシェルも zsh にしたいので、以下のように -s オプションを付けて実行します。

[root@CentOS6 ~]# adduser -s /bin/zsh hoge

hoge が作成されたかは /etc/passwd で確認できます。

[root@CentOS6 ~]# grep hoge /etc/passwd
hoge:x:500:500::/home/hoge:/bin/zsh

このままではパスワードが設定されていないので passwd コマンドを使って hoge のパスワードを設定します。弱いパスワードを指定した場合は、次のように警告メッセージが表示されます。ただし、拒否られたのではないので、弱いパスワードであっても設定はできちゃいます。

[root@CentOS6 ~]# passwd hoge
ユーザー hoge のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

6. sudo を設定する

ユーザ hoge から root に切り替えなくても済むように sudo コマンドを使えるようにします。ユーザ hoge を wheel グループに属させ、パスワードを入力しなくても root になれるように visudo を実行します。

最初にグループを変更します。変更は usermod コマンドから行います。

[root@CentOS6 ~]# id hoge
uid=500(hoge) gid=500(hoge) 所属グループ=500(hoge)
[root@CentOS6 ~]# usermod -G wheel hoge
[root@CentOS6 ~]# id hoge
uid=500(hoge) gid=500(hoge) 所属グループ=500(hoge),10(wheel)

sudo の設定は専用のコマンド visudo から行います。
wheel グループに関する設定はコメントアウトされているので、コメントを外すだけで済みます。”wheel” で検索して、次のように該当行のコメントを外します。

## Same thing without a password
%wheel  ALL=(ALL)       NOPASSWD: ALL  # ← コメントを外した

設定を保存して、ユーザ hoge でログインし直してからパスワードを入力せずに sudo が実行できるか確認してみます。

[hoge@CentOS6 ~]$ ls /root 
ls: cannot open directory /root: 許可がありません
[hoge@CentOS6 ~]$ sudo ls /root
anaconda-ks.cfg  install.log  install.log.syslog

パスワードの入力を促されませんし、ls した結果も表示されています。問題ないようです。

7. root での SSH ログインを禁止する

これで、wheel グループに属するユーザであれば sudo コマンドを使って root 権限が必要なコマンドも実行できるようになりました。

サーバに直接 root でログインする必要がなくなりましたので、root での SSH ログインを禁止しておきます(禁止にしないとついつい root でログインしてしまうので)。

/etc/ssh/sshd_config を開いて “PermitRootLogin” で始まる行を変更します。その行を次のように変更します。

【修正前】

#PermitRootLogin yes

【修正後】

PermitRootLogin no

設定を保存したら SSH のデーモンを再起動してやります。これで設定が反映されます。

[hoge@CentOS6 ~]$ sudo /etc/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

これで root からの SSH ログインができなくなります。

8. 開発用パッケージを一括してインストールする

あるライブラリをインストールする際に、「○○がインストールされていないので処理を中断します」みたいなことに何度もなり、いい加減懲りました。なるべくさくっとインストールしてほしいので、一括してインストールしてしまいます。

不要なパッケージもインストールされてしまいますが、開発用・検証用ってことで良しとします。

[hoge@CentOS6 ~]$ sudo yum -y groupinstall 'Development tools'
[hoge@CentOS6 ~]$ sudo yum -y groupinstall 'Additional Development'

9. 最新版の Vim をインストールする

元々は Emacs を使っていたのですが、サーバでの作業は Vim を使うことが多いので Vim を使うようになりました。

“Minimal” でインストールすると機能を削られた Vim がインストールされるようです。それだとちょっと作業するのに不便なので、最新版の Vim を入れます。

Vim のソースコードは Mercurial で管理されているので Mercurial をインストールします。

[hoge@CentOS6 ~]$ sudo yum -y install mercurial

Vim のソースコードは /usr/local/src にチェックアウトしてインストールします。

[hoge@centos6]~% cd /usr/local/src
[hoge@centos6]/usr/local/src% sudo hg clone https://vim.googlecode.com/hg/ vim
:
:
[hoge@centos6]/usr/local/src% cd vim
[hoge@centos6]/usr/local/src/vim% sudo ./configure --with-features=huge --enable-multibyte --disable-selinux
:
:
[hoge@centos6]/usr/local/src/vim% sudo make
:
:
[hoge@centos6]/usr/local/src/vim% sudo make install
:
:

vim コマンドのパスは /usr/local/bin/vim になっているので、vi に alias しておきます。

[hoge@centos6]/usr/local/src/vim% echo 'alias vi="/usr/local/bin/vim"' >> ~/.zshrc
[hoge@centos6]/usr/local/src/vim% source ~/.zshrc

10. まとめ

以上、CentOS を使い始めるための初期設定手順でした。

こういう作業も自動化したらさらに効率が良くなるのですが、それは追々考えてみようかなと。

11. 更新履歴

  • (2014/08/15) 「パッケージのアップデート」「開発用パッケージの一括インストール」「最新版 Vim のインストール」を追加しました。
  • (2014/08/12) 初版を作成しました。

12. その他 Linux に関する記事

その他の Linux に関する記事は次の通りです。
気になる記事があったらぜひチェックしてみてください!

サーバー構築・超入門 – CentOS 6.5

  • 著者柴犬会長
  • 価格(2014/09/06 時点)
  • 出版日2014-07-24
  • 商品ランキング2425 位
  • 大型本89 ページ
  • ISBN-10
  • 出版社柴犬会長

はじめてUNIXで仕事をする人が読む本 (アスキー書籍)

  • 著者木本 雅彦
  • 価格(2014/09/06 時点)
  • 出版日2014-03-25
  • 商品ランキング1235 位
  • 大型本294 ページ
  • ISBN-10
  • 出版社KADOKAWA / アスキー・メディアワークス

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

no image

GoogleGuavaのRangeを使って範囲判定を簡潔に書く

次のような判定処理を if 文で書くことがよくある。 もし 100 よりも大きければ(=大小判定

記事を読む

20140811-00

64ビット版のCentOSをVMwareにインストールできない場合の対処法

Linux で検証したい作業が多かったので VMware に検証環境を作りました。OS は Cent

記事を読む

icatch-8442052993_2978189f52_z-resized

参照可能な yum リポジトリを確認する yum コマンドとワンライナー

あるパッケージをインストールするために配布リポジトリの設定を追加することがあります。 ビジネスユー

記事を読む

icatch-medium_4301351732-resized

mp3splt を実行して “undefined symbol: mp3splt_u_check_if_directory” と出力されたときの対処法

mp3 ファイルを分割してくれる mp3splt というライブラリがあります。 mp3 ファイルを

記事を読む

icatch-8587724648_24926df337_z-resized

yum のリポジトリ ATrpms を参照できるように設定する

あるツールの動作検証をしようと調べたところ、そのツールは ATrpms リポジトリが提供しているとの

記事を読む

icatch_5428744075-resized

scp を使ってファイルのコピーを実行したら “command not found” と表示されたときの対処法

CentOS が起動しているサーバに scp を使ってファイルをコピーしようとコマンドを実行したら

記事を読む

icatch_4365495446-resized

CentOS6.5にGitをソースコードからインストールする

CentOS 6.5 の64ビット版を "Minimal" でインストールした環境で、git sta

記事を読む

icatch-vacuum_9060011568_mini-thumbnail

GitHub にアップされているブランチをローカルに取り込む

GitHub に限らず、会社や自分で Git のサーバを使った場合にも当てはまりますが、毎回同じこと

記事を読む

icatch-sublimetext_9222613858_mini-thumbnail

Sublime Text3 のインストール直後に行った設定メモ

突発的に自宅のマシンにインストールしてあった Sublime Text2 を 3 にアップデートしま

記事を読む

no image

no space left と表示されたときの対処法

タイトルの "no space left" とは「書き込みたいけど、ディスクの飽

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


× 六 = 42

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑