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

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


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

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

今週は、社員研修というものがあり、 東京ディズニーリゾートのホテルに全社員が集まって、 会社の現状や目標を知ったり、他の部署のひとびとと交流を深めたりしました。
(とはいえ、わたしは人見知りなひとなので、ほどほどにーですが。)

それはいいとして、ちょっとびっくりしたのは、東京ディズニーリゾートの周りには、 なーんにもない、ということでした。

宴会が終わったあと、もうちょっと飲もうかという話になり、店を探したのですが、 ホテルの周りには、飲むところはもちろん、コンビニすら存在しません。

ホテルの中で飲めそうなところといえば、高級そうなバーが1軒あるだけです。 庶民なわれわれには敷居が高くて、そこをまたぐことができませんでした。

いや、おそらく、たぶん、家族などで遊びに来ていたら、そんなことは気にもとめず、 湯水のようにお金を使ってしまっていたと思います。

しかし、現実の金銭感覚で見た場合、選択肢が極端に少ないというのは、 やはり正常な状態ではない、ということに気づいてしまった次第です。

ま、ようするに貧乏人のひがみなんですけど。
…まあいいや、今週も、はりきってまいりますよ。(なげやり)

今週のお題 - セットユーザID を理解する

先週は、ファイルのパーミッションについて、ご紹介しましたが、 覚えていらっしゃいますでしょうか。> みなさま

Vol.107 - ファイルのパーミッションを理解する
http://www.usupi.org/sysad/107.html

すると、意外にも、読者様がどっと増えました。(当社比)

ですから、それに気をよくして、今週はその続編を…
というわけではなくて、ご紹介できなかったところがいくつかありますので、 今週はそのあたりをご紹介したいと思います。(ほんとです)


てなわけで、タイトルにもありますように、セットユーザID というものを、 ご紹介していきたいと思います。

通常、コマンドを実行すると、コマンドを実行したユーザの権限で、 処理が行われます。
たとえば、cp コマンドでファイルをコピーすると、コピーしたファイルの所有者は、 実行したユーザ自身になります。よね。

  % cp -p /bin/cp mycp
  % ls -l mycp
  -rwxr-xr-x 1 usu adm 69158  6月13日  2006 mycp*

しかし、セットユーザID という印の入ったコマンドを実行すると、自分ではなく、 そのコマンドの所有者の権限で、処理が行われます。
たとえば、先ほどコピーした mycp に、セットユーザID をつけてみます。

  % chmod u+s mycp
  % ls -l mycp
  -rwsr-xr-x 1 usu adm 69158  6月13日  2006 mycp*

セットユーザID をつけるには、chmod コマンドの第1引数に、u+s を指定します。 すると、ユーザの権限の実行を表す箇所が、s になります。
(ユーザの権限に s を追加しているわけですね。)

実際に、別のユーザ(以下では test)が、これを実行すると、 コピーしたファイルの所有者が、mycp の所有者である usu になります。

  % id
  uid=10001(test) gid=99(nobody) 所属グループ=99(nobody),10000(test)
  % ./mycp /etc/hosts /tmp/myhosts
  % ls -l /tmp/myhosts
  -rw-r--r-- 1 usu nobody 4697  6月17日 23:27 /tmp/myhosts

 

さて、実際どういったときに使えばよいのか、と言いますと、たとえば、 su コマンドや sudo コマンドに、セットユーザID が設定されています。

  % ls -l `which su`
  -rwsr-xr-x 1 root root 30744  6月13日  2006 /bin/su*
  % ls -l `which sudo`
  ---s--x--x 2 root root 89236  5月19日  2006 /usr/bin/sudo*

これらのコマンドは、一般のユーザが、 root や他のユーザの権限を得る必要がありますので、 セットユーザID がついているわけですね。
(気になる方は、他にもないか、探してみましょう。)


ちなみに、先ほど、chmod コマンドに u+s を指定して実行しましたが、 u ではなく g に追加することもできます。(以下は usu ユーザ)

  % chmod u-s,g+s mycp
  % ls -l mycp
  -rwxr-sr-x 1 usu adm 69158  6月13日  2006 mycp*

すると、今度は、グループの権限の実行を表す箇所が s になります。
これを、セットグループID と言います。
セットグループIDのついたコマンドを実行すると、実行時のグループが、 実行したユーザのグループではなく、実行したファイルのグループになります。

たとえば、test ユーザが、この mycp コマンドを実行しますと、

  % ./mycp /etc/passwd /tmp/mypasswd
  % ls -l /tmp/mypasswd
  -rw-r--r-- 1 test adm 1666  6月18日 00:06 /tmp/mypasswd

test さんのグループは nobody ですが、上記のファイルは、 usu さんのグループ adm になっています。


上記では、ファイルに対して、 セットユーザIDやセットグループIDを設定していました。
では、ディレクトリに対して設定を行うと、どうなるのでしょうか。

セットグループIDを設定すると、そのディレクトリに作成したファイルのグループが、 (所有者ではなく)ディレクトリのグループに設定されます。

通常ですと、作成したファイルのグループは、実行したユーザのグループになります。

  % ls -ld testdir
  drwxrwxr-x 2 usu test 4096  6月18日 00:46 testdir/
  % touch testdir/usutest
  % ls -l testdir/usutest
  -rw-r--r-- 1 usu adm 0  6月18日 00:51 testdir/usutest

しかし、セットグループID を設定すると、そのディレクトリのグループになります。

  % chmod g+s testdir
  % ls -ld testdir
  drwxrwsr-x 2 usu test 4096  6月18日 00:57 testdir/
  % touch testdir/usutest2
  % ls -l testdir/usutest2
  -rw-r--r-- 1 usu test 0  6月18日 00:57 testdir/usutest2

これは、ディレクトリ以下を、あるグループ内で、 共同で使用する場合に都合がいいのではないかと思います。
ただ、グループへの書き込み権限を許可するようにしないと、意味がありませんが。

ちなみに、ディレクトリにセットユーザID を設定しても、とくに効果はないようです。


以上、セットユーザID とセットグループID について、ご紹介しました。

ある意味最強なセットユーザID ですが、設定しても効果のないファイルがあります。 それは、シェルスクリプトや Perl スクリプトなどです。

スクリプトがなんでもできてしまうことや、 セキュリティホールが過去に何度もあったことから、セットユーザID の効能を、 制限もしくは無効にしてしまっているようです。

そうでなくても、セットユーザIDを使うときには、 細心の注意を払うように心がけてください。

宿題の答え

先週の宿題は、

  シンボリックリンクのパーミッションについて、調べてみましょう。

でした。

シンボリックリンクとは、いわゆるファイルの別名で、 本物のファイルと同様にアクセスできる、ショートカットのようなものです。
たとえば、/opt/hoge/readme.txt のシンボリックリンクを、 ホーム上に作りたければ、ln コマンドを以下のように実行します。

  % ln -s /opt/hoge/readme.txt ~/readme.txt

そして、~/readme.txt を参照すると、 /opt/hoge/readme.txt に参照することと同じことになる、というわけです。

  % cat ~/readme.txt
  .../opt/hoge/readme.txt の中身...

では、シンボリックリンクのパーミッションを、ls コマンドで確認してみましょう。

  % ls -l ~/readme.txt
  lrwxrwxrwx 1 usu adm 65  6月12日 23:31 /home/usu/readme.txt -> \
  /opt/hoge/readme.txt

最初の l は、シンボリックリンクであることを表しています。
その後がパーミッションですが、すべて rwx となっていますので、だれでも、 読み書き実行のすべてを許可されています。

でも、シンボリックリンクのパーミッションは、必ずこうなっています。
chmod コマンドでパーミッションを変更しようとしても、 本物のファイルのほうが変わってしまいます。(あるいは、権限がなくて叱られます。)

それは、実際にアクセスしたときには、 本物のファイルのパーミッションを参照するからです。
ですから、/opt/hoge/readme.txt が、

  % ls -l /opt/hoge/readme.txt
  -rw-r--r-- 1 root root 210555  6月24日  2005 /opt/hoge/readme.txt

となっている場合、あなたが root でない限りは、書き込みの権限がありません。 ですので、シンボリックリンクに対して書き込もうとすると、

  % cp bad.txt ~/readme.txt
  cp: 通常ファイル `readme.txt' を作成できません: 許可がありません

叱られます。

ただ、rm コマンドを実行した場合は、シンボリックリンク自身が、削除されます。

今週の宿題

今週の宿題は、

  シェルスクリプトや Perl スクリプトに、セットユーザID を設定して
  実行し、効果がないことを確かめてみましょう。

です。

そのように書いてあったからといって、鵜呑みにしてはいけません。
実際に経験することで、糧となるのです。
というわけで、実際に試してみてくださいませ。

あとがき

さて、研修の次の日は、 ディズニーランドに行っても行かなくてもどっちでもよいことになっていましたので、 わたしは行かずに、川崎市にある、岡本太郎美術館へ、 ひとりで行ってきました。(協調性ゼロです)

岡本太郎美術館
http://www.taromuseum.jp/

去年話題になった「明日の神話」の小さい版や、太陽の塔に関するもの、 そしてそれ以前の作品が、たくさん展示してあって、 たっぷりと堪能することができました。
ほかにも、いくつかの椅子が座れるようになっていたり、当時の CM や、 描いているところの映像が流れていて、美術館というより博物館のようなところでした。

びっくりしたのは、「マミ会館」という建物まで、デザインしていたことです。 まさにそのまんま岡本太郎! という感じの風貌で、これを実現してしまった、 当時の勢いみたいなものを感じてしまいました。

↓残念ながら現存しないため、模型と写真しかありません…
http://www.taromuseum.jp/archive/okamotos/taro/tsukuru/a_6_5b.htm

そんなわけで、非常に満足して帰ってきたのですが、高回転で回りすぎたためか、 今、お腹をこわして、ちょっとだるいです。
ある程度は先のことを考えて、余裕を持って行動すべきだなあと、 今さらながらに思いました。

健康管理は大事ですよ。みなさんも、十分ご注意くださいませ。

 

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

 

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

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

「栗日記」−ありがとうございます、2000枚達成です。
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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本