Linuxメモ集

このページはVineLinux2.1を元に書いています。他のディストリビューションではファイルの場所などが違う可能性があるので気をつけてください。また同じ環境だとしても、私はすべてを動作確認したわけではないので、この通りにやってもうまくいくかどうか保証はできません。自己責任でお願いします。
セキュリティに対するポリシーなどは、ネットワーク形態などにより変化するでしょう。ここに載せた設定は私の一例です。みなさんは設定する際、これをそのままコピーするのではなく十分に勉強し理解した上で行ってください。
私は基本的にコマンドベースによる管理を原則としています。グラフィカルなツールで管理したい人は他のサイトを参照してください。
ここに載っている設定に問題がある、または間違えがある、動かないなど気づかれた方は掲示板で知らせてください。お願いします。

VineLinux2.1固有の問題はこちらのページを参照してください。

Vine ホームページ http://vinelinux.org/
VineLinuxユーザメーリングリスト過去ログ検索 http://vine.ic.sci.yamaguchi-u.ac.jp/

注意)文中の[¥](円マーク)と[\](逆スラッシュ)の表示が端末によって変わるかもしれません。適宜読み替えてください。
また環境により複数行にわたって表示される場合でも、1行で入力しなければならないものもあります。気をつけてください。

現在は私Vineサーバを管理していないので、最新情報から疎くなっています。今後も更新はあまりないかと思いますが、備忘録として残しておきます。


管理用

○ユーザアカウント作成・設定
インストール時にユーザアカウントを作成することもできますが、デフォルト設定やユーザID/グループなど細かく設定するためにも慎重にしたほうがいいでしょう

・一般ユーザアカウント作成 [root]
# /usr/sbin/useradd -c '名前 ' -g グループ名 アカウント名
 ※ /home/アカウント名/ のデフォルト構成
     → /etc/skel/ と同じ内容がコピーされ、ファイル所有者が変更される
 ※ グループ名を指定しないと自動的に処理される(userグループになるか新しくグループが作成されるかはディストリビューションによる(?))

・管理用スーパーユーザアカウント作成(rootと同じ権限を持つ) [root]
# /usr/sbin/useradd -c '名前 ' -u 0 -o -g root アカウント名
 ※ ユーザID:0(root) ユーザグループ:rootを指定。同じユーザIDのユーザを複数作成

・ユーザアカウント作成 その2 [root]
/etc/passwd を編集する → /usr/sbin/vipw (ファイルロック・構文チェックなどを自動で行う)
構文(shadow password導入されている場合)
 → ユーザ名:*:ユーザID:グループID:本名など:ホームディレクトリ

・別のユーザのパスワード変更 [自分以外の変更は要root権限]
# /usr/bin/passwd アカウント名

・新規グループ作成 [root]
# /usr/sbin/groupadd グループ名
または /etc/group を直接編集する → /usr/sbin/vigr
構文 (グループパスワードはあまり使われないので省略)
 → グループ名:x:グループID:ユーザリスト

・ユーザの個人情報 (リアルネームなど) 変更 [自分以外の変更はroot権限]
# /usr/bin/chfn アカウント名

○起動・停止
・Linuxのシャットダウン
# /sbin/shutdown -h now

・Linuxの再起動(リブート)
# /sbin/shutdown -r now または コンソール(キーボード)からCTRL+ALT+DEL
  ※ コンソールからのshutdownコマンドの実行権限はusermodeの設定による
     → /etc/security/console.apps/halt,poweroff,reboot
        (Null) → 実行ユーザのパスワード
        USER=root → rootのパスワード(ファイルが存在しない場合も)
  ※ CTRL+ALT+DELを無効にする
     → /etc/inittab の中の以下 の行をコメントアウトする
        ca::ctrlaltdel:/sbin/shutdown -t3 -r now

