連載
» 2017年06月09日 05時00分 公開

“応用力”をつけるためのLinux再入門(11):「共有ディレクトリ」を作成してパーミッション(許可属性)への理解を深めよう (2/2)

[西村めぐみ,@IT]
前のページへ 1|2       

ファイルを作成してみよう(1)

 この状態では、まだtestusersグループのメンバーであっても、「/usr/local/workdir」にファイルやディレクトリを作成することはできません。パーミッションが「rwxr-xr-x」で、グループに「w」の権限がないためです。

 そこで、「chmod」コマンドで、「/usr/local/workdir」に対して「グループの書き込み許可」を追加します。

chmod g+w /usr/local/workdir

(「workdir」にグループの書き込みを許可する)


 以下の実行画面4では、既に「/usr/local/workdir」へ移動しているので、「chmod g+w .」を実行しています。

画面4 画面4 グループに書き込み許可を追加した結果を確認

 これでtestusersグループに所属しているユーザーpenguinとseagullは、「/usr/local/workdir」にファイルやディレクトリを作成できるようになりました。

 しかし、作成したファイルの所属グループは、まだそれぞれの「プライマリーグループ」のままです。また、「/usr/local/workdir」の「その他」に対するパーミッションが「r-x」となっているため、testusersグループ以外のメンバーもディレクトリへのアクセスが可能なままになっています。

ディレクトリのパーミッションを変更する

 chmodコマンドで、「/usr/local/workdir」のパーミッションを「2770」に変更します。

 1桁目の「2」が「SGID(set-group-ID)」です。これによって、「workdirで作成したファイルの所有グループは、自動でworkdirのグループとなる」ということになります。

 このようにすることで「/usr/local/workdir」でユーザーpenguinが作成したファイルは、所有者「penguin」、所有グループ「testusers」となります。そして、testusersグループに属する他のユーザーも自由に読み書きできるようになります。

 続く3桁の「770」の指定によって、ディレクトリの所有者と所有グループにだけファイルのフルアクセス(rwx)を許可し、その他、つまりtestusersグループに属していないメンバーにはアクセスできないようになります。

 なお、パーミッションに「2770」を指定した場合は、testusersグループのメンバーはどのファイルでも削除可能なので、他のユーザーが所有するファイルも削除することができます。

 もし、これが不都合である場合は、1桁目の特殊な属性に「1(削除制限)」を指定します。「2」のSGID設定も生かしたいので「3」とし()、「chmod 3770 ディレクトリ」と設定します。

【※】属性はビット演算で行います。「1(2進数で01)」と「2(二進数で10)」の両方を有効にするには、1+2=3(2進数で11)をセットします。



chmod 2770 /usr/local/workdir

(SGIDと770(rwxrwx---)を設定する)(画面5

chmod 3770 /usr/local/workdir

(SGIDと削除制限と770(rwxrwx---)を設定する)


画面5 画面5 パーミッションを「2770」または「3770」に設定する

1桁目の「1(ディレクトリの場合は削除制限を意味する属性)」は「STICKY属性」と呼ばれています。CentOSの場合、「dircolors」のデフォルト設定で、STICKYでその他は書き込み不可の場合「37;44(白文字・青背景)」が設定されています。なお、似たようなディレクトリに「STICKY_OTHER_WRITABLE」があり、これは「30;42(黒文字・緑背景)」で表示されます。「/tmp」ディレクトリが該当します。



ファイルを作成してみよう(2)

 それでは、パーミッションが「3770」の状態で、ファイルを作成してみましょう。ユーザーpenguinでログインして「/usr/local/workdir」へ移動し、ファイルを作成してみます。SGIDが有効なため、ファイルの所有者は「testusers」になることが分かります(画面6)。

画面6 画面6 「3770」のディレクトリでファイルを新規作成する

 続いて、同じくtestusersグループのメンバーであるseagullでログインします。先ほどユーザーpenguinが作成したファイルを参照したり、書き換えたりすることはできますが、削除することはできません(画面7)。

画面7 画面7 削除制限のため作成者ではないユーザーはファイルを削除できない

 パーミッションが「2770」の場合は、ユーザーseagullでもpenguinが所有するファイルを削除することができます(画面8

画面8 画面8 共有ディレクトリを「2770」にすると削除できるようになる

 実際の運用でパーミッションを「770」にするか、「2770」にするか、または「3770」にするかはケースバイケースです。共有したい内容によって適宜選択してください。

後始末

 最後に“後始末”です。テスト用に作成したtestusersグループを削除し、テスト用のディレクトリを削除します。

gpasswd -d penguin testusers

(ユーザー「penguin」を「testusers」グループから削除する)

gpasswd -d seagull testusers

(ユーザー「seagull」を「testusers」グループから削除する)

groupdel testusers

(「testusers」グループを削除する)

userdel -r penguin

(ユーザー「penguin」を削除する。「-r」はホームディレクトリなども一緒に削除するオプション)

userdel -r seagull

(ユーザー「seagull」を削除する)

rm -rf /usr/local/workdir/*

(「/home/workdir」の中身を削除する)

rmdir /usr/local/workdir/

(「/home/workdir」を削除する)


 上記コマンドは、全て管理者権限で実行する必要があります。以下の画面9の実行例では、操作ミスによる被害を防ぐために「/usr/local」ディレクトリに移動してから操作しています。

画面9 画面9 テスト用のグループとユーザーおよびディレクトリを削除した

筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。