Linuxインストール後にやっておきたい事(OS依存少なめ)

![20131125225811.jpg](https://qiita-image-store.s3.amazonaws.com/0/258841/fa995ac8-f61c-0b20-4907-bc5442d61901.jpeg)

Linuxインストール後にやっておきたい事(OS依存少なめ)

## 背景

Linuxをインストールして最初にやっておきたい事を順を追って書きました。
仮想マシンだったり物理マシンだったりしょっちゅうインストールする機会が多いですが
最低限やっておきたいものです。
関係ないですが、最近はLinux Mintに興味津々です。

## ①とりあえず環境を最新へ

とりあえずyumなりaptなりで最新へアップデート。

``` bash
# RHEL系
$ sudo yum update

# Debian系
$ sudo apt update ; sudo apt upgrade
```

## ②作業ユーザの追加

自分専用だろうが一応追加します。

``` bash
# sudoする為にwheelグループにする
# useradd hogefuga -G wheel
# passwd hogefuga
```

## ③sshできるようにする

ターミナルエミュレータで作業する為にsshしたいのでとりあえずやってみる
駄目だったら下記を確認

* IPアドレス/ユーザ名が合っているか
* sshのポートが空いているか
* sshd_configの設定は間違っていないか

後は基本的にrootログインは禁止してますね
root権欲しいなら都度sudoなりsuしてます。

``` bash:/etc/ssh/sshd_config
# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       ForceCommand cvs server
PermitRootLogin no
```

ここからは基本的にターミナルエミュレータで作業を進めます

## ④必要パッケージのインストール

#### vim-enhancedを入れる

特に理由は無いがvim-enhancedを入れている。
色々種類があるが下記が詳しい。
https://qiita.com/b4b4r07/items/f7a4a0461e1fc6f436a4

#### net-toolsを入れる

ifconfigやnetstatなどまあ使いどころはあるかもしれないので一応。。。
iproute2との比較は下記が詳しい
https://qiita.com/miyu/items/0cac69b6810dbbc56a9b

#### bash-completionを入れる

bash-completionは入力補完を強化(?)するソフト
systemctlなどのサブコマンドの補完が使えるようになります。

``` bash
# RHEL系
$ yum install -y bash-completion

# Debian系
$ apt install -y bash-completion

# 試す
$ systemctl
add-requires           force-reload           list-sockets           set-environment
add-wants              get-default            list-timers            set-property
cancel                 halt                   list-unit-files        show
cat                    help                   list-units             show-environment
condreload             hibernate              mask                   snapshot
condrestart            hybrid-sleep           poweroff               start
condstop               is-active              preset                 status
daemon-reexec          is-enabled             reboot                 stop
daemon-reload          is-failed              reenable               suspend
default                isolate                reload                 switch-root
delete                 is-system-running      reload-or-restart      try-restart
disable                kexec                  reload-or-try-restart  unmask
edit                   kill                   rescue                 unset-environment
emergency              link                   reset-failed
enable                 list-dependencies      restart
exit                   list-jobs              set-default
```

こんな感じでstatusなりrestart/reloadなりの補完が聞くようになります。
sshのホスト名(known_hosts準拠)だったりmanだったり色々使いどころあるので便利です。

## ⑤共有サーバマウント

サーバ構築してからも他マシンとのファイル共有は必要なので。
さらにいえば下記項目を自動で行うスクリプトを置いて叩くだけにしておけば
何台増えようが同じような環境が作れる。
ここで同時にfstabを設定しておけばリブート時にもマウントする手間が省けるのでベスト

``` bash
/dev/hda4               /                  ext3    defaults        1 1
/dev/hda1               /boot              ext3    defaults        1 2
/dev/cdrom              /mnt/cdrom         iso9660 noauto,owner,ro 0 0
/dev/hda2               /var               ext3    defaults        1 3
/dev/hda3               swap               swap    defaults        0 0
server:/usr/local/pub   /pub               nfs     defaults        0 0
```

## ⑥bashrcをちょろっと書く

適当なサービス上げるだけとかでもとりあえず入れとくと後々便利
エラーがあったら結果ログ見に行ったりするので必須ですね。

``` bash
if [ "$(uname)" == 'Darwin' ]; then
	OSNAME='Mac'
else
	OSNAME='Linux'
fi

[ -z "$PS1" ] && return

## export
export OSNAME
export LESSCHARSET=UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH
export EDITOR=vim
export HISTSIZE=10000
export HISTFILESIZE=${HISTSIZE}

## Aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias cd.='cd ..'
alias cd..='cd ..'
alias l='ls -alF'
alias ll='ls -l'
alias vi='vim'
alias vi2='vi -O2 '
alias hc="history -c"
alias which='type -p'
alias k5='kill -9 %%'
alias gv='vim +GV +"autocmd BufWipeout <buffer> qall"'
alias x='xonsh'
```

## ⑦vimrcをちょろっと書く

デフォルトで出来る限り行える設定だけ書いてます。
サーバでちょっとしたスクリプトなりを書くときにストレスが10%ぐらい減ります。

``` bash
set number
set ruler
set list
set listchars=tab:>-,trail:-,nbsp:%,extends:>,precedes:<,eol:<
set incsearch
set hlsearch
set nowrap
set showmatch
set whichwrap=h,l
set nowrapscan
set ignorecase
set hidden
set history=2000
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
set helplang=en
set autoindent
set nocompatible
set expandtab
set hidden
set incsearch
set number
set showmatch
set smartcase
set smartindent
set smarttab
set whichwrap=b,s,h,l,<,>,[,]
set nowrapscan
set t_Co=256
```

## ⑧最低限のセキュリティ設定

閉じたネットワークでも念のためやってます。
下記記事が結構ためになりました。
https://qiita.com/saitoxu/items/5ea998164c6225358567

## ⑨SELinuxの無効化

selinuxはLinuxの監査やセキュリティを向上させる機能

``` bash:/etc/selinux/config
SELINUX=disabled
```

上記のように編集し、再起動する。
スペルミスとかするとOSが起動しなくなったりするのでご注意を(何度かやった)
リカバリモードで起動して、ファイル修正すれば直ります。

## ⑩不要サービスの無効化

検証/運用上使うこと無いサービスを無効化します。
不要なポートだったりリソースの無駄使いを防ぐためです。
ここは用途でやるかやらないか色々検討が必要ですね。

``` bash
# systemctl disable auditd.service
# systemctl disable abrt-ccpp.service
# systemctl disable abrt-oops.service
# systemctl disable abrt-xorg.service
# systemctl disable abrt-vmcore.service
# systemctl disable abrtd.service
# systemctl disable libstoragemgmt.service
# systemctl disable smartd.service
# systemctl disable libvirtd.service
# systemctl disable qemu-guest-agent.service
# systemctl disable dmraid-activation.service
# systemctl disable mdmonitor.service
# systemctl disable avahi-daemon.service
# systemctl disable kdump
```

## 感想

最低限の共通設定でした。
ここから検証用環境を構築していくためのスタートラインです。
環境構築はなぞの独特の楽しさがありますね。
GUIでインストールした場合はもっと他にもやりたいことはあります。
(隠しファイル表示なり、ディレクトリ名を英語にするなりブラウザ関連の設定なり..etc)