macOS가 호스팅하는 SMB에서 사용자가 파일을 편집하거나 인증할 수 없는 경우

사용자의 서버 정보, 연결 및 디렉토리 세부 정보를 확인하거나 접근 권한을 변경해야 할 수 있습니다.

이 문서는 기업 및 교육 시스템 관리자를 위해 작성되었습니다.

서버 정보 확인하기

사용자가 서버의 올바른 사용자 이름, 암호 및 호스트 이름 또는 IP 주소를 알고 있는지 확인합니다.

서버와 동일한 디렉토리에 바인딩하기

macOS 서버가 Open Directory를 실행 중이거나 Open Directory 또는 Active Directory에 바인드되어 있는 경우 동일한 디렉토리 서버에 인증된 바인딩을 수행합니다. 이렇게 하면 클라이언트에서 Kerberos 및 세션 서명을 사용할 수 있습니다. Kerberos를 사용하여 인증하려면 DNS를 사용하여 서버도 지정해야 합니다.

Open Directory에서 NTLMv2 켜기

Open Directory를 사용 중이고 클라이언트가 Open Directory 마스터에 바인드되지 않는 경우 NTLMv2를 켜야 할 수 있습니다.

  1. 다음 터미널 명령을 사용하여 Open Directory 마스터에 어떤 인증 메커니즘이 켜져 있는지 확인합니다. 
    dscl /LDAPv3/127.0.0.1 -read /config/dirserv apple-enabled-auth-mech
  2. 디렉토리 관리자 암호를 입력합니다. 필요에 따라 Open Directory 관리자 암호를 재설정할 수 있습니다.
  3. 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 서버에 접근할 수 있는지 확인하기

  1. SMB 서버에서 다음 터미널 명령을 실행하여 접근 권한이 특정 사용자들에게 제한되어 있는지 알아봅니다.
    dscl . read /Groups/com.apple.access_smb
  2. 다음 터미널 명령을 실행하여 사용자의 GUID를 확인합니다.
    dscl /Search read /Users/<username> GeneratedUID
  3. 다음 터미널 명령을 실행하여 사용자를 SMB SACL(서비스 접근 제어 목록)에 추가합니다. 
    sudo dscl /Local/Default append Groups/com.apple.access_smb GroupMembership <username>
    sudo dscl /Local/Default append Groups/com.apple.access_smb GroupMembers <guid>
    

SACL을 제거하려면 다음 터미널 명령을 사용합니다.

sudo dscl /Local/Default delete /Groups/com.apple.access_smb

공유 접근 권한 확인하기

공유 환경설정에서 사용자들이 그룹 또는 개별 사용자로서 하나 이상의 공유 포인트에 접근할 수 있는지 확인합니다. 

읽기/쓰기 접근 제어 목록 확인하기

사용자가 접근 권한을 가진 공유 포인트에 쓸 수 없는 경우 공유 포인트에서 방문자 접근을 일시적으로 끕니다. 이렇게 하면 사용자가 방문자로 연결되지 않습니다. 방문자 접근은 고급 파일 공유 옵션 아래에 있습니다.

사용자가 새 파일을 추가할 수는 있지만 다른 사용자가 만든 파일을 편집할 수 없는 경우 그룹 수준의 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
게시일: