まとめて複数のパスワードを生成する

for文で繰り返し実行

以前紹介したランダムパスワードを自動生成するコマンドのテクニックでランダムパスワードが生成できます。
サーバ管理者としては、複数のユーザ向けに大量のパスワードを生成しなければいけない場面がたまにあります。
そんなとき、1件ずつ作ってコピペするのは大変ですね。端末上でfor文を回してまとめて作りましょう。

[user@myserver] $ for var in 1: 2: 3:
> do
> echo -n $var
> mkpasswd
> done
1:)H0rj1Sgx
2:9Oz8zu%gO
3:ve%5yH7xC

1行で書いて実行もできます。

[user@myserver] $ for var in 1: 2: ; do echo -n $var; mkpasswd; done
1:)H0rj1Sgx
2:9Oz8zu%gO
3:ve%5yH7xC

ランダムパスワードを自動生成するコマンド

mkpasswd
head -c 8 /dev/random

パスワードを作るときに、キーボードをガチャガチャ押して「rdftgyふじこlp@;」とかやってませんか?
ちゃんとランダムでセキュリティ上安全なパスワードを作りましょう。

mkpasswdを使う

mkpasswd

このコマンドで、ランダムな文字列が生成されます。
もしこのコマンドが使えなかったら、expectパッケージがインストールされていません。
yumでインストールしておきましょう。

# yum install expect

さてこのパスワード、デフォルトでは全9文字(小文字2、大文字2、数字2、特殊文字1)です。
文字数や使用文字の種類は、オプションで細かくカスタマイズすることができます。

例えば、「数字2+アルファベット6で全8文字のパスワード」を作りたい場合は、

# mkpasswd -l 8 -c 6 -d 2 -C 0 -s 0
riwp36jh

となります。
その他オプション一覧

  • -l 数字 … パスワードの長さを指定(デフォルトは9)
  • -d 数字 … パスワードに含める数字の数を指定(デフォルトは2)
  • -c 数字 … パスワードに含めるアルファベット(小文字)の数を指定(デフォルトは2)
  • -C 数字 … パスワードに含めるアルファベット(大文字)の数を指定(デフォルトは2)
  • -s 数字 … パスワードに含める特殊文字(記号など)の数を指定(デフォルトは1)
  • -2 … パスワードが、右手と左手で交互に入力される文字配列となる。(入力時に手元を見られて盗まれる可能性を低くするため)

最後の-2オプションは「へぇ~」という感じですね。

# mkpasswd -l 6 -c 6 -d 0 -C 0 -s 0 -2
yapsng

/dev/random を使う

Linuxが、様々な処理で乱数を必要とする時のために、/dev/random という乱数発生器が存在します。
ここから、headコマンドで8バイトほど取り出して、ランダムな8文字を作り出すことができます。

# head -c 6 /dev/random | uuencode -m –
begin-base64 644 –
FgGWD/8x
====

1行目と2行目はヘッダとフッタなので無視して構いませんが、気にる人や自動処理するときなどのために、sedに渡して削除して出力することもできます。

# head -c 6 /dev/random | uuencode -m – | sed -n ‘2s/=*$//;2p’
+VTO0nVo
-bash: uuencode: command not found

「uuencodeがない」と表示される場合は、sharutilsパッケージをインストールします。

[root@myserver ]# yum install uuencode                                                                                                                                                
Loaded plugins: downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: www2.atomicorp.com
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
atomic                                                                                                                                                                | 1.9 kB     00:00     
base                                                                                                                                                                  | 1.1 kB     00:00     
extras                                                                                                                                                                | 2.1 kB     00:00     
updates                                                                                                                                                               | 1.9 kB     00:00     
Setting up Install Process
No package uuencode available.
Nothing to do
[root@rad-xen-vweb10 ~]# yum install sharutils
Loaded plugins: downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: www2.atomicorp.com
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.
--> Running transaction check
---> Package sharutils.x86_64 0:4.6.1-2 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================
 Package                                         Arch                                         Version                                       Repository                                  Size
=============================================================================================================================================================================================
Installing:
 sharutils                                       x86_64                                       4.6.1-2                                       base                                       203 k

Transaction Summary
=============================================================================================================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 203 k
Is this ok [y/N]: y
Downloading Packages:
sharutils-4.6.1-2.x86_64.rpm                                                                                                                                          | 203 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : sharutils                                                                                                                                                             1/1 

Installed:
  sharutils.x86_64 0:4.6.1-2                                                                                                                                                                 

Complete!

ifconfigでネットワーク設定の状態を確認する

# ifconfig

ifconfigコマンドで、IPアドレス、ブロードキャストアドレスなどのネットワーク情報を、インターフェイスごとに確認することができます。ただし、無効になっているインターフェイスについては、存在していても表示されません。
設定済みのすべてのインターフェイスを確認するときは、allの-aオプションを使用します。