・ランレベル(RunLevel)
  0:システム停止
  1:シングルユーザモード → カーネルアップデートするときなど
  2:マルチユーザモード(NFCマウントなし)
  3:マルチユーザモード(コンソールログイン)
  4:(未使用)
  5:マルチユーザモード(ディスプレイマネージャ)
  6:システム再起動(リブート)
     → Linux起動時の状態は /etc/inittab の中に記述されている
       id:3:initdefault:  (ランレベル3で起動する)

・起動スクリプト(Redhat系) → /sbin/chkconfig で設定
  /etc/rc.d/rc3.d/S10network
    3:ランレベル  S:スタート/K:ストップ  10:優先順位(小さい順に実行される)
    network:実行スクリプト → /etc/rc.d/init.d/network

○その他
・別のユーザの権限に変更して、シェルを実行する
   (telnetでログインする際、直接rootでログインせずに一般ユーザからsuするのが好ましい)
$ su - アカウント名
  ※ suコマンドを制限する(例:wheelグループのみ許可する)
     → /etc/pam.d/su の中に以下の行を追記する
        auth required /lib/security/pam_wheel.so debug group=wheel

・IPアドレス[root?]
$ ifconfig
  eth0 … LAN
  lo … ローカルループバック(127.0.0.1,localhost)

・hostnameの設定ファイル
/etc/sysconfig/network
  ※Vine2.5ではバグ有り?(参照 vine-users:041131)


設定を調べる・変更する

現在のディレクトリを調べる → $ pwd

パス(path)
  パスを調べる  → $ echo $PATH
  パスを追加する → $ setenv PATH $PATH:追加するパス (cshの場合)
           $ export PATH=$PATH:追加するパス (bashの場合)

シェル(shell)
  現在のシェルを調べる → $ echo $SHELL
  ログインシェル変更 → $ /usr/bin/chsh

プロンプト(prompt)
  現在の表示について調べる → $ echo $PS1
  プロンプト表示を変更する → $ PS1 = '[\u@\h \W]\$'
    ※ \u ユーザ名  \h ホスト名  \W 現在のディレクトリ \! ヒストリ番号

・ユーザアカウントの個人情報 (リアルネームなど) 変更
$ /usr/bin/chfn

・パスワード変更
$ /usr/bin/passwd

・コマンドの場所を調べる(PATHに含まれていて普段はフルパスを入れる必要のないもの)
$ which bash  ……例:bashがどこにあるかを知りたい場合
/bin/bash


シェル(shell)

現在のシェルを調べる → $ echo $SHELL

ログインシェル変更 → $ /usr/bin/chsh

bashをログインシェルとして起動した場合、以下のファイルが実行される
   1. /etc/profile
   2. ~/.bash_profile , ~/.bash_login , ~/.profile
      の順で最初に見つかった読み込み可能なファイル1つ

バックグラウンドでジョブの実行
  → コマンドの最後に&をつける


コンソールの画面表示

Linuxを手元のキーボード・画面で操作するときは、6個のコマンド画面と1個のX-Window画面を同時に用意されています。これにより、わざわざexitしなくても画面を切り替えるだけで効率的に処理できます。またX-Windowがフリーズした場合、コマンド画面からフリーズしたアプリケーションをkillすることで終了させることができます。

・コマンド画面から切り替え
  → ALT+F1〜6 ただしX-Windowは ALT+F7

・X-Window画面から切り替え
  → SHIFT+ALT+F1〜6


ファイル操作

・ファイルコピー
$ cp ファイル名 移動先ディレクトリ

・ファイル移動
$ mv ファイル名 移動先ディレクトリ

・ファイル名変更(リネーム)
$ mv 元ファイル名 新しいファイル名

・ディレクトリをファイルごとまとめて削除
$ rm -r ディレクトリ名

・ファイル検索
$ locate ファイル名
  ※ データベースを利用するために高速な検索が可能。ただし最新状態でないことも
     ・データベースを更新 → $ /usr/bin/updatedb
