「Linux」カテゴリーアーカイブ

viの文字化け

~/.vimrcを作成して以下のように記述する。

set encoding=utf-8
set fileencodings=iso-2022-jp,shift-jis,euc-jp

viコマンドリファレンス

Vi機能別主要コマンドリファレンス

^  現在行の先頭に移動
$  現在行の最後に移動
G  最後の行に移動
置換
:s/<置換される文字列>/<置換後の文字列>/<オプション>
オプション
g  すべての文字列を置換する
c  置換する前に確認する
現在行から後ろにあるすべての「abc」を「123」に変更
:s.,$s/abc/123/g
ファイル内のすべての「html」を「HTML」に変更
:%s/html/HTML/

ログを表示するのに便利なtail

UNIXのtailコマンドがログを表示するのに便利。
Windows用のtailコマンドは、
http://unxutils.sourceforge.net/(ダウンロードはリンク切れ?)
GUIベースは
http://tailforwin32.sourceforge.net/

tail -f [ファイル]

tailのヘルプ

使用法: tail [オプション]... [ファイル]...
各々の FILE の最後の 10 行を標準出力に書き出します.
複数の FILE が指定された場合は, ファイル名がヘッダ情報として出力されます.
FILE が指定されないか, FILE が - の場合は, 標準入力が読まれます.
長いオプションに必須の引数は短いオプションにも必須です.
      --retry              keep trying to open a file even if it is
                           inaccessible when tail starts or if it becomes
                           inaccessible later; useful when following by name,
                           i.e., with --follow=name
  -c, --bytes=N            output the last N bytes
  -f, --follow[={name|descriptor}]
                           ファイルが大きくなるたびに追加されたデータを出力
                           -f, --follow および --follow=descriptor は同じ
  -F                       --follow=name --retry と同じ
  -n, --lines=N            最後の 10 行ではなく N 行を出力
      --max-unchanged-stats=N
                           --follow=name とともに使い, 入力ファイルが削除
                           されていたり名前が変更されていないかどうかの確認を
                           N (標準 5) 回繰り返した後に大きさが変わっていない
                           ファイルを再度開く (これは rotate されたログ
                           ファイルなどに有効である)
      --pid=PID            with -f, terminate after process ID, PID dies
  -q, --quiet, --silent    never output headers giving file names
  -s, --sleep-interval=S   with -f, sleep for approximately S seconds
                           (default 1.0) between iterations.
  -v, --verbose            always output headers giving file names
      --help     この使い方を表示して終了
      --version  バージョン情報を表示して終了
