ONTAP 9.x環境でActive DirectoryとNISとでユーザ名マッピングを行わせた場合の確認手法


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::*>

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください