「ほっ」と。キャンペーン
タグ:Linux ( 127 ) タグの人気記事
CentOS5で日本語入力をできるようにする
(Linux)最小構成でインストールしたCentOS5でGNOMEを利用できるようにする手順で、GNOMEを入れたんですが、日本語入力ができません。
ということで日本語入力をできるようにしてみました。

まずGNOME上で、インプットメソッドが入っているのかどうか確認してみました。
ログイン後、[システム]→[設定]→[他の個人設定]→[入力メソッド]を見たところ、[システム設定に従う[none]]になっていました。
どうやらインプットメソッドが入っていないようです。
(恥ずかしながら3流PGは「インプットメソッド」と「日本語入力システム」とを混同していました。Windowsだと、インプットメソッドは「IME」,日本語入力システムは「MS-IME」や「ATOK」、「Google日本語入力」となります。)

日本語入力の定番の Anthy には以下のようにインストールされていました。

# rpm -qa | grep anthy
anthy-7900-4.el5
scim-anthy-1.2.0-6.el5


CentOSの場合、以下のグループパッケージをインストールすることで、インプットメソッドも一緒にインストールしてくれるようです。

# yum -y groupinstall "Japanese Support"

上記を実行してみると、[システム]→[設定]→[他の個人設定]→[入力メソッド]が none だったのが、SCIM になっていました。(SCIMはLinuxで定番のインプットメソッドだそうです。最近は、ibusというのがシェアを広げてるようです)

これで、GNOME環境で、Ctrl+Spaceキーを押下すると日本語入力ができるようになりました。


参考:
CentOS5.3の日本語化 - SUNRISE5.0 TechNote
日本語入力システム(インプットメソッド)とは|IMEとの違い
[PR]
by jehoshaphat | 2014-01-25 06:36 | Linux | Trackback | Comments(0)
(Linux)最小構成でインストールしたCentOS5でGNOMEを利用できるようにする手順
CentOS5.9の環境ですが、当初はGUI環境なんぞいらねーと思っていたのですが、GUI環境が必要という話になって来ました。

後からX11とGNOME Desktopのインストールをみると、以下のようにyumでXWindowとGNOMEを入れたらいいと有りました。

# yum groupinstall "X Window System" "GNOME Desktop Environment"


しかし、どうもGNOMEが入っているような感じがしません。
ん?とおもって調べるとCentOSインストール後に後からGNOMEをインストールする:ぴろにっき:So-netブログにあるように、日本語環境の場合、"GNOME Desktop Environment"ではなく、"GNOME デスクトップ環境" としないといけないようです。(インストールできるグループリストは yum grouplist コマンドで確認できます。)
なので、正しくは以下のようにしなければいけなかったということですね。
何やら日本語を入れるのは気持ち悪いですが。。。


# yum groupinstall "X Window System" "GNOME デスクトップ環境"


これで、/etc/inittab でランレベルを3から5にして再起動します。

id:3:initdefault:
  ↓
id:5:initdefault:


こうすれば、GNOMEが利用できるようになりました。
[PR]
by jehoshaphat | 2014-01-24 06:35 | Linux | Trackback | Comments(0)
(Linux)NICのリンク速度を知りたい
Linuxでネットワークインターフェースのリンク速度を表示する方法です。ethtoolコマンドを使うといいようです。

# ethtool em1
Settings for em1:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 2
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

上の例だと1GbpsのNICですが、繋がっているハブが100Mbpsなのでリンク速度は100Mbpsになっています。

参考:
NICのリンク速度等詳細な情報を確認する方法:ぴろにっき:So-netブログ
[PR]
by jehoshaphat | 2014-01-16 00:38 | Linux | Trackback | Comments(0)
(Linux)CentOSでchkconfigできないプログラムの自動起動方法
デーモンプログラムをパッケージではなくソースからインストールすると、ini.d配下にある起動スクリプトはできませんし、 chkconfig のリストにでてきません。
起動スクリプトはソフトによって異なるのでネットで情報得て作成するとして、マシンの電源投入時にデーモンを実行するには、/etc/rc.d/rc.local ファイルの末尾行に実行ファイルのパスを設定すればいいようです。


# vi /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl start ←追記
/etc/init.d/smokeping start ←追記



参考:
rc.local Linux(Cent OS)で起動時に自動実行するスクリプトの登録
LINUXの電源のON,OFFのやりかた、ONの時に自動的にプログラムが起動するようにする
[PR]
by Jehoshaphat | 2012-11-28 23:16 | Linux | Trackback | Comments(0)
(Linux)CentOSでパッケージグループ単位でインストールする
RedHatEnterpriseLinux6.0のクローンであるCentOS6をインストールしたわけですが、PCのスペックが低すぎてテキストインストールとなってしまいました。
テキストインストールだと最低限のパッケージしか入りません。

インストール後にちまちま個別にパッケージ入れるのも面倒です。

それで、Anacondaのインストーラみたいにパッケージグループ単位でインストール出来ないものか調査したところ、yum コマンドで出来るようです。

まず、以下コマンドでインストール済み、及び、インストール可能なグループを表示できます。


# yum grouplist
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
* base: ftp.jaist.ac.jp
* extras: ftp.jaist.ac.jp
* updates: ftp.jaist.ac.jp
base | 3.7 kB 00:00
extras | 951 B 00:00
updates | 3.5 kB 00:04
base/group_gz | 206 kB 00:00
Installed Groups:    ←インストール済み
Optional packages
電子メールサーバー
Available Groups:    ←未インストール
CIFS ファイルサーバー
Eclipse
Emacs
FCoE ストレージクライアント
FTP サーバー
Infiniband のサポート
Java プラットフォーム
KDE デスクトップ
MySQL データベースクライアント
MySQL データベースサーバー
NFS ファイルサーバー
PHP サポート
Perl のサポート
PostgreSQL データベースクライアント
PostgreSQL データベースサーバー
SNMP サポート
TeX のサポート
TurboGears アプリケーションフレームワーク
WBEM サポート
Web サーバー
Web サーブレットエンジン
X Window System
iSCSI ストレージクライアント
...省略
Done



任意のパッケージグループをインストールするには以下のようにすればいいようです。

yum groupinstall "FTP サーバー"


なお、CetOS6.0の場合、"開発ツール " だけ、なぜか全角スペースが後に入っていたので注意が必要です。
なんか日本語で指定するのはちょっと気持ち悪いですね。

例えばテキストインストールして、X Window System とGNOMEデスクトップを使いたい場合は以下のようにします。


yum groupinstall "X Window System" "デスクトップ"




groupremove で削除、groupinfo でパッケージ中身を表示 するようです。

参考:
@IT:yumで関連パッケージをまとめて追加/削除するには
[PR]
by Jehoshaphat | 2012-11-27 23:14 | Linux | Trackback | Comments(0)
(Linux)CentOS6では参照するDNSサーバの書き方が変わった?
RedHatEnterprise6.0のクローンであるCentOS6ですが、名前解決のために指定するDNSサーバのアドレスの指定方法が変わったようです。

今までは、/etc/resolv.conf に nameserver xxx.xxx.xxx.xxx としていました。
しかし、resolv.conf にはこう書いています。

# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com


どうやら、/etc/sysconfig/network-scripts/ のインターフェイスの設定に DNS1=xxx.xxx.xxx.xxx という感じで書かないと行けないようです。

こんな感じです。

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0B:xx:xx:xx:xx"
IPV6INIT="yes"
IPV6_AUTOCONF="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR="192.168.0.100"
NETMASK=255.255.255.0
DNS1=192.168.0.1
DNS2=192.168.0.2
GATEWAY=192.168.0.254