$ find / -name ファイル名
  ※ 実際に検索を行う。その他多くの検索条件を指定可能 参考


トラブル FAQ

様々なトラブルに共通して原因となりうる問題のため、確認すべきこと
・iノード(i-node)を使い切っているため新規ファイルが作れない
   → 代表的なエラーメッセージ[No space left on device]
  $ df -i  … 使用率% が100%になっていないか確認する


ログの確認・解析
1. アクセスログ・エラーログファイルを指定
  $ tail -f hogehoge.log
2. ログが追加されると、自動的に表示される


●初めてプログラムをmakeしてインストールしようとしているがエラーになる
 → 開発環境がインストールされていないと、rpmのインストールしかできない。次のうちのどれかを実行する
a)Linuxを再インストールして、開発環境(Development Tools)パッケージを入れる
b)下記のパッケージをインストール
 (※調査中)

●サーバとして運営しているLinuxに外部からtelnetなどを利用しようとすると、最初の反応があるまで長時間(1〜2分)かかる
 → IPとDNSやhostsの連携がとれていないため。次のうちのどれかを実行する
a)サーバ側のhostsにクライアントマシンのIPを追加する
b)DNSに登録する

●apacheからホームページ(Webページ)が見られない
 → さまざまな要因が考えられますが、TCP/IP通信はできている&基本的な知識はあることを前提としてFAQをあげておきます
1. apacheが動いていることを確認する
  $ ps -aux | grep httpd
2. 次の2つのディレクトリのパーミッションを設定する(デフォルト設定の場合)
  /home/ユーザ名        drwxr-xr-x(755)
  /home/ユーザ名/public_html  drwxr-xr-x(755)
※パーミッションはdrwxr-xr-x(755)でもdrwx--x--x(711)でもよい。どちらを選ぶかは運営ポリシー次第
  apacheがどのユーザ権限で動くのか確認しておくとよい。通常はnobodyなのでother(最後の数字)だけ変更すればよい。

●apacheでCGIが動かない
1.説明書をちゃんと読むこと(誰かが作ったプログラムを利用する場合)
2.必要なファイルが不足していないか確認する(jcode.plなど)
3.先頭行のPerlのパスを直す → 調べ方 … $ which perl
   #!/usr/bin/perl (VineLinuxの標準パス)
4.[Content-type: text/html\n\n] を最初に出力しているか確認
5.Perlの文法チェック
   $ perl -wc hogehoge.cgi
6.コマンドライン上で
   $ head -1 hogehoge.cgi | cat -v
     → 行の最後に^Mがある場合は、改行コードがCR+LFになっているのでLFのみに変換する
     (変換コマンド) $ tr -d "\15" <hogehoge.cgi >hogehoge2.cgi
7.コマンドライン上で実行して出力結果を確認(ただし引数を与えるのは難しい)
   $ ./hogehoge.cgi | more
8.それでもうまく動かない場合は、apacheが動くユーザ権限にRootでsuすることで問題を探す…通常ユーザとはパスの設定が異なっているため
   # su - nobody

