1.11. ユーザーが Samba サーバーのディレクトリーを共有できるようにする

Samba サーバーでは、root 権限なしでユーザーがディレクトリーを共有できるように設定できます。

1.11.1. ユーザーの共有機能の有効化

ユーザーがディレクトリーを共有できるようにするには、管理者が Samba でユーザー共有を有効にする必要があります。

たとえば、ローカルの example グループのメンバーのみがユーザー共有を作成できるようにするには、以下を実行します。

手順

  1. ローカルの example グループが存在しない場合は作成します。

    # groupadd example
  2. ユーザー共有の定義を保存し、その権限を正しく設定するために、Samba 用のディレクトリーを準備します。以下に例を示します。

    1. ディレクトリーを作成します。

      # mkdir -p /var/lib/samba/usershares/
    2. example グループの書き込み権限を設定します。

      # chgrp example /var/lib/samba/usershares/
      # chmod 1770 /var/lib/samba/usershares/
    3. このディレクトリーの他のユーザーが保存したファイルの名前変更や削除を禁止するように sticky ビットを設定します。
  3. /etc/samba/smb.conf ファイルを編集し、以下を [global] セクションに追加します。

    1. ユーザー共有の定義を保存するように設定したディレクトリーのパスを設定します。以下に例を示します。

      usershare path = /var/lib/samba/usershares/
    2. このサーバーで Samba を作成できるユーザー共有の数を設定します。以下に例を示します。

      usershare max shares = 100

      usershare max shares パラメーターにデフォルトの 0 を使用すると、ユーザー共有が無効になります。

    3. 必要に応じて、ディレクトリーの絶対パスのリストを設定します。たとえば、Samba が /data ディレクトリーおよび /srv ディレクトリーのサブディレクトリーの共有のみを許可するように設定するには、以下を設定します。

      usershare prefix allow list = /data /srv

    設定可能なユーザー共有関連のパラメーターのリストは、man ページの smb.conf(5)USERSHARES セクションを参照してください。

  4. /etc/samba/smb.conf ファイルを検証します。

    # testparm
  5. Samba 設定を再読み込みします。

    # smbcontrol all reload-config

    これで、ユーザーが、ユーザー共有を作成できるようになりました。

1.11.2. ユーザー共有の追加

Samba でユーザー共有機能を有効にすると、ユーザーは net usershare add コマンドを実行して、root 権限なしで Samba サーバーのディレクトリーを共有できます。

net usershare add コマンドの構文:

net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]

重要

ユーザー共有の作成時に ACL を設定する場合は、ACL の前に comment パラメーターを指定する必要があります。空のコメントを設定するには、空の文字列を二重引用符で囲みます。

管理者が、/etc/samba/smb.conf ファイルの [global] セクションで usershare allow guests = yes に設定すると、ユーザーはユーザー共有上でのみゲストアクセスを有効にできることに注意してください。

例1.5 ユーザー共有の追加

ユーザーが、Samba サーバーで /srv/samba/ ディレクトリーを共有する場合があります。共有には、example という名前を付け、コメントを設定しないようにし、ゲストユーザーがアクセスできるようにします。また、共有権限は、AD\Domain Users グループへのフルアクセスと、その他のユーザーへの読み取り権限を設定する必要があります。この共有を追加するには、そのユーザーで以下を実行します。

$ net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes

1.11.3. ユーザー共有の設定の更新

ユーザー共有の設定を更新するには、同じ共有名と新しい設定で net usershare add コマンドを使用して共有を上書きします。

ユーザー共有の追加 を参照します。

1.11.4. 既存のユーザー共有に関する情報の表示

ユーザーは、Samba サーバーで net usershare info コマンドを実行して、ユーザーの共有および設定を表示できます。

前提条件

  • ユーザー共有が Samba サーバーに設定されている。

手順

  1. 任意のユーザーが作成したすべてのユーザー共有を表示するには、以下のコマンドを実行します。

    $ net usershare info -l
    [share_1]
    path=/srv/samba/
    comment=
    usershare_acl=Everyone:R,host_name\user:F,
    guest_ok=y
    ...

    コマンドを実行するユーザーが作成した共有のみをリスト表示するには、-l パラメーターを省略します。

  2. 特定の共有に関する情報のみを表示するには、共有名またはワイルドカードをコマンドに渡します。たとえば、名前が share_ で始まる共有の情報を表示する場合は、以下のコマンドを実行します。

    $ net usershare info -l share_* 

1.11.5. ユーザー共有のリスト表示

Samba サーバーで設定を行わずに利用可能なユーザー共有のみをリスト表示するには、net usershare list コマンドを使用します。

前提条件

  • ユーザー共有が Samba サーバーに設定されている。

手順

  1. 任意のユーザーが作成した共有をリスト表示するには、以下のコマンドを実行します。

    $ net usershare list -l
    share_1
    share_2
    ...

    コマンドを実行するユーザーが作成した共有のみをリスト表示するには、-l パラメーターを省略します。

  2. 特定の共有のみをリスト表示するには、共有名またはワイルドカードをコマンドに渡します。たとえば、名前が share_ で始まる共有のみをリスト表示するには、以下のコマンドを実行します。

    $ net usershare list -l share_* 

1.11.6. ユーザー共有の削除

ユーザー共有を削除するには、共有を作成したユーザーまたは root ユーザーで、net usershare delete コマンドを実行します。

前提条件

  • ユーザー共有が Samba サーバーに設定されている。

手順

$ net usershare delete share_name