こうして、再起動すると、/etc/resolv.conf に自動的に設定が書かれていました。
[PR]
by Jehoshaphat | 2012-11-27 23:13 | Linux | Trackback | Comments(0)
(Linux)PXEサーバ(Ubuntu系)を立ててネットワークブートでCentOS6をインストールしてみた
今回、光学ドライブがなくUSBブートもできない端末に、RedHatEnterpriseLinux6.0のクローンである CentOS6.0 をインストーすることになりました。
この端末は幸いにも、ネットワークブート(PXE)に対応してしたので、そこからのインストールを試みてみました。


PXEサーバは Ubuntu10.04 をベースにしている EcoLinux10.04 を使うこととしました。
PXEサーバに必要なのは、DHCPサーバ、TFTPサーバ、HTTPサーバとなるので、これらをまずインストールします。

●TFTPサーバ
当初、xinetdスーパーサーバを介して、tftpd を使おうかと思ってました。
しかし、いざtftpdで環境構築するとネットワークブートしたクライアント側で「TFTP server does not support the tsize option 」というエラーが出てブートに失敗します。
これは Debian 系のTFTPDは tsize オプションをサポートしてないためのようです。
(Ubuntu系で tftp をインストーするには、 apt-get install tftpd でできます)

それで、TFTPサーバとしては tftpd-hpa を使うことにしました。
まず、インストールです。

apt-get install tftpd-hpa


公開するディレクトリを作成後、設定ファイルを修正します。

mkdir /tftpd

vi /etc/default/tftpd-hpa

TFTPD_DIRECTORY="/tftpd" ←公開するディレクトリ
RUN_DEAMON="yes" ←追記

service tftpd-hpa start ←サービス開始

ちゃんと動いているかどうかは、netstatでポートを確認するといいかもしれません。

netstat -an | grep 69

また、ダミーファイルを公開ディレクトリに配置し、WindowsPCのコマンドプロンプトでダウンロードできるか確認もできます。

tftp サーバIP get a.txt



●DHCPサーバ
PXEクライアントは起動時にDHCPサーバからIPを取得する必要がありますが、ルータ等のDHCP機能では細かいオプションが指定できないため、自前で立てる必要があります。
既にDHCPサーバがLAN内にある場合は運用に気を付けないとおかしなことになります。
なので、PXEブートするときだけ別LANにして、DHCPサーバを起動するような方法をとったほうが良いかもしれません。

インストールは以下のようにします。

apt-get install dhcp3-server

DHCPサーバの設定ファイルを変更します。

vi /etc/dhcpd.conf


subnet 192.168.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option time-offset -18000;
filename "/linux-install/pxelinu.0" ←ロードするファイル名
next-server 192.168.0.2 ←TFTPサーバのIP(TFTP,DHCPサーバが同一マシンなら、自身のIPでもOK)
range dynamic-bootp 192.168.0.100 192.168.0.100; ←割り当てるIP範囲
default-lease-time 21600;
max-lease-time 43200;

}


設定が終われば、DHCPサーバを起動します。

service dhcp3-server start


なお、このままだとPC起動時にもDHCPサーバが立ち上がってしまうので、自動起動しないようにしておきます。

update-rc.d dhcp3-server disable


●Apache
CentOS自体のインストールはHTTPを使って行います。(FTPでもいいのですが)
EcoLinuxにはWEBサーバが入ってないので、インストールします。

apt-get install apache2

service apache2 start


●PXEブートローダ配置
PXEブートローダは syslinux パッケージに入っているようです。
EcoLinuxではデフォルトで入っていました。

PXEブートローダファイルを、TFTPの公開ディレクトリに配置します。
また、CentOSのISOファイルを、Apache公開ディレクトリにマウントし、ブートイメージをTFTP公開に配置します。

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux_install/

mkdir /var/www/centos6
mount -t iso9660 -o loop /home/hoge/CentOS-6.0-i386-bin-DVD.iso /var/www/centos6

cp /var/www/centos6/images/pxeboot/vmlinuz /tftpboot/linux-install
cp /var/www/centos6/images/pxeboot/initrd.img /tftpboot/linux-install


