macOSでホストされているSMB上のファイルをユーザが編集または認証できない場合
ユーザのサーバ情報、接続状況、ディレクトリの詳細情報の確認や、アクセス権の調整が必要になることが考えられます。
この記事は、企業や教育機関のシステム管理者を読者として想定しています。
サーバ情報を確認する
ユーザが正しいユーザ名、パスワード、サーバのホスト名やIPアドレスを把握していることを確認してください。
サーバと同じディレクトリにバインドする
macOSサーバでOpen Directoryを実行している場合や、macOSサーバがOpen DirectoryまたはActive Directoryにバインドされている場合は、同じディレクトリサーバへの認証バインドを実行してください。そうしておけば、クライアントがKerberosやセッション署名を使えるようになります。Kerberos認証では、DNSを使ってサーバを指定する必要もあります。
Open DirectoryでNTLMv2を有効にする
Open Directoryを利用していて、クライアントがOpen Directoryマスターにバインドできない場合は、必要に応じてNTLMv2を有効にしてください。
以下のターミナルコマンドを使って、Open Directoryマスターで有効になっている認証方式を確認します。
dscl /LDAPv3/127.0.0.1 -read /config/dirserv apple-enabled-auth-mech
ディレクトリ管理者のパスワードを入力します。必要に応じて、Open Directory管理者のパスワードをリセットできます。
Server.appでOpen Directoryを停止し、再起動します。
SMB-NTLMv2が結果に表示されない場合は、以下のターミナルコマンドを使って手動で追加できます。
dscl -u diradmin -p /LDAPv3/127.0.0.1 -append /Config/dirserv apple-enabled-auth-mech SMB-NTLMv2
ユーザがSMBサーバにアクセスできるか確認する
SMBサーバで以下のターミナルコマンドを実行し、アクセスが特定のユーザに制限されているかどうかを確かめます。
dscl .read /Groups/com.apple.access_smb
ユーザのGUIDを確認します。
dscl /Search read /Users/<ユーザ名> GeneratedUID
そのユーザをSMBサービスアクセス制御リスト(SACL)に追加します。
sudo dscl /Local/Default append Groups/com.apple.access_smb GroupMembership <ユーザ名> sudo dscl /Local/Default append Groups/com.apple.access_smb GroupMembers <guid>
SACLを削除したい場合は、以下のターミナルコマンドを使います。
sudo dscl /Local/Default delete /Groups/com.apple.access_smb
共有へのアクセスを確認する
ユーザが少なくとも1つの共有にグループ単位で、または個人ユーザとしてアクセスできるようになっているか共有設定を調べて確認します。
読み込み/書き込みACLを確認する
ユーザがアクセス権を持っている共有に書き込めない場合は、共有へのゲストアクセスを一時的に無効にします。これで、ゲストとして接続していないか確認できます。ゲストアクセスは、ファイル共有の詳細オプションで設定されています。
ユーザが新しいファイルを追加できるのに、ほかのユーザが作成したファイルを編集できない場合は、グループレベルのアクセス制御リスト(ACL)を作成する必要があると考えられます。ACLを追加するには、以下のコマンドラインを使います。グループ名と共有ポイントへのパスは実際の値と置き換えてください。
sudo chmod -R +a "group:YourGroupName allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Volumes/volumename/path/to/share