時刻がおかしい・時計が大幅にずれている(数分以内の誤差の場合はこちら
  → Linuxでは2つの時計があります。以下のコマンドでどの時計がずれているのか確認する
$ date    システムクロック(日本時間)
2001年 9月11日(火) 01時17分35秒 JST
$ date -u  システムクロック(標準時間)
2001年 9月10日(月) 16時17分37秒 UTC
# hwclock  ハードウェアクロック

1.タイムゾーン(TimeZone)の設定を確認
# mv /etc/localtime /etc/localtime.bak   現在のタイムゾーン情報をバックアップ
# ln -s /usr/share/zoneinfo/Japan /etc/localtime 日本標準時で時刻を表示する場合
  ※このあたりは # /usr/sbin/timeconfig でも設定可能か?

2.NTPによる時刻修正
# /usr/sbin/ntpdate -b 日本のNTPサーバ 例:clock.nc.fukuoka-u.ac.jp
   システムクロック修正(-b:強制的に) ntpdateはxntpパッケージに含まれている
# /sbin/hwclock --systohc   ハードウェアクロックをシステムクロックに合わせます。

時計が少しづつずれる(大幅に狂っている場合はこちら
  → makeなどの重い処理を行うと、時間が少し狂うそうです

1.NTPによる時刻修正
# /usr/sbin/ntpdate 日本のNTPサーバ 例:clock.nc.fukuoka-u.ac.jp
   システムクロック修正 ntpdateはxntpパッケージに含まれている
# /sbin/hwclock --systohc   ハードウェアクロックをシステムクロックに合わせます。

●JAVA2 SDK(jdk)が動作しない
   → glibc との相性の問題の可能性が高い。まずglibcを最新版にアップデートをしてみること
  例)[JDK1.3]と[glibc-2.1.3-19]


ネットワークからの利用

・ユーザにリモートログインさせないで、FTPサービスだけを提供する(proftpd)
  1) /etc/shells に /etc/ftponly を追加
  2) /etc/proftpd.conf に次の行を追加
     RequireValidShell no
  3) 対象のユーザのログインシェル指定( /etc/passwd )を /etc/ftponly に変更

httpデーモン(Apache)の基本設定
 1) /etc/httpd/conf/httpd.conf を編集
    ServerName サーバのホスト名
    ServerAdmin サーバ管理者のメールアドレス
 2) apache再起動
    # /etc/rc.d/init.d/httpd restart

FTPデーモン(proftpd)の基本設定 ※VineLinux2.1の場合はこちらのページも参照
 1) /etc/proftpd.conf を編集
    ServerName "サーバのホスト名など "
    ServerAdmin "サーバ管理者のメールアドレス "
    DenyFilter \*.*/
       → DoSアタックの防止
    Persistent Passwd off
       → 新しく登録したユーザがログインできない場合に
    LsDefaultOptions "-a"
       → ドットファイル(隠しファイル)を常に表示
 2) proftpd再起動
    # /etc/rc.d/init.d/proftpd restart

STMPデーモン(postfix)の基本設定
 1) /etc/postfix/main.cf を編集(ドメインを代表するメールサーバの場合は適宜変更が必要)
    myhostname = サーバのFQDN
    mydomain = ドメイン名
    myorigin = $myhostname ……サーバが直接メールを送信する場合のメールドメインを記述
    mynetwork = IPアドレス/プリフィックス値, 127.0.0.0/8
    inet_interface = all
    mydestination = $myhostname, localhost.$mydomain
    alias_maps = hash:/etc/postfix/aliases
    allow_mail_to_commands = alias,forward,include ……[:include:]を使えるようにする(メーリングリストを運営する場合など)
    smtpd_recipient_restricitions =
     regexp:/etc/postfix/regexp_access ……2)のルールを適用
     permit_mynetworks ……$mynetworkに含まれていればOK
     permit_relay_domains
     reject
 2) /etc/postfix/regexp_access を新規作成 → user@domain形式以外のを利用したリレー禁止
     /[%!@].*[%!@]/ 505 Sender specified routing is not supported here.
    ※ デフォルトでも「受け取ったあとに拒否する」ので実質は問題はないらしい
 3) /etc/aliases を編集 → root宛のメールを一般ユーザに転送させる
    ※ セキュリティ面の配慮からroot権限でファイル書き込みをすると危険なため
 4) aliasデータベース作成
    # sendmail -bi  または # newaliases
 5) Postfix起動
    # postfix start
 6) 正しくメール配送・スパム(spam)メール排除ができていることを確認したら、 /sbin/chkconfig で自動起動する
http://www.nanet.co.jp/rlytest/relaytest.htmlhttp://www.paladincorp.com.au/unix/spam/spamlart/などで不正な第三者中継を行っていないか自動で調査できる


k-five@zmail.ne.jp