3.11. ユーザーが Samba サーバーのディレクトリーを共有できるようにする
Samba サーバーでは、root 権限なしでユーザーがディレクトリーを共有できるように設定できます。
3.11.1. ユーザーの共有機能の有効化
ユーザーがディレクトリーを共有できるようにするには、管理者が Samba でユーザー共有を有効にする必要があります。
たとえば、ローカルの example
グループのメンバーのみがユーザー共有を作成できるようにするには、以下を実行します。
手順
ローカルの
example
グループが存在しない場合は作成します。# groupadd example
ユーザー共有の定義を保存し、その権限を正しく設定するために、Samba 用のディレクトリーを準備します。以下に例を示します。
ディレクトリーを作成します。
# mkdir -p /var/lib/samba/usershares/
example
グループの書き込み権限を設定します。# chgrp example /var/lib/samba/usershares/ # chmod 1770 /var/lib/samba/usershares/
- このディレクトリーの他のユーザーが保存したファイルの名前変更や削除を禁止するように sticky ビットを設定します。
/etc/samba/smb.conf
ファイルを編集し、以下を[global]
セクションに追加します。ユーザー共有の定義を保存するように設定したディレクトリーのパスを設定します。以下に例を示します。
usershare path = /var/lib/samba/usershares/
このサーバーで Samba を作成できるユーザー共有の数を設定します。以下に例を示します。
usershare max shares = 100
usershare max shares
パラメーターにデフォルトの0
を使用すると、ユーザー共有が無効になります。必要に応じて、ディレクトリーの絶対パスのリストを設定します。たとえば、Samba が
/data
ディレクトリーおよび/srv
ディレクトリーのサブディレクトリーの共有のみを許可するように設定するには、以下を設定します。usershare prefix allow list = /data /srv
設定可能なユーザー共有関連のパラメーターのリストは、man ページの smb.conf(5) の
セクションを参照してください。USERSHARES
/etc/samba/smb.conf
ファイルを検証します。# testparm
Samba 設定を再読み込みします。
# smbcontrol all reload-config
これで、ユーザーが、ユーザー共有を作成できるようになりました。
3.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
に設定すると、ユーザーはユーザー共有上でのみゲストアクセスを有効にできることに注意してください。
例3.5 ユーザー共有の追加
ユーザーが、Samba サーバーで /srv/samba/
ディレクトリーを共有する場合があります。共有には、example
という名前を付け、コメントを設定しないようにし、ゲストユーザーがアクセスできるようにします。また、共有権限は、AD\Domain Users
グループへのフルアクセスと、その他のユーザーへの読み取り権限を設定する必要があります。この共有を追加するには、そのユーザーで以下を実行します。
$ net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes
3.11.3. ユーザー共有の設定の更新
ユーザー共有の設定を更新するには、同じ共有名と新しい設定で net usershare add
コマンドを使用して共有を上書きします。ユーザー共有の追加 を参照します。
3.11.4. 既存のユーザー共有に関する情報の表示
ユーザーは、Samba サーバーで net usershare info
コマンドを実行して、ユーザーの共有および設定を表示できます。
前提条件
- ユーザー共有が Samba サーバーに設定されている。
手順
任意のユーザーが作成したすべてのユーザー共有を表示するには、以下のコマンドを実行します。
$ net usershare info -l [share_1] path=/srv/samba/ comment= usershare_acl=Everyone:R,host_name\user:F, guest_ok=y ...
コマンドを実行するユーザーが作成した共有のみをリスト表示するには、
-l
パラメーターを省略します。特定の共有に関する情報のみを表示するには、共有名またはワイルドカードをコマンドに渡します。たとえば、名前が
share_
で始まる共有の情報を表示する場合は、以下のコマンドを実行します。$ net usershare info -l share_*
3.11.5. ユーザー共有のリスト表示
Samba サーバーで設定を行わずに利用可能なユーザー共有のみをリスト表示するには、net usershare list
コマンドを使用します。
前提条件
- ユーザー共有が Samba サーバーに設定されている。
手順
任意のユーザーが作成した共有をリスト表示するには、以下のコマンドを実行します。
$ net usershare list -l share_1 share_2 ...
コマンドを実行するユーザーが作成した共有のみをリスト表示するには、
-l
パラメーターを省略します。特定の共有のみをリスト表示するには、共有名またはワイルドカードをコマンドに渡します。たとえば、名前が
share_
で始まる共有のみをリスト表示するには、以下のコマンドを実行します。$ net usershare list -l share_*
3.11.6. ユーザー共有の削除
ユーザー共有を削除するには、共有を作成したユーザーまたは root
ユーザーで、net usershare delete
コマンドを実行します。
前提条件
- ユーザー共有が Samba サーバーに設定されている。
手順
$ net usershare delete share_name