PR

共有フォルダの運用パラメーター

2009年1月13日(火)
唐木 大介

共有フォルダ上のアクセス許可を継承したい

 今回はSamba共有フォルダ設定に利用するパラメーターについて解説します。

 Sambaでアクセス権を設定する場合は、smb.confに記載する共有アクセス許可とファイルシステムのパーミッションを利用します。さらに、CentOS 5.2であればこれらに加えext3のACLを利用します。

 共有フォルダ上に作成したディレクトリ内にファイルを作成した場合、WindowsのNTFSであれば、上位のディレクトリのアクセス許可が継承されます。

 Sambaの場合もこのアクセス許可の継承を利用できますが、デフォルトの設定では「継承が無効」(「inherit permission = no」「inherit acls = no」)になっています。また「create mask=0744」と「directory mask=0755」となっているため、同じグループのユーザーが書き込めない状態になります。よって運用を考えて、これらのパラメーターを適切に設定する必要があります。

 1つのグループへのアクセス許可しか設定できないパーミッションでなく、複数グループへのアクセス許可を設定できるACLを利用する場合は、「inherit acls」パラメーターを利用します。「inherit acls = yes」とすることにより、上位のディレクトリに付与されているACLアクセス許可すべてが継承可能となりファイル、フォルダ作成時に自動的に付与されます。

inherit acls = yes

 あわせて「create mask」と「directory mask」も意図するアクセス許可が可能なmask値を設定する必要があります。

 デフォルトが「0744」となっていた「create mask」には、グループの書き込みアクセス許可「0020」を追加した「0764」以上を設定する必要があります。

create mask = 0764

 「directory mask」も同様にデフォルトの「0755」にグループの書き込みアクセス許可「0020」を追加した「0775」以上を設定する必要があります。

directory mask = 0775

 例として上記3つのパラメーターを設定したdevel共有フォルダにある「月次レポート」フォルダのアクセス許可を図1-1のように変更します。develグループが参照可能、devel-mgrグループがフルコントロールと設定しています。

 さらに「月次レポート」フォルダ内に作成した「2008」フォルダのアクセス許可は、図1-2の通り上位のフォルダと同一のアクセス許可となっています。

force create modeとcreate maskの違い

 先ほどから紹介してる「create mask」と「directory mask」は共有フォルダ上に作成できるアクセス許可の上限値を指定しています。共有フォルダ内に誰でも読めるファイルを格納したくない場合は、「create mask = 0760」としておくことで、ファイルのオーナーであっても、グループ以外のメンバーが読み込めるファイルを作成することはできません。「directory mask」も同様です。

 しかし、ユーザーの操作により、「create mask」より低いアクセス権の設定は可能です。これを防ぎたい場合は、似たパラメーターである「force create mode」を使います。「force create mode」で指定されたアクセス許可以外のファイルは作成できず、アクセス許可の種類を変更することはできません。「force create mode = 660」とした場合は、グループのユーザーが書き込みできないファイルは作成できなくなります。

オープンソース・ソリューション・テクノロジ株式会社
ハードウエア保守、サーバーベンダーのサポート、WindowsネットワークならびにNotesDomino管理を経由し、2002年から某Linuxディストリビューターにて、OSの開発とサポート、コンサルティングを担当し、現在はそのときの上司の下でコンサルタントをしています。得意分野はLinuxとHAクラスタソフトウェア、特にハードウエアとOSの境目が好き!http://www.osstech.co.jp/

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています