Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP-UX   >  Knowledge-on-Demand  >  UNIXの教科書 運用編

UNIXの教科書 運用編
〜はじめよう! WindowsとLinuxからのステップアップ〜

第3日目:ファイルの安全管理(その2)

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
UNIXの教科書 運用編 第2日目:ファイルの安全管理(その1)
UNIXの教科書 運用編〜はじめよう! WindowsとLinuxからのステップアップ〜
ファイルのモードについて
特殊なパーミッションを活用する
ページ:  戻る   |   1   2

2時間目:特殊なパーミッションを活用する

2時間目でも引き続き、特殊なパーミッションについて説明しましょう。まずはstickyビットからです。

stickyビット

setgidビットと同じくstickyビットも、あるディレクトリ以下をグループで管理している場合に有効です。stickyビットがセットされていない場合、所有グループに「書き換え」が許可されているディレクトリは、グループに属するユーザーなら誰でもその下のファイルを削除できてしまいます。一方、ディレクトリにstickyビットをセットしておくと、所有者以外はファイルを削除できなくなります。stickyビットがセットされたファイルは「その他のユーザー」の実行許可部分の表示が「t」となります(実行許可がない場合には「T」)。

$ ls -ld project/  【Enter】
drwxrwx--t   2 root       users           96 Oct 10 21:46 project/
     ↑
  その他のユーザーの実行許可が「t」

四色君:
ほかのユーザーが削除するときにエラーが出るのですか?
四色君
マリー先生
マリー先生:
そうね、たとえばこのstickyビットが設定されたprojectディレクトリに「sample」というファイルがあります。このファイルの所有者は「taro」、所有グループは「users」ね。

$ ls -l project/  【Enter】
total 16
-rw-rw----   1 taro       users            5 Oct 10 21:55 sample

これを、グループ「users」に属する別のユーザーが削除しようとすると次のようなエラーになるの。

$ rm project/sample  【Enter】
  ←別のユーザーが削除しようとすると……
rm: project/sample not removed.  Not owner  ←エラーになる

特殊なパーミッションを設定する

基本パーミッションの設定にはchmodコマンドを使用しましたが、特殊なパーミッションを設定する場合にもchmodコマンドを使います。

chmod 設定値 ファイル

基本パーミッションと同じく、特殊なパーミションの設定値は記号と数値、どちらかの形式で指定します。まず、記号による場合には次のように指定します。

  設定 削除
setuidビット u+s u-s
setgidビット g+s g-s
stickyビット +t -t

たとえば、newprojectディレクトリにsetgidビットをセットするには次のようにします。

# chmod g+s newproject/  【Enter】  ←setgidビットをセット
# ls -ld newproject/  【Enter】  ←「ls -ld」で確認
drwxrws---   3 root       newprj          96 Oct 10 22:13 newproject/

さらにstickyビットをセットするには次のようにします。

# chmod +t newproject/  【Enter】  ←stickyビットをセット
# ls -ld newproject/  【Enter】  ←「ls -ld」で確認
drwxrws--T   3 root       newprj          96 Oct 10 22:13 newproject/


タックス君:
setuidビットを使用するとroot権限でコマンドか実行できるようになって便利なのですが、自由に設定してかまわないのですか?
タックス君
マリー先生
マリー先生:
setuidビットやsetgidビットをコマンドに設定すると、一般ユーザー以上の権限でコマンドを実行できる場合が多いので、セキュリティ的にはあまり好ましいものではないの。したがって、必要のないファイルにそれらのビットを設定すべきではないわ。

数値による特殊なパーミッションの設定

数値によって特殊なパーミッションを設定することもできます。前回説明したように基本パーミッションの場合には3桁の8進数で指定しました。特殊なパーミッションは3ビットあり、モード全体で12ビットとなるため、4桁の8進数で指定します。
たとえば、setgidビットとstickyビットを立てて、所有者と所有グループに読み書き実行を許可するための数値は「3770」となります。

モードは4桁の8進数で表現する
図6:モードは4桁の8進数で表現する

次に、projectディレクトリのモードを「3770」に設定する例を示します。

# chmod 3770 project  【Enter】  ←モードを「3770」に設定
# ls -ld project  【Enter】  ←「ls -ld」で確認
drwxrws--T   3 root       newprj          96 Oct 10 22:04 project/


四色君:
3桁の8進数でパーミッションを設定した場合、特殊なパーミッション部分はどうなるのですか?
四色君
マリー先生
マリー先生:
3桁で指定した場合、先頭に「0」が指定されているものとみなされるの。そのため特殊なパーミッションはクリアされてしまうので注意してね。

ファイルを作成したときのパーミッション

ユーザーがファイルを作成したときのパーミッションは「umask値」(ファイル生成マスク値)と呼ばれる値で決定されます。現在のumask値はumaskコマンドで表示できます。

$ umask  【Enter】
027  ←現在のumask値

ファイルの場合「666」を、ディレクトリの場合「777」を、それぞれumask値でマスクした値が作成時のパーミッションとなります。なお、マスクとは2つの2進数同士を比較して、対応するマスク値の「0」の部分をそのまま、「1」の部分を「0」にすることを言います。
たとえば、umask値が「027」の場合、新規ファイルのパーミッションは「640」(「rw-r-----」)となります。

umask値が「27」のときの新規ファイルパーミッション
図7:umask値が「27」のときの新規ファイルパーミッション

同様に、新規ディレクトリのパーミッションは「750」(drwxr-x---)となります。

umask値が「27」のときの新規ディレクトリパーミッション
図8:umask値が「27」のときの新規ディレクトリパーミッション

タックス君:
umask値を変更することはできるのですか?
タックス君
マリー先生
マリー先生:
umaskコマンドの引数にマスク値を指定すればできるわ。たとえば、所有者以外には読み書き実行を許可しないようなumask値「077」を設定するには、次のようにするの。

$ umask 077  【Enter】      ←umask値を「077」に
$ touch testfile  【Enter】 ←ファイルを作成
$ mkdir testDir  【Enter】  ←ディレクトリを作成
$ ls -l  【Enter】          ←「ls -l」コマンドで確認
total 0
drwx------   2 o2         users           96 Oct 10 22:57 testDir
-rw-------   1 o2         users            0 Oct 10 22:57 testfile
四色君:
umask値はどこで設定されているのですか?
四色君
マリー先生
マリー先生:
通常、ログイン時に実行されるシェルの環境設定ファイルで設定するの。POSIXシェルの場合には/etc/profileで設定されているわ。設定をユーザーごとに変更したい場合には「~/.profile」で設定するといいわよ。

ファイルをコピーした場合のパーミッション

umask値はファイルやディレクトリをコピーした場合のパーミッションにも影響を与えます。コピーしたファイルのパーミッションは、コピー元のファイルのパーミッションをumask値でマスクした値となります。たとえば、現在のumask値が「077」の場合には、パーミッションが「666」のファイルをコピーするとコピー後のパーミッションは「600」(rw-------)になります。

$ umask  【Enter】
077  ←umask値は「077」
$ cp testfile newfile  【Enter】  ←ファイルをコピーする
$ ls -l  【Enter】
total 0
-rw-------   1 o2         users           0 Oct 10 23:01 newfile ←コピーされたファイル
-rw-rw-rw-   1 o2         users           0 Oct 10 22:57 testfile ←元のファイル


四色君:
コピー後のパーミッションを変更したくない場合にはどうすればいいのですか?
四色君
マリー先生
マリー先生:
その場合には「-p」オプションをつけてcpコマンドを実行すればいいわ

$ cp -p testfile newfile2  【Enter】
  ←「-p」オプションをつけてcpコマンドを実行
$ ls -l  【Enter】
total 0
-rw-------   1 o2         users            0 Oct 10 23:01 newfile
  ←「-p」オプションなしでコピーされたファイル
-rw-rw-rw-   1 o2         users            0 Oct 10 22:57 newfile2
  ←「-p」オプションをつけてコピーされたファイル
  (パーミッションは変わらない)
-rw-rw-rw-   1 o2         users            0 Oct 10 22:57 testfile
  ←元のファイル

練習問題

第1問:setgidビットについて正しい説明はどれか?

a) ファイルに対してsetgidビットをセットするとファイルの所有者が実効ユーザーとなる
b) ディレクトリにsetgidビットをセットすると、その下に作成したファイルに親ディレクトリの所有グループが引き継がれる
c) ディレクトリにsetgidビットをセットすると、ファイルの作成者以外は削除できなくなる
d) setgidビットを設定したディレクトリは「ls -l」の表示でその他のユーザーの実行部分が「t」となる
正解はこちら
b) ディレクトリにsetgidビットをセットすると、その下に作成したファイルに親ディレクトリの所有グループが引き継がれる
a)はsetuidビットの説明、 (c)(d)はstickyビットの説明である。

第2問:testdirディレクトリにsetgidビットをセットするコマンドはどれか?

a) chmod g+s testdir
b) chmod u+s testdir
c) chmod +s testdir
d) chmod u+t testdir
正解はこちら
a) chmod g+s testdir
setgidビットを設定するには「chmod g+s ディレクトリ」コマンドを実行する。

第3問:umask値を「022」に設定するコマンドはどれか?

a) mask 022
b) umask 022
c) set mask 022
d) chmod 022
正解はこちら
b) umask 022
umask値の設定・確認にはumaskコマンドを使用する。

第4問:現在のumask値が「022」の場合に新規ファイルを作成したときのパーミッションはどれか?

a) 666(rw-rw-rw-)
b) 622(rw--w--w-)
c) 644(rw-r--r--)
d) 755(rwxr-xr-x)
正解はこちら
c) 644(rw-r--r--)
新規ファイルのパーミッションは「666」をumask値でマスクした値となる。

連載記事一覧 戻る ページ:  戻る   |   1   2

教科書シリーズ 「UNIXの教科書」 「HAクラスターの教科書」 連載記事一覧

UNIXの教科書「基礎編」

第1日目:ログインしてコマンドを実行してみる
第2日目:ディレクトリやファイルを操作してみる
第3日目:シェルの基本を知る
第4日目:ファイルの基本操作
第5日目:viエディタの操作(基本編)
第6日目:リダイレクションとパイプを活用する
期末試験

UNIXの教科書「応用編」

第1日目:grepコマンドと正規表現
第2日目:ファイルの検索
第3日目:viエディタの操作(活用編)
第4日目:ファイルの圧縮とアーカイブ
第5日目:ジョブとプロセスの操作
第6日目:シェルの環境設定
第7日目:シェルスクリプトでより便利に
期末試験

UNIXの教科書「運用編」

第1日目:ユーザーの管理
第2日目:ファイルの安全管理(その1)
第3日目:ファイルの安全管理(その2)
第4日目:ネットワークの基本を理解する
第5日目:ネットワーク関連のコマンド
第6日目:システム情報の表示
期末試験 New!

HAクラスターの教科書

第1日目:ハードウェア構成を知る
第2日目:ネットワークを設定する
第3日目:共有ディスクを構成する
第4日目:HAクラスターを構成する
第5日目:パッケージを構成する
第6日目:障害テストを実施する
期末試験

 その他の連載記事


本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項