いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.118 / 読者数:1149名

こんばんは、うすだです。

今週、ある打合せで、わたしにとっては猛烈なダメ出しを、 お客さまからいただきまして、ひさびさに大きくヘコみました。

そんなとき、いろんな言い訳を考えてしまいますが、結局、 大抵は自分が原因を作っていることに気づきますので、 反省して気持ちを切替えるしかないという、 もっとも選択したくない結果をつきつけられることになります。

ここで、素直に自分の誤りを認められるようになればよい、 ということはわかっているのですが、それがなかなかできません。

とりあえず、やらかしてしまったことを元には戻せませんし、 くよくよと思い悩んでいても仕方がありませんので、 それによって死んでしまうことはないのだ、という言葉を思い出して、 前向きに考えるようにしています。
(たぶん、ワインバーグさんがおっしゃっていたと思うのですが、 どの本に書かれていたのかは、失念しました。)

おおげさに悩み抜いたところで、今週も、はりきってまいりますよ!

今週のお題 - bash を自分好みに設定する

ここ近年の、Linux におけるデスクトップ環境の進化には、 たいへん驚きおののいているといっても過言ではありません。 が、それでも、われわれ管理者が、サーバに対してなにかを行う際には、 シェルを使うのが一般的ではないかと思います。

そんな、1日に何百何千ものコマンドを繰り出す元であるシェルを、 使いやすくカスタマイズすることは、宮大工のひとが、 鉋や蚤の手入れを丹精込めて行うことと同じくらい、大事なことではないかと思います。

シェルには、bash や tcsh, zsh などいくつかありますが、 このメルマガには初心者のかたが多いと思いますので、 大半のかたは bash をお使いだと仮定します。

というわけで、今回は bash に絞って、そのカスタマイズの方法を、 簡単ではありますが、ご紹介していきたいと思います。


まずは、bash が起動される際に読み込まれて実行される、設定ファイルについて、 ご紹介します。

ログインシェルとして bash が起動されたときには、 まず /etc/profile というファイルが読み込まれて実行されます。
次に、各ユーザの設定ファイルが、読み込まれて実行されます。
具体的には、ホームディレクトリ直下にある、以下のファイルが存在する場合に、 そのファイルが読み込まれて実行されます。

  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile

ただし、実行されるのは、上記ファイルすべてではなく、1つだけです。
たとえば、.bash_profile が存在するなら、.bash_login や .profile が存在しても、 実行されるのは .bash_profile だけです。

ログインシェルとして実行されない場合、 たとえば su コマンドを用いて他のユーザになったとき、 xterm などの端末エミュレータを実行したときなどには、 ~/.bashrc というファイルだけが読み込まれて実行されます。

ただ、あちこちのファイルに同様の設定を記述するのは、面倒ですので、 主要な設定を .bashrc に書いておき、 .bash_profile などから .bashrc の設定を読み込むようにするのが、 一般的のようです。

また、ログアウト時には、 ~/.bash_logout というファイルが読み込まれて実行されます。

以降では、.bashrc に記述する設定を、淡々とご紹介していきます。


まずは、エイリアスです。
エイリアスは、命令に別名をつけて、別名で実行できるようにするためのものです。 書式は、以下の通りです。

  alias 別名=命令

たとえば、以下のようなコマンドを、頻繁に実行しているとします。

  % ssh -L 10025:smtp_server:25 gateway -l usu

bash にはヒストリ機能があるとはいえ、 ことあるたびに上記を打ち込むのは面倒ですよね。
そんなとき、エイリアスを用いて、以下のように省略できます。

  % alias lsmtp="ssh -L 10025:smtp_server:25 gateway -l usu"
  % lsmtp
  usu@gateway's password:
  ...

ちなみに、alias だけで実行すると、設定済の一覧が表示されます。
alias と別名だけで実行すると、指定した別名の内容が表示されます。

  % alias
  alias ls='ls -CF'
  ...
  % alias lsmtp
  alias lsmtp='ssh -L 10025:smtp_server:25 gateway -l usu'

ふだん使用するコマンド名を別名に指定すると、 頻繁に使用するコマンド自身の振舞いを変えることもできます。
たとえば、Vine では、ls が以下のように設定されていますので、 普通に ls を実行すると、エイリアスで設定された命令が実行されます。

  % alias ls
  alias ls='ls -F --color=auto'
  % ls
  lib/  rpm/  tmp/

alias の設定を無効にして実行したいときは、 実行するコマンドの先頭に \ をつけます。

  % \ls
  lib  rpm  tmp

設定を無効にしてしまいたいときは、unalias を使用します。

  % unalias ls
  % alias ls
  bash: alias: ls: not found

次に、環境変数です。
環境変数がなにか? という話は省略しまして、設定する場合は、

  export 変数名=内容

とするか、以下のように、普通に変数を定義しておいて、 最後にまとめて export する方法があります。

  変数1=内容1
  変数2=内容2
  ...
  export 変数1 変数2 ...

例を以下に示します。

  export DOMAINNAME="usupi.org"
  export PAGER=/usr/bin/less

設定をなかったことにしたい場合は、unset を使用します。

  % export DUMMYENV=dummy
  % echo $DUMMYENV
  dummy
  % unset DUMMYENV
  % echo $DUMMYENV

  %

ここで、設定ファイルの例を、ご紹介したいと思います。
あくまでも例ですので、これを実際に使用するのではなく、 現在お使いのファイルに対して、ちょっとずつ追加や変更などを試みてください。

以下は、.bash_profile の例です。

  # .bashrc の読み込み
  [ -f ~/.bashrc ] && source ~/.bashrc
  # 環境変数 DISPLAY の設定
  echo -n "Please input display >"
  read disp
  [ -n "$disp" ] && export DISPLAY=$disp

以下は、.bashrc の例です。

  # /etc/bashrc の読み込み
  [ -f /etc/bashrc ] && source /etc/bashrc
  # エイリアスの設定
  alias a=alias
  a ll="ls -l"
  a la="ls -a"
  a s=set
  a f=fg
  a b=bg

以上、bash の設定方法を、簡単にご紹介しました。
とはいえ、エイリアスと環境変数だけでしたね。来週は、 もっといろいろな設定をご紹介したいと思っております。

そういえば、一切カスタマイズせずにシェルを使っている先輩が、 以前の職場にいました。お客さまのところでは、 デフォルトの状態であることが多いので、その環境でも柔軟に使えるようにするため、 とのことでした。
当時使用していた OS は Solaris で、シェルと言えば、 sh や csh しかありませんでしたので、相当使いづらかったはずです。
ある意味プロだなーと思いました。
(ちなみにわたしは、最初に set filec とか ignoreeof とか、 ひと通り設定を手で打ち込んでから、作業をしていました。)

宿題の答え

先週の宿題は、

  所有グループが参照不可のパーミッションのファイルを、そのグループ
  に所属するユーザは参照できるでしょうか。

でした。

たとえば、以下のようなパーミッションのファイルがあったとき、

  # ls -l /foo/bar/test
  -r-----r-- 1 root sysad 4940  9月 2日 23:34 /foo/bar/test

当然ながら、sysad グループのひとは、上記ファイルを参照できません。

  % groups
  sysad
  % cat /foo/bar/test
  cat: /foo/bar/test: 許可がありません

では、いくつかのグループに属していて、 主グループが sysad の場合はどうでしょうか。

  % id
  uid=101(test1) gid=100(sysad) 所属グループ=10(wheel),100(sysad)
  % cat /foo/bar/test
  cat: /foo/bar/test: 許可がありません

だめですね。主グループじゃないとどうでしょうか。

  % id
  uid=102(test2) gid=4(adm) 所属グループ=4(adm),100(sysad)
  % cat /foo/bar/test
  cat: /foo/bar/test: 許可がありません

あーだめです。
とにかくそのグループに属していると、アウトとみなされるようです。

もちろん、sysad グループに属していないひとは、参照できます。

  % groups
  adm wheel vboxusers
  % cat /foo/bar/test
  This is a test.

当り前といえば当り前な結果ですが、今まで一度も試したことがなかったので、 実際に試してみる作業は、ちょっと新鮮でした。

さあ、この気分は、やってみないと味わえません。
さっそく、やってみてください。(実践あるのみですよ!)

今週の宿題

今週の宿題は、

  エイリアスを重複して設定したときの振舞いを、確認してみましょう。

です。

たとえば、同じ名前の別名を複数設定したとき、 とある別名の設定に他の別名を使用したとき、どう設定されるのか、 確認してみてください。

あとがき

昨日、プロバイダを、ややマイナーな某F社から、ややメジャーな某C社に切替えました。

当日、物理的な切替え作業と接続確認を、業者のかたが行いました。
その際、接続確認を、マンションの1階からの Ethernet ケーブルを直接使わずに、 リビングに来ている Ethernet ケーブルで行っていました。

わたしは、PPPoE で通信させるマシン同士を、 Ethernet ケーブルで直接接続する必要があると思い込んでいましたので、 HUB が間に介在する状態で接続確認を行うということに、衝撃を受けました。

接続確認できたということで、 間に HUB があっても問題ないということがわかりましたが、その場合、 サーバの MAC アドレスをどうやって知るのかがわかりません。

ちょっと調べてみたところ、PPPoE が定義されている RFC2516 に、 しかと書かれていました。
最初、クライアントがサーバを検索するときに、 ディスカバリパケットを送信するのですが、そのときの送信先のアドレスを、 ff:ff:ff:ff:ff:ff (つまりブロードキャストアドレス)とするため、 間違いなくサーバに届くわけですね。(サーバ以外のマシンにも届いてしまいますが。)

業界によっては、仕様が公開されていないということも結構あるようですが、 インターネットでは、RFC など、大半の仕様を無料で手に入れることができます。
こうやって、 疑問に思ったときにすぐ調べられるというのはいいもんだ…と思うとともに、 それを築き、 維持しているたくさんのかたがたの努力と活躍があってこそなのだということを、 肝に銘じるべきだと思いました。

…あ、RFC ってなに? という貴兄は、たとえば以下をご覧ください。

Request for Comments - Wikipedia
http://ja.wikipedia.org/wiki/Request_for_Comments

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週(…ええ、たぶん来週です…)に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−秋限定の栗のお菓子があると、買ってしまいますね。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本