[root@myserver ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:99:0E:CC:0D:99  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3063 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:43998832 (41.9 MiB)  TX bytes:149161635 (142.2 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:169 errors:0 dropped:0 overruns:0 frame:0
          TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:11087 (10.8 KiB)  TX bytes:11087 (10.8 KiB)

LinuxをインストールできるマシンかどうかCDブート版で調べる

古いマシンを引っ張りだしてきてLinuxマシンにしよう! と思ったものの、インストールしてみて使えなかったら悲惨ですね。
CentOSやFedoraをインストールする前に、CDブートできるLinuxで事前に確認してみましょう。
CDブート可能なディストリビューションとしては、

KNOPPIX
Ubuntu
などがあります。

これらが動けばCentOSもほぼ動作するでしょう。(同一のディストリビューションではないので100%保証はできませんが)
続きを読む

LinuxのOS/ディストリビューションを確認するコマンド

cat /etc/issue
cat /etc/ディストリビューション-release

使用しているディストリビューションを調べるコマンドというのは、実は存在しません。
ただし、/etc/以下に、ディストリビューションのバージョンを記述したファイルが必ずありますので、catで参照します。
続きを読む

aliasとは

コマンドを定義する別名をaliasという

aliasを利用すれば、よく使うコマンドを別名として登録して、簡単に使うことができます。
よく設定されているのは、
ll

ls -l
(ファイル一覧をリスト形式オプションで)を呼び出すようになっているaliasですね。

現在どんなaliasが設定されているかは、aliasコマンドで確認できます。

現在のaliasのリストを表示する

[user@myserver ~]$ alias
alias ll=’ls -l –color=tty’
alias ls=’ls –color=tty’

独自のaliasを設定する

自分用のaliasを独自に設定する場合は、ホームディレクトリにある.bashrcに記述します。

例えば、viコマンドでvimを実行したい時はこんなふうに記述します。

$ vi ~/.bashrc
alias vi=’vim’
# User specific aliases and functions
alias vi ="vim"

記述して保存したら、一旦ログインし直すか、sourceコマンドで先程の.bashrcを実行することで反映されます。

source ~./bashrc

シングルユーザモードで起動する

起動画面で[a]を押してGNU GRUBメニューで設定

途中で切り替えるのではなく、最初からシングルユーザモードで起動する場合は、GRUBを使います。CentOSでは起動時には直接GRUBが見えないようになっているので、青い画面が出た後にて機能なキーを押すと「GNU GRUB」というメニューになります。

起動するカーネルを選択して[a]を押すと、次のようなコマンド入力画面が表示されます。

grub append> ro root=LABEL=/

ここにシングルユーザモードの[s]を追加して[Enter]を押すと起動が開始します。

grub append> ro root=LABEL=/ s Enter

作業終了後は、Ctrl + d でログアウトして通常のランレベルに切り替えられます。

使用しているOSを調べるコマンド(nmap、uname)

unameで調べる

OSのカーネルは、unameに-aオプションを付けて調べることができます。

[user@myserver ~]$ uname -a
Linux myserver 2.6.18-274.7.1.el5xen #1 SMP Thu Oct 20 17:06:34 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

nmapで調べる

もう一つ、nmapを使う方法もあります。
nmapはポートスキャン用のコマンドですが、これでマシンのOSを調べることができます。
OS調査オプションの-Oを付けることによって、OSを調査します。

ただし、これはあくまで「調査」して推測するコマンドなので、100%正しいバージョンが分かるわけではありません。
そのかわり、外部サーバーに対して実行することもできます。

[root@myserver ~]# nmap -O myserver
Starting Nmap 6.01 ( http://nmap.org ) at 2013-01-09 01:48 JST
Nmap scan report for myserver (210.000.000.000)
Host is up (0.000025s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
10000/tcp open snet-sensor-mgmt
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:kernel:2.6
OS details: Linux 2.6.26
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds

「Running: Linux 2.6.X」
「OS details: Linux 2.6.26」
と出ました。
nmapコマンドは、/usr/share/nmap/nmap-os-db の中からTCP/IP fingerprintをもとに推測を行ないます。

command not found の場合は yum install nmp で事前にnmpをインストールします。

シングルユーザモードに切り替える

シングルユーザモードは、一般ユーザは利用できないモードです。ランレベル1で指定されています。全てのDaemonが停止した状態で起動しますが、ファイルシステムのマウントは実行されます。メンテナンスやバックアップの際に使用します。Windowsで言うところの「セーフモード」ですね。

シングルユーザモードになる

[root@myserver ~]# telinit 1

作業が終わったら、

telinit 3

で元のランレベル1に戻します。

(※注:VPSでリモート接続している場合、「telinit 1」した瞬間に操作できなくなりますのでご注意を。)