If the first character of N (the number of bytes or lines) is a `+',
print beginning with the Nth item from the start of each file, otherwise,
print the last N items in the file.  N may have a multiplier suffix:
b 512, k 1024, m 1024*1024.
--follow (-f) を指定すると, tail は標準でファイル記述子を追尾します. つまり
tail されたファイルの名前が変更されても, tail はその終端を追いかけ続けます.  この標準の動作は, ファイル記述子ではなく, そのファイルの実態を追いかけたい場合
には好ましくありません (例えばログの rotate など). この場合は --follow=name を
を使ってください. これにより tail コマンドは, 何か他のプログラムによって
ファイルが削除されたり再作成されたかどうかを調べて定期的にファイルを開き直す
ことで, その名前のファイルを追いかけるようになります.

Windows

スーパーユーザになれるユーザを限定する

1. /etc/pam.d/suファイルを開き、6行目の先頭のコメントを外す。

auth            required        pam_wheel.so use_uid

2. スーパーユーザになることを許可したいユーザをwheelグループに追加する。

vigr /etc/group

※viではなくvigrを使うと、ファイルのロックが行われる。

wheel:x:10:root,dai

ユーザ名をカンマで区切って追加する。
参考: FedoraCore4ビギナーズバイブル p.165

SSHで公開鍵認証を使う

1. ssh-keygen コマンドで鍵ペアを作成する

$ ssh-keygen -t rsa

秘密鍵の保存先を聞いてくるので、デフォルトのままEnter。
パスフレーズを2回入力。
すると、以下の鍵ペアのファイルが ~/.ssh/ に作成される。

  • id_rsa
  • id_rsa.pub

2. SSHサーバに公開鍵を登録する

ユーザのホームディレクトリに1.で作成した公開鍵を転送する。(FTPで転送してもよい。)

$ scp ~/.ssh/id_rsa.pub user@host:

サーバ側で、catコマンドとリダイレクションを使って転送した公開鍵を登録する。(登録するファイルは ~/.ssh/authorized_keys)

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

「~/.ssh」ディレクトリと「~/.ssh/authorized_keys」はオーナーだけに読み書き可能なようにパーミッションを設定する。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
  • クライアント側のユーザのホームディレクトリのパーミッションにも注意する。所有者以外の書込み権を設定してあるとだめ。
    たとえば、/home/hogeのパーミッションが777の場合、公開鍵認証でsshログインしようとすると、
    Permission denied (publickey,gssapi-with-mic).
    というエラーになる。この場合、サーバ側のログ(/var/log/secure)では
    Authentication refused: bad ownership or modes for directory /home/hoge
    となっていて、/hoem/hogeのパーミッションに問題があるということ。
    所有者以外の書込み権を設定してあるとだめ。700、711、755にすればOK。

3. 公開鍵認証方式でログインする

$ ssh -l user host

パスフレーズを聞いてくるので、ssh-keygenコマンドで指定したパスフレーズを入力する。
接続先サーバのパスワードではないことに注意

4. クライアント側の設定

id_rsa ファイルをクライアント側にコピーする。
例:
ユーザのホームディレクトリ\.ssh

  • 秘密鍵のパーミッションに注意。秘密鍵のパーミッションがopenすぎるとだめ。
    以下はmacosxでのエラーの例。

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0640 for '/Users/xxx/.ssh/id_rsa' are too open.
    It is recommended that your private key files are NOT accessible by others.
    This private key will be ignored.
    bad permissions: ignore key: /Users/xxx/.ssh/id_rsa
    Permission denied (publickey,gssapi-with-mic).
    

    id_rsaを600にすればOK。

  • cwRsyncで公開鍵認証を使用する場合は、環境変数HOMEの下の「.ssh」(known_hostsファイルが作成されるディレクトリ)に秘密鍵ファイル(id_rsa)を置く。
    例:
    HOME=/home/pistolfly
    でcygwinがD:\cygwinの場合、
    D:\cygwin\home\.ssh
    に秘密鍵ファイルを置く。
    (rsyncの-eまたは--rshオプションのsshコマンドで-iオプションで秘密鍵のパスを指定してもよい。)

    rsyncしてパスフレーズの入力を促されたところ

    C:\sfprojects\reserve>symfony sync production
    >> exec      rsync --progress --dry-run -azC...s.net:/usr/local/share/reserve/
    Enter passphrase for key '/cygdrive/c/Documents and Settings/pistolfly/.ssh/id_r
    sa':
    
  • TeraTermでは、ログイン時に「RSA/DSA鍵を使う」を選択して、秘密鍵に上記ディレクトリの秘密鍵ファイルを指定して、秘密鍵のパスフレーズを入力する。

5. パスワード認証を許可しないようする

/etc/ssh/sshd_config (サーバ側) を編集する。

PasswordAuthentication yes

PasswordAuthentication no

にする。

rootのログインも禁止しておく。

PermitRootLogin no

root権限でsshdをreloadする。(rootでログインしたままで)

$ /etc/init.d/sshd reload

参考:
FedoraCore5ビギナーズバイブル11-2-2
最終回 セキュアなSSHサーバーを構築する:ITpro
リモート接続に SSH を使う
@IT:鍵交換方式のsshでアクセスするには