Windows Active Direcotry環境とNISによるユーザ管理を行っているSolaris/Linux環境の両方からONTAP 9.9上の共有にアクセスする場合、ユーザ名マッピング設定を行う。
ただ、指定したマッピングが正しく動いているかを確認する方法がわかりにくいのでメモ書き。
(関連資料「ONTAP 9.xでntpやDNSの動作確認」)
今回はStorage VM:netapp103に対して、 Active Directory:VM2 (vm2.adosakana.local) と NISドメイン:nisdom を接続した。
NISに接続できているかを確認
「vserver services name-service nis-domain show」で設定を確認
netapp101::> vserver services name-service nis-domain show
NIS
Vserver Domain Server
------------- ------------------- ------------------------------------
netapp103 nisdom 172.17.44.49
netapp101::>
接続できているかを確認するには「vserver services name-service nis-domain show-bound」を実行する。接続できている場合は「Bound NIS Server」に接続出来ているNISサーバのIPアドレスが表示される。
netapp101::> vserver services name-service nis-domain show-bound
Bound
Vserver Domain NIS Server
------------- ------------------- -----------------
netapp103 nisdom 172.17.44.49
netapp101::>
接続できていない場合は、「-」という表示になる
netapp101::> vserver services name-service nis-domain show-bound
Bound
Vserver Domain NIS Server
------------- ------------------- -----------------
netapp103 nisdom -
netapp101::>
なぜ接続出来ていないかを確認するには権限をdiagに変更した上で「vserver services name-service nis-domain show-bound-debug」を実行して確認する。(advancedでは使えない)
netapp101::*> vserver services name-service nis-domain show-bound-debug
Bound Bound
Vserver Domain NIS Server Status
------------- ------------------- ----------------- -------------------
netapp103 nisdom 172.17.44.49 Could not connect to server
netapp101::*>
今回は「Could not connect to server」ということで、NISサーバへの接続がうまくいかない、ということだった。確認したところ、途中のfirewall設定の問題でNISに関するポートが空いていないためだった。
設定変更後、手動でNISの再接続を行う場合は、ypbindの再起動を行う。このコマンドはノード名を指定することに注意
netapp101::*> vserver services name-service ypbind restart -node ノード名
netapp101::*>
再度「vserver services name-service nis-domain show-bound-debug」を実行して「Status: Success」となっていれば問題ない。
netapp101::*> vserver services name-service nis-domain show-bound-debug
Bound Bound
Vserver Domain NIS Server Status
------------- ------------------- ----------------- -------------------
netapp103 nisdom 172.17.44.49 Success
netapp101::*>
ネームサービススイッチ設定
/etc/nsswitch.confに相当する設定をStorage VMに対して行い、ユーザ名とグループ名に関してNISから情報を持ってくるように設定する。
設定を確認するには「vserver services ns-switch show」を実行する
netapp101::> vserver services ns-switch show
Source
Vserver Database Order
--------------- ------------ ---------
netapp103 hosts files,
dns
netapp103 group files,
nis
netapp103 passwd files,
nis
netapp103 netgroup files
netapp103 namemap files
netapp101 hosts files,
dns
netapp101 group files
netapp101 passwd files
8 entries were displayed.
netapp101::>
UNIX側でLDAP情報を使っていない場合は、LDAPを登録する必要は無い。(Windows側だけでActive Directory/LDAPを使っている場合はnsswitchには登録しない)
なお、ONTAP 9.xでは、NISを使用できるのは passwd, group, netgroup となっており、hosts では使用できない。
情報取得の確認
まず、UNIX側のユーザ名とUIDに関する情報がひけるかを確認するため「vserver services name-service getxxbyyy getpwbyname」と「vserver services name-service getxxbyyy getpwbyuid」を実行する。
これらはadvanced権限が必要となっているので「set adv」で切り替えてから実行する。
netpp101::*> vserver services name-service getxxbyyy getpwbyname -vserver netapp103 -username osakanataro
pw_name: osakanataro
pw_passwd: !!
pw_uid: 1000
pw_gid: 1000
pw_gecos:
pw_dir: /home/osakanataro
pw_shell: /bin/bash
netpp101::*> vserver services name-service getxxbyyy getpwbyuid -vserver netapp103 -userID 1000
pw_name: osakanataro
pw_passwd: !!
pw_uid: 1000
pw_gid: 1000
pw_gecos:
pw_dir: /home/osakanataro
pw_shell: /bin/bash
netpp101::*>
このような形で情報が引けたら問題ない
うまく取得出来ていない場合は、下記の様な出力となる
netapp101::*> vserver services name-service getxxbyyy getpwbyname -vserver netapp103 -username osakanataro
Error: command failed: Failed to resolve osakanataro. Reason: Entry not found for
"username: osakanataro".
netapp101::*>
マッピング設定
UNIX/Linuxのユーザ名/UIDとWindowsのユーザ名/SIDを変換するには ONTAPにネームマッピング設定を行う必要がある。
WindowsからUNIX/Linuxに対するマッピング(win-unix)と、UNIX/Linuxに対するマッピング(unix-win)の2種類を設定する必要がある。
netapp101::> vserver name-mapping show
Vserver: netapp103
Direction: win-unix
Position Hostname IP Address/Mask
-------- ---------------- ----------------
1 - - Pattern: VM2\\*
Replacement: *
Vserver: netapp103
Direction: unix-win
Position Hostname IP Address/Mask
-------- ---------------- ----------------
1 - - Pattern: *
Replacement: VM2\\*
2 entries were displayed.
netapp101::>
基本的に1対1となるようであれば、「ADドメイン\Windowsユーザ名」→「UNIXユーザ名」というルール(win-unixにある「VM2\\* → *」)と「UNIXユーザ名」→「ADドメイン\Windowsユーザ名」(unix-winにある「* → VM2\\*」)を設定することになる。
なお、”\”は2つ指定する必要がある。
マッピングの確認
実際にどのようなマッピングが行われているのかを確認するには「vserver services access-check name-mapping show」を使います。このコマンドもadvanced権限が必要です。
netapp101::*> vserver services access-check name-mapping show -vserver netapp103 -direction win-unix -name osakanataro
ATTENTION: Mapping of Data ONTAP "admin" users to UNIX user "root" is enabled, but the following information does not reflect this mapping.
'osakanataro' maps to 'osakanataro'
netapp101::*>
Windowsの名前からUNIXを探すときはにユーザ名を「-name "vm2\\osakanataro"」というように"でくくると正常な動作とならないので注意。
また、ドメインとユーザの区切りは「\\」と2つ続ける必要がある。
netapp101::*> vserver services access-check name-mapping show -vserver netapp103 -direction win-unix -name vm2\\osakanataro
ATTENTION: Mapping of Data ONTAP "admin" users to UNIX user "root" is enabled, but the following information does not reflect this mapping.
'vm2\\osakanataro' maps to 'osakanataro'
netapp101::*> vserver services access-check name-mapping show -vserver netapp103 -direction unix-win -name osakanataro
'osakanataro' maps to 'VM2\osakanataro'
netapp101::*>
なお、NISサーバにアクセスできない場合にこのコマンドを実行すると、以下の様な結果になります。
netapp101::*> vserver services access-check name-mapping show -vserver netapp103 -direction unix-win -name osakanataro
Vserver: netapp103 (internal ID: 3)
Error: RPC map name request procedure failed
[ 4 ms] Mapping Successful for Unix-user 'osakanataro' to Windows
user 'VM2*' at position 1
[ 11] Successfully connected to ip 172.17.44.49, port 445 using
TCP
[ 59] Unknown error: 12
[ 59] Failed to initiate Kerberos authentication. Trying NTLM.
[ 70] Encountered NT error (NT_STATUS_MORE_PROCESSING_REQUIRED)
for SMB command SessionSetup
[ 95] Successfully authenticated with DC
samba.adosakana.local
[ 109] Encountered NT error (NT_STATUS_PENDING) for SMB command
Read
[ 117] Could not find Windows name 'VM2*'
**[ 120] FAILURE: Name mapping for UNIX user 'osakanataro' failed.
** Explicit Mapping failed and no default mapping found
Error: command failed: Failed to find mapping for the user. Reason: "SecD
Error: The mapped user does not exist and no default user is defined".
netapp101::*>
ファイル権限確認
ONTAP上に置かれているファイルの権限をONTAP OS上から確認する「vserver security file-directory show-effective-permissions」がadvanced権限にあります。
確認したいファイル/ディレクトリをフルパスで指定します。
Windows側ユーザ名でアクセスした場合の確認。このコマンドではドメインとユーザの区切りは「\」が1つとなる。
netapp101::*> vserver security file-directory show-effective-permissions -vserver netapp103 -win-user-name VM2\osakanataro -path /sharevol/testfile.txt
Vserver: netapp103
Windows User Name: VM2\osakanataro
Unix User Name: osakanataro
File Path: /sharevol/testfile.txt
CIFS Share Path: -
Effective Permissions:
Effective File or Directory Permission: 0x1f01ff
Read
Write
Append
Read EA
Write EA
Execute
Delete Child
Read Attributes
Write Attributes
Delete
Read Control
Write DAC
Write Owner
Synchronize
netapp101::*>
UNIX/Linux側からアクセスした場合の確認
netapp101::*> vserver security file-directory show-effective-permissions -vserver netapp103 -unix-user-name osakanataro -path /sharevol/testfile.txt
Vserver: netapp103
Windows User Name: VM2\osakanataro
Unix User Name: osakanataro
File Path: /sharevol/testfile.txt
CIFS Share Path: -
Effective Permissions:
Effective File or Directory Permission: 0x1f01ff
Read
Write
Append
Read EA
Write EA
Execute
Delete Child
Read Attributes
Write Attributes
Delete
Read Control
Write DAC
Write Owner
Synchronize
netapp101::*>
細かい動作確認
ユーザ名/UID/SID変換の詳細を確認したい場合は、advanced権限にある「vserver services access-check authentication」を使います
UNIX用ユーザ名からUNIX UIDを検索
netapp101::*> vserver services access-check authentication translate -vserver netapp103 -unix-user-name osakanataro
1000
netapp101::*>
UNIX UIDからUNIX用ユーザ名を検索
netapp101::*> vserver services access-check authentication translate -vserver netapp103 -uid 1000
osakanataro
netapp101::*>
UNIX UIDからWindows用SIDを検索
netapp101::*> vserver services access-check authentication uid-to-sid -vserver netapp103 -uid 1000
SID: S-1-5-21-937304154-1581684492-536532533-1180
netapp101::*>
SIDからUNIX用ユーザ名 と Windows用ユーザ名を検索
netapp101::*> vserver services access-check authentication sid-to-unix-name -vserver netapp103 -sid S-1-5-21-937304154-1581684492-536532533-1180
SID Type: User
Unix Name: osakanataro
Domain Name: VM2
Windows Name: osakanataro
netapp101::*>
Windows用ユーザ名からSIDを検索。このコマンドではドメインとユーザの区切りは「\」が1つとなる。
netapp101::*> vserver services access-check authentication translate -vserver netapp103 -win-name osakanataro
S-1-5-21-937304154-1581684492-536532533-1180
netapp101::*> vserver services access-check authentication translate -vserver netapp103 -win-name vm2\osakanataro
S-1-5-21-937304154-1581684492-536532533-1180
netapp101::*>