読者です 読者をやめる 読者になる 読者になる

tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

sudoを学ぶ

サーバ技術

rootでの作業とsudoを使っての作業の違い

rootはそのサーバーの管理者という位置づけのユーザーですべての権限を持っているため、sbinのコマンドから各種サービス設定ファイルまで全ての作業を行うことができる。
一方、一般ユーザーは与えられた権限の範囲でのみ作業を行うことができる。そのためファイルによっては書き換えはもちろんのこと、実行すらできない場合もある。どうしても実行したい場合は、sudoというコマンドを使用して一時的にrootユーザーの権限を得てファイルを編集なりなんなりができる。

sudoでの作業の意義

rootで作業せずに、基本は一般ユーザーで作業を行い、必要な際sudoを行うというのが一般的だが、正直sudoを行う意義が分からなかった ため、いちいちsudoするの面倒でrootで作業していた。rootログイン禁止設定もしてみたけど、結局一般ユーザーでログイン直後にsu やってrootになっていた。どうせ自分しかそのサーバーにログインしないし。

と思っていたが、やっと自分なりの意義を見つけられた気がする。
http://ja.wikipedia.org/wiki/Sudo
セキュリティ的なメリットも多くあるが、何よりも大きいのは、sudoでパスワード入力時に自分が何をしようとしているのか、どのコマンドを実行 しようとしているのか再認識し、確認できる点だろう。
精神論的になるけど、かの有名なスパイダーマンおじさんの言葉、「大いなる力には大いなる責任が伴う」があるように、冷静に考えるとrootでの作業はコストの割りに影響力がアホみたいにでかい。趣味のサーバ程度なら屁でもないが、それが企業のサービスをホスティングしてるサーバだったりすると、何か変更を施したときの影響はでかい。
その影響力の大きさを意識するという意味でも、ここぞというときにのみ実行したいコマンドの前にsudoをつける、そしてパスワードを入力して自分が何をしようとしているのかを再確認するというのは重要だと思う。
なんで僕が今日突然こんなことを意識するようになったのかというと、お客さんのサーバにrootログインしてうっかり大事なデータを消してしまったからであります。すぐに復旧できて大事にはならなかったけど、完全自殺マニュアルって経費で落としてもらえるかな?とか真面目に考えちゃうくらい僕にとって衝撃的な出来事でした。

sudoするための設定

useaddして一般ユーザーを作成しただけではsudoは使えない。以下設定手順。

デフォルトでsudoが入っていない場合もあるので、まずはsudoをインストールする。

# yum install sudo

sudo権限を与えたいユーザーを作成する。もちろんパスワードも設定する。

# useradd hoge
# passwd hoge

必要ならばグループにも追加する。sudoできるユーザーグループは慣習的にwheelというみたい。wheelという単語には権力者とかって意 味がある。

# usermod -G wheel hoge

ここからやっとsudoの設定。sudoはシステム管理の超大事な部分の関わってくるため、その設定ファイル(/etc/sudoers)は普通 にvimとかではいじれない。vim /etc/sudoers とかやっても読み込み専用で開くようになっている。そのため visudo というコマンドでその設定ファイルをいじる。

# visudo

コマンドのエイリアスをかけてコマンド郡ごとに許可したり、リモートからの
sudo許可などの様々な設定項目があるが、重要なのは以下のような ユーザーま
たはグループのsudoコマンド許可部。

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
1.   2. 3.  4.

各記述内容の意味は
1.sudoできるユーザーの指定。頭に「%」をつけると、そのグループに対してsudo
許可するという意味になる。
2.ホストに対する許可。sudoersにホストのエイリアスを設定してなければALLで
かまわない。ホストごとにも設定できるということ。
3.sudoされるユーザー名。ALLを指定した場合は全てのユーザー権限=rootという
ことになる。rootだけでなく、他のユーザーを指定す ることもできる。
4.利用できるコマンドの制限。これまたsudoersでコマンドに対するエイリアス
設定していて、ここにそのエイリアスを書くと、そのユー ザー(グループ)はそ
のコマンドを指定ユーザー権限で実行できる。もちろんALLなら全コマンド実行
可能。