複数のメンバー、複数のグループで共有可能なフォルダを作成する
member serverの共有フォルダに、windows操作でコントロール可能なサブフォルダを用意してみる

参照先 https://wiki.samba.org/index.php/Shares_with_POSIX_ACLs
https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs
2015y11m26d_223132255.png
NFSはmember serverでsmb.confや/shareのACLsを操作して共有フォルダを提供する。

member serverを作る

まずはNFSマシンをmember serverに仕立てる。
/etc/hostsと/etc/resolv.confを調整して、

[root@nfs ~]# vi /etc/hosts
127.0.0.1    localhost.localdomain localhost
192.168.0.11 nfs.sybyl.local nfs
 
[root@nfs ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search sybyl.local
nameserver 192.168.0.3
 
[root@nfs ~]#

次に、sambaをインストールしてmember serverにさせます。
samba/Linux参加で示した sssd による方法と、samba/Linux参加/winbinddのwinbindによる方法がありますが、
ここでは winbinid の方法で参加させてみます。

[root@nfs ~]# yum install samba samba-winbind      <-- yumのパッケージを利用します
[root@nfs ~]# vi /etc/samba/smb.conf
[global]
  workgroup = SYBYL
  security = ADS
  realm = SYBYL.LOCAL
  idmap config SYBYL:backend = ad
  idmap config SYBYL:range = 1000-30000
  idmap config SYBYL:unix_nss_info = yes  <-- backendが[ad]の際、shellやhomedirの値も利用する
  idmap config *:range = 30001-30010
  idmap config *:backend = tdb
  winbind nss info = rfc2307
  winbind use default domain = true
  vfs objects = acl_xattr
  map acl inherit = yes
  store dos attributes = yes
 
[root@nfs ~]# net ads join osName=CentOS osVer=7.4 -Uadministrator
Enter administrator's password:
Using short domain name -- SYBYL
Joined 'NFS' to dns domain 'sybyl.local'
[root@nfs ~]#

これでSYBYLドメインに参加した。
認証およびユーザ情報を winbind 経由で引くには authconfig で設定を行う

[root@nfs ~]# authconfig --enablewinbind --enablewinbindauth --update

これでデーモン winbindd が起動します。
確認のためユーザ情報を引いて見ます。

[root@nfs ~]# getent passwd illya
illya:*:1002:3000:Illyasviel von Einzbern:/home/illya:/bin/bash
 
[root@nfs ~]# getent group fate
fate:x:2000:
 
[root@nfs ~]#

一方でADDCにてUID,GIDを定義していないユーザは引けない。

[root@nfs ~]# getent passwd administrator
[root@nfs ~]# getent group "domain admins"

留意
idmapのbackendを「rid」に変更すれば、このようなUID,GIDがないアカウントに対しても自動的にIDを振ってくれます。
しかしそれはこのmember serverだけで有効なUID,GIDである。nfsとして他のマシン(windows/Linux)と共有すると同じユーザなのに
参照できないファイル、フォルダが作られる可能性が生じる。

一応、「rid」だからたぶん大丈夫だと思うけど、ユーザ作成時にUID,GIDの定義が不可で既存のリソースとの連携に支障がありえる

っで「共有フォルダ」の作成をwindows操作で作って、グループ、ユーザに権限をアサインするには
「administrator」と「domain admins」のUID,GIDを定義する必要がある。

「Administrator」と「Domain Admins」のUID,GID定義

windwosマシンからドメインのAdministratorでログインして、「ActiveDirectoryユーザとコンピュータ」から定義します。
まず「Domain Admins」を開き、下記のように定義します。
2017y10m02d_140913067.png

その後、「Administrator」を開き、これも下記のように定義します。
2017y10m02d_140949955.png

共有フォルダを作る(ACL制御)

まず管理者権限を有するユーザにSeDiskOperatorPrivilege権限を与える
現在このSeDiskOperatorPrivilege権限を有しているのは

[root@nfs ~]# net rpc rights list privileges SeDiskOperatorPrivilege  -U"SYBYL\Administrator"
Enter SYBYL\Administrator's password:
SeDiskOperatorPrivilege:
  BUILTIN\Administrators
 
[root@nfs ~]#

から「Administrators」グループが所有している。これに「Domain Admin」グループも追加します

[root@nfs ~]# net rpc rights grant "SYBYL\Domain Admins" SeDiskOperatorPrivilege -U "SYBYL\administrator"
Enter SYBYL\administrator's password:
Successfully granted rights.
 
[root@nfs ~]#

そして管理者権限を有するユーザがwindows画面で操作して、作ったフォルダを特定のユーザだけ利用できるようにしてみる。
smb.confに共有フォルダの場所定義を追加して、その設定を反映させる

[root@nfs ~]# mkdir -p /share
[root@nfs ~]# ls -ld /share
drwxr-xr-x 2 root root 6 10月  2 20:45 /share
 
[root@nfs ~]# cat <<_EOF_>>/etc/samba/smb.conf
[share]
  path=/share/
  read only=no
  inherit acls = yes
_EOF_
[root@nfs ~]# smbcontrol all reload-config

ここでwindowsPCからドメインのadministratorであっても\\nfs\shareにフォルダは追加できない。エラーになります。
ここからACLを付与していきます。

[root@nfs ~]# setfacl -m group::--- /share/
[root@nfs ~]# setfacl -m default:group::--- /share/
[root@nfs ~]# setfacl -m group:"SYBYL\Domain Admins":rwx /share/
[root@nfs ~]# setfacl -m group:"SYBYL\Domain Users":r-x /share/
[root@nfs ~]# setfacl -R -m other::--- /share/

ここで/share/のACLを確認してみます。

[root@nfs ~]# cd /
[root@nfs /]# getfacl share
# file: share
# owner: root
# group: root
user::rwx
group::---
group:domain\040users:r-x
group:domain\040admins:rwx
mask::rwx
other::---
default:user::rwx
default:group::---
default:other::r-x
 
[root@nfs /]#

ここで再度windowsPCから \\nfs\share に新規フォルダ「emiya」を作成する。
この作ったフォルダ「emiya」のプロパティを開いて、「セキュリティ」タブから利用するユーザを追加して、
権限に「フルコントロール」を与える。
2017y10m02d_210208041.png
これで、フォルダ「emiya」はユーザ「illya」と「saber」が自由に利用できる。

共有フォルダを作る(UNIX ACL編)

従来からある方法。こっちの方が単純明快。
グループ fate に所属するユーザだけが利用できる共有フォルダを作ってみる

[root@nfs ~]# mkdir -p /fate
[root@nfs ~]# chmod 770 /fate
[root@nfs ~]# chgrp fate /fate
[root@nfs ~]# cat <<_EOF_>>/etc/samba/smb.conf
[fate]
  path=/fate/
  read only = no
  valid users = +SYBYL\fate
_EOF_
[root@nfs ~]# smbcontrol all reload-config

この場合、ドメインのAdministratorで調整は出来ません。。。
samba member serverマシン内でsetfaclコマンドを駆使して調整するしかないです。
ユーザ単位でACLを行う場合はかなり面倒かと思う

書き込むユーザは別々だけど、同一のユーザ(nobody)で保存させるには

まず共有フォルダを用意して、そのフォルダの所有権を代える。ここではnobodyのgroupを設定

[root@nfs ~]# mkdir -p /data
[root@nfs ~]# chmod 770 /data
[root@nfs ~]# chgrp nobody /data
[root@nfs ~]# cat <<_EOF_>>/etc/samba/smb.conf
[data]
  path=/data/
  read only = no
  force user = nobody
  force group= nobody
_EOF_
[root@nfs ~]# smbcontrol all reload-config

これでドメインユーザなら誰でも \\nfs\data\ にアクセスできて、そこに置いたファイルは nobody:nobody の所有物になる。

ドメインに登録されていないユーザでも書き込める共有フォルダを用意する

パスワードなしで共有可能なフォルダ。
具体的には

  • ドメインに参加していないマシンから、ドメインに登録していないユーザでも利用できる共有フォルダ
  • ドメインに参加しているマシンで、ローカルアカウント(ドメインユーザ名以外)でも利用できる共有フォルダ

を作る。先ずフォルダを用意して、誰でも書き込み可能とする
*後述の特定のユーザ所有物(nobody)にしたい場合、chown nobody /share/imageとする

[root@nfs ~]# mkdir /image
[root@nfs ~]# chmod 777 /image
[root@nfs ~]# vi /etc/samba/smb.conf
[global]
 :
 map to guest = Bad Password
 guest account = nobody
 :
[image]
  path=/image/
  read only = no
  guest ok = yes
[root@nfs ~]# smbcontrol all reload-config

*共有フォルダに置かれたフォルダ、ファイルの所有者は認証を経ていればそのユーザの所有物になる
認証を経由しないならnobodyの所有となる
特定のユーザの所有物に固定したいなら、force user、force groupを適用する
要注意 map to guestActiveDirectoryドメインコントローラでは機能しない。メンバサーバのみ有効
参照:https://wiki.samba.org/index.php/FAQ#How_Do_I_Enable_Guest_Access_to_a_Share_on_a_Samba_AD_DC.3F
既に smb が稼働しているのなら

[root@nfs ~]# smbcontrol all reload-config

と設定ファイルを再読み込みする。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-10-02 (月) 21:16:11 (72d)