PXEブートの設定ファイルを作成します。

mkdir /tftpboot/linux-install/pxelinux.cfg
vi /tftpboot/linux-install/pxelinux.cfg/default

↓ファイルの中身
default centos6
label dentos6
kernel vmlinuz
append load initrd=initrd.img devfs=nomount


●クライアントにて実行
後は、クライアントでネットワークブートを実施します。
(場合によってはBIOSでネットワークブートの優先度を上げる必要があるかもしれません。PCによってはBIOS起動の画面でファンクションキー押せばネットワークブートするのもあるようです)

DHCPよりIPが割り振られて、TFTP経由でPXEブートローダが読み込まれ、インストーラが起動します。

言語設定と、キーボード設定を行い、インストール元で URL を選択します。
URL欄で、ウェブサーバのCentOSをマウントしているディレクトリ( http://svip/centos6 )を入力します。
すると、Anacondaが立ちがありいつものインストール画面となります。(PCのグラフィックスペックが低い場合はテキストインストールになってしまいますが。。。)


ちょっとサーバを立てるのが手間ですが、非常に便利ですね。


参考:
Ubuntu Weekly Recipe:第47回 Ubuntuのネットワークインストールとapt-mirrorの活用|gihyo.jp … 技術評論社
きままなひとりごと Ubuntu 11.04 PXEブート環境の構築
第1回 ネットワーク経由でCentOSを導入する - 旧型ノートPCで本格サーバーを作ろう:ITpro
@IT:PXEネットワークブート用サーバを構築するには RedHat系でPXEサーバとする例です。
PXEネットワークブートでCentOSをインストール/kickstartによるインストール自動化 - Layer8 Reference RedHat系でPXEサーバとする例です。

Windows XP のネットワークインストール (Windows PE 3.0 使用) - regerege メモ帳 PXEでWindowsをインストールする例ですが、Windowsはちょっと面倒くさそうです。
[PR]
by Jehoshaphat | 2012-11-26 01:11 | Linux | Trackback | Comments(0)
(Linux)普通のsambaサーバ構築メモ
LinuxでSambaを使って、いわゆる一般的なスタンドアロン共有フォルダサーバ(ローカルパスワード認証)を構築するためのメモです。
CentOS6.3で、Sambaのバージョンは 3.5 です。


まず、smb.confを編集します。

# vi /etc/samba/smb.conf


[global]
workgroup = WORKGROUP
server string = 任意の文字列

#↓sambaサーバ名
netbios name = natsumikan

#↓アクセスを許可するネットワークアドレスを指定
hosts allow = 127. 192.168.77.

log file = /var/log/samba/log.%m
#↓ログサイズ(KB)
max log size = 1024

#認証設定
security = user

(※認証方式には以下がある。
share:共有を一種類の固定ユーザを使ってアクセス。パスワードだけでアクセス制御。
user:共有を個別のアカウント(またはゲストユーザ)を使ってアクセス。一般的なスタンドアロンの共有フォルダ。今回はこれを使用。
ads:共有を個別のアカウントを使ってアクセスするが、認証はActiveDirectoryドメインで行う。
domain:共有を個別のアカウントを使ってアクセスするが、認証はWindowsドメインで行う。
server:共有を個別のアカウントを使ってアクセスするが、WindowsNT,Smabaで認証を行う。

#↓プリンタは使わないので
load printers = no



あとはsmb.confの続きのところに共有の設定を書いていきます。
(今回は smb.conf に共有の設定を書きましたが、本来は別ファイルに定義した方がよいです。詳しくは、smb.confを編集して共有の作成をするべからずを参考に...)


(smb.conf続き)
[hoge]
comment = test_sahre
browseble = yes
path = /var/samba/share_dir/hoge
writable = yes
#↓読み書き可能なユーザ、またはグループを指定する
write list = @group1 , user1
#↓読み込みのみ可能なユーザ、またはグループを指定する
read list = user2
#↓アクセス可能なユーザ、またはグループを指定する
valid users = @group1 , user1 , user2
#↓明示的にアクセス拒否するユーザ、またはグループを指定する
invalid users
#↓ファイル作成時のマスクを8進数で設定。規定値は744
create mask = 777
#↓ディレクトリ作成時のマスクを8進数で設定。規定値は755
directory mask = 777
#↓大文字、小文字が混在する場合、全て小文字とみなす
default case = lower
#↓大文字、小文字が異なっていても区別せず同一ファイルとしてみなす
case sensitive = no
#↓Windows側が大文字、小文字を区別した場合、それに従う
preserve case = yes
(※グループを指定する時はグループ名の先頭に「@」が必要。)


security = user (ローカル認証)の場合は、共有フォルダにアクセスするためのUnixユーザを作成しておく必要があります。
共有フォルダアクセスだけが目的のユーザあれば、ホームディレクトリ必要ない+シェルログインさせる必要ないユーザを作成すればセキュリティ的にもいいでしょう。
以下のようにして、ホームディレクトリ必要ない+シェルログインさせる必要ないユーザを作成できます。

↓Unixユーザを作成
# useradd -d /dev/null -s /sbin/nologin username
↓Unixユーザのパスワード作成
# passwd username
↓sambaのアカウントを作成し、パスワードを設定
# smbpasswd -a username
New SMB password: (パスワード入力)
Retype new SMB password:(パスワード入力)

任意のユーザのパスワード変更する時は以下のコマンドにします。
# smbpasswd ユーザ名


sambaユーザ一覧を表示するには以下コマンドを使います。
# pdbedit -L



共有フォルダへのアクセスをグループ単位で制御するためには、グループを追加し、グループにユーザを所属する必要があります。

# groupadd gp_piyo  ←グループ作成
# usermod -G gp_piyo user_a  ←グループにユーザ追加


余談ですが、現在Samba接続しているセッション一覧を表示するにはsmbstatusコマンドでわかるようです。

# smbstatus
Unknown parameter encountered: "browseble"
Ignoring unknown parameter "browseble"

Samba version 3.5.10-125.el6
PID Username Group Machine
-------------------------------------------------------------------
3063 user_a user_a test-machine (::ffff:192.168.77.99)

Service pid machine Connected at
-------------------------------------------------------
hoge 3063 test-machine Fri Oct 5 00:23:45 2012

Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
3063 502 DENY_NONE 0x100081 RDONLY NONE /var/samba/share_dir/hoge . Fri Oct 5 00:23:45 2012



慣れれば簡単に構築できます。

参考:
Sambaサーバの設定
ASCII.jp:ファイルサーバの文字化けの解消方法は?|サーバトラブル解決のセオリー
利用ユーザの作成・削除
ユーザ・グループの管理 - Technical Tips -
[PR]
by Jehoshaphat | 2012-10-30 21:21 | Linux | Trackback | Comments(0)
(Linux)さくらのVPSで日本語を使用可能にする
さくらのVPS 1Gを契約して CentOS6 を使っているんですが、コンソールで日本語が表示されません。

デフォルトではさくらが用意しているLinuxは日本語設定がされていないようなので、i18nファイルで以下のように日本語を使うことを設定します。

# vi /etc/sysconfig/i18n

LANG="ja_JP.UTF-8"  ←追記


これで、再ログインすることコンソールで日本語が表示されるようになります。
[PR]
by Jehoshaphat | 2012-10-22 01:14 | Linux | Trackback | Comments(0)
(Linux)LUKSでファイルシステムを暗号化してみた
さくらのVPS 1G(CentOS6.3 x64) でsambaを使ってファイルサーバを立てようと思ったんですが、重要なデータも置くことがあるため、ファイルシステムレベルで暗号化をして見ることにしました。

さくらのVPSは標準OS(プレインストール)ではパーティションが既にきられているので、一旦カスタムOSで再インストールを行い、暗号化用のパーティションを作成しておきます。(今回使うdm-cryptはブロックデバイスに対して暗号化をかける仕組みなので、暗号化をかけるパーティションを用意する必要有り)

今回は以下の様なパーティションでインストールしました。
(fdisk後継の parted で確認した時のパーティション情報です。パーティションテーブルがGPTなもんで...)

# parted /dev/vda

(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 1049kB 263MB 262MB ext4 Linux filesystem boot ←/boot
2 263MB 2411MB 2147MB linux-swap(v1) Linux swap
3 2411MB 45.4GB 42.9GB ext4  ← /
4 45.4GB 88.3GB 42.9GB ext4  ← /var
5 88.3GB 107GB 19.1GB ext4  ← 暗号化対象パーティション

Linuxの暗号化方式もいくつかあるようですが、今回はカーネルの2.6系列で統合されたdm-cryptを使った暗号化ファイルシステムの標準的な仕様であるLUKSを使うことにしました。
他の暗号化方式としてはループバックデバイス(実装:loop-AES),FUSE(実装:CryptoFS,EncFS)、eCryptfs(実装:eCryptfs)などがあるようです。
このあたりの話はファイルシステムごと暗号化する方法 - SourceForge.JP Magazine : オープンソースの話題満載が参考になります。


LUKSの操作をするには、cryptsetup コマンドを使います。

まず、以下の書式でパーティションを luks で暗号化します。

# cryptsetup luksFormat [-c 暗号化方式] [-s 鍵の長さ] 暗号化対象デバイスファイル

-c、-s指定しないと以下の初期値になります。
暗号化方式:aes-cbc-essiv:sha256
鍵の長さ:256
(128にしようとしたら、以下のエラーでて出来ませんでした。)

device-mapper: reload ioctl on failed: No such file or directory
Failed to setup dm-crypt key mapping for device /dev/vda5.
Check that kernel supports aes-cbc-essiv:sha128 cipher (check syslog for more info).


今回は、以下のようにしました。

# cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 /dev/vda5

WARNING!
========
This will overwrite data on /dev/vda5 irrevocably.

Are you sure? (Type uppercase yes): YES ←大文字で入力すること!
Enter LUKS passphrase: ←暗号化のパスワード入力
Verify passphrase: ←暗号化のパスワードを確認入力


暗号化が完了したら接続してみます。
LUKSパーティションへの接続は、以下のようにします。

# cryptsetup luksOpen デバイス デバイスファイル名(適当な名前)

デバイスファイル名はなんでも構いません。
今回と以下のような感じ。

# cryptsetup luksOpen /dev/vda5 luks
Enter passphrase for /dev/vda5: ←cryptsetup luksFormatに設定したパスワード入力

これで接続完了です。
/dev/mapper/デバイスファイル名 が作成されます。
今回だと、/dev/mapper/luks ですね。

そして、暗号化デバイス上にファイルシステムの作成します。
今回は ext4 にしました。

# mkfs -t ext4 /dev/mapper/luks
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1164592 inodes, 4654080 blocks
232704 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
143 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.


ファイルシステム作成が終われば、マウントを行います。

# mount /dev/mapper/luks /mnt/secure/

これで使用可能になりました。

今回は初回なのでファイルシステムのフォーマットがありましたが、次から使うときは以下の様な流れになります。

# cryptsetup luksOpen /dev/vda5 luks ←接続
# mount /dev/mapper/luks /mnt/secure/ ←マウント


使い終われば以下のようにパーティションをアンマウントし、暗号化デバイスを削除する必要があります。

# umount /mnt/secure
# cryptsetup luksClose luks

これで、/dev/mapper/luks が削除されます。




OS起動時に自動マウントさせる
いちいち手動で接続、マウントしていると面倒なので、OS起動時に自動マウントさせるようにしました。
そのために、パスワードだけでなくキーファイルで認証できるようにします。(LUKSはキースロットが複数あるので、複数のパスワードやキーファイルが指定できます)


以下のようにキーファイルを作成します。乱数で、1024バイトのファイルを作成してます。

# dd if=/dev/urandom of=/boot/luks_key bs=1 count=1024

(キーファイルは /boot パーティションに配置しておきます。当初別パーティションに分けた /var 配下においてたんですが、自動マウントさせようとするとどうもうまく行かなかったので。。。)
安全のためキーファイルの権限を600か400にします。

# chmod 600 /boot/luks_key

LUKSパーティションにキーファイルの登録します。

# cryptsetup luksAddKey /dev/vda5 /boot/luks_key
Enter any passphrase: ←最初の設定したパスワード入力


以下コマンドでキーファイルが登録されたか確認します。

# cryptsetup luksDump /dev/vda5
LUKS header information for /dev/vda5

Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK iterations: 23875
UUID: 5c7a088a-c452-4229-aeb3-c81d15e0e4b5

Key Slot 0: ENABLED ←ここが最初に指定したパスワード認証の設定
Iterations: 95873
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED ←●ENABLEDになっていればkeyfileが登録されている。
Iterations: 128900
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: 264
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED


登録したキーファイルでマウントできることを確認します。
(すでにマウントされているなら、アンマウントし暗号化デバイスを削除しておきます)

# cryptsetup luksOpen /dev/vda5 luks --key-file /boot/luks_key
# mount /dev/mapper/luks /mnt/secure/

これでマウントできればキーファイルでの認証OKということになります。


いよいよ暗号化ボリュームを自動でマウントする方法です。
/etc/crypttab に設定を書くことでOS起動時にLUKSへの接続ができるようです。
書式は、以下のようになります。

[cryptsetupデバイス名] [/dev名] [キーファイルへのパス] [LUKS拡張が必要である旨]


今回は以下のようにしてみました。

# vi /etc/crypttab
luks /dev/vda5 /boot/luks_key luks,timeout=5



さて、次はファイルシステムのマウントです。
最初は/etc/fstabで以下のように書いてみました。

# vi /etc/fstab
/dev/mapper/luks /mnt/secure/ ext4 defaults 2 2

しかし、/etc/fstab使ってリブートすると以下のようにエラーになってしまいました。

Mounting local filesystems: mount: special device /dev/mapper/luks does not exist [FAILED]
Enabling local filesystem quotas: [ OK ]
modprobe: FATAL: Error inserting padlock_sha (/lib/modules/2.6.32-279.9.1.el6.x86_64/kernel/drivers/crypto/padlock-sha.ko): No such device

fstabの末尾の数字の設定によっては、起動時に他のパーティションも読み取り専用になってしまうこともあります。
(末尾の数字の意味については@IT:/etc/fstabに記述されている数字の意味を参照)
もしそうなったら "mount -o remount ,rw /" コマンドで書き込み可能でマウントしなおし、/etc/fstab を元に戻します。)


どうも /etc/fstab ではマウントできないようなので(多分、crypttabのマウントの前にfstabのマウントが走るため)、rc.local(システム起動時の最後に読み込まれる)でマウントするようにしました。

# vi /etc/rc.local

mount /dev/mapper/luks /mnt/secure/


リブートしてマウントできてるか確認してみます。

# mount
/dev/vda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/vda1 on /boot type ext4 (rw)
/dev/vda4 on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/luks on /mnt/secure type ext4 (rw)

↑最下行見てみるとちゃんとマウントできてますね。


余談ですが、cryptsetup isLuksコマンドを使うと指定したパーティションがLUKSフォーマットかどうか確認できます。

# cryptsetup isLuks /dev/sdc
# echo $?
0 ←0が表示されればLUKSフォーマットです。



参考:
LUKS - GreenLeaf:
crypttab - GreenLeaf:
Markopee::Notebook: Linux で暗号化ファイルシステムを使う
[PR]
by Jehoshaphat | 2012-10-22 01:13 | Linux | Trackback | Comments(0)