1.4. Samba ID 매핑 이해 및 구성

Windows 도메인은 고유한 SID(보안 식별자)를 통해 사용자와 그룹을 구분합니다. 그러나 Linux에는 사용자 및 그룹마다 고유한 UID와 GID가 필요합니다. 도메인 구성원으로 Samba를 실행하는 경우 winbindd 서비스는 도메인 사용자 및 그룹에 대한 정보를 운영 체제에 제공합니다.

winbindd 서비스를 활성화하여 Linux에 사용자와 그룹에 고유한 ID를 제공하려면 /etc/samba/smb.conf 파일에 ID 매핑을 구성해야 합니다.

  • 로컬 데이터베이스(기본 도메인)
  • Samba 서버가 멤버인 AD 또는 NT4 도메인
  • 사용자가 이 Samba 서버의 리소스에 액세스할 수 있어야 하는 각 신뢰할 수 있는 도메인

Samba는 특정 구성에 대해 다양한 ID 매핑 백엔드를 제공합니다. 가장 자주 사용되는 백엔드는 다음과 같습니다.

백엔드사용 사례

tdb

* 기본 도메인만 해당

ad

AD 도메인만 해당

rid

AD 및 NT4 도메인

autorid

AD, NT4 및 * 기본 도메인

1.4.1. Samba ID 범위 계획

Linux UID 및 GID를 AD에 저장하는지 여부 또는 이를 생성하도록 Samba를 구성하는지 여부에 관계없이 각 도메인 설정에는 다른 도메인과 겹치지 않아야 하는 고유한 ID 범위가 필요합니다.

주의

중복 ID 범위를 설정하면 Samba가 올바르게 작동하지 않습니다.

예 1.1. 고유 ID 범위

다음은 기본값(*), AD-DOM, 및 TRUST-DOM 도메인에 대한 인수 이외의 ID 매핑 범위를 보여줍니다.

[global]
...
idmap config * : backend = tdb
idmap config * : range = 10000-999999

idmap config AD-DOM:backend = rid
idmap config AD-DOM:range = 2000000-2999999

idmap config TRUST-DOM:backend = rid
idmap config TRUST-DOM:range = 4000000-4999999
중요

도메인당 하나의 범위만 할당할 수 있습니다. 따라서 도메인 범위 사이에 충분한 공간을 남겨 두십시오. 이렇게 하면 나중에 도메인이 확장되는 경우 범위를 확장할 수 있습니다.

나중에 도메인에 다른 범위를 할당하면 이러한 사용자와 그룹이 이전에 만든 파일과 디렉터리의 소유권이 손실됩니다.

1.4.2. * 기본 도메인

도메인 환경에서는 다음 각각에 대해 하나의 ID 매핑 구성을 추가합니다.

  • Samba 서버가 멤버인 도메인
  • Samba 서버에 액세스할 수 있는 신뢰할 수 있는 각 도메인

그러나 다른 모든 개체에 대해 Samba는 기본 도메인의 ID를 할당합니다. 여기에는 다음이 포함됩니다.

  • 로컬 Samba 사용자 및 그룹
  • BUILTIN\Administrators와 같은 Samba 기본 제공 계정 및 그룹
중요

Samba가 올바르게 작동하도록 하려면 설명된 대로 기본 도메인을 구성해야 합니다.

할당된 ID를 영구적으로 저장하려면 기본 도메인 백엔드에 쓸 수 있어야 합니다.

기본 도메인의 경우 다음 백엔드 중 하나를 사용할 수 있습니다.

tdb

tdb 백엔드를 사용하도록 기본 도메인을 구성하는 경우 나중에 생성될 오브젝트를 포함할 ID 범위를 설정하고 정의된 도메인 ID 매핑 구성의 일부가 아닌 ID 범위를 설정합니다.

예를 들어 /etc/samba/smb.conf 파일의 [global] 섹션에서 다음을 설정합니다.

idmap config * : backend = tdb
idmap config * : range = 10000-999999

자세한 내용은 TDB ID 매핑 백엔드 사용을 참조하십시오.

autorid

autorid 백엔드를 사용하도록 기본 도메인을 구성하는 경우 도메인에 대한 ID 매핑 구성을 추가하는 것은 선택 사항입니다.

예를 들어 /etc/samba/smb.conf 파일의 [global] 섹션에서 다음을 설정합니다.

idmap config * : backend = autorid
idmap config * : range = 10000-999999

자세한 내용은 Autorid ID 매핑 백엔드 사용을 참조하십시오.

1.4.3. tdb ID 매핑 백엔드 사용

winbindd 서비스는 기본적으로 쓰기 가능한 tdb ID 매핑 백엔드를 사용하여 SID(보안 식별자), UID 및 GID 매핑 테이블을 저장합니다. 여기에는 로컬 사용자, 그룹 및 기본 제공 주체가 포함됩니다.

이 백엔드는 * 기본 도메인에만 사용합니다. 예를 들어 다음과 같습니다.

idmap config * : backend = tdb
idmap config * : range = 10000-999999

추가 리소스

1.4.4. ad ID 매핑 백엔드 사용

ad ID 매핑 백엔드를 사용하도록 Samba AD 멤버를 구성할 수 있습니다.

ad ID 매핑 백엔드는 읽기 전용 API를 구현하여 AD에서 계정 및 그룹 정보를 읽습니다. 이는 다음과 같은 이점을 제공합니다.

  • 모든 사용자 및 그룹 설정은 AD에 중앙에 저장됩니다.
  • 이 백엔드를 사용하는 모든 Samba 서버에서 사용자 및 그룹 ID가 일관되게 유지됩니다.
  • ID는 손상될 수 있는 로컬 데이터베이스에 저장되지 않으므로 파일 소유권을 분실할 수 없습니다.
참고

ad ID 매핑 백엔드는 단방향 트러스트가 있는 Active Directory 도메인을 지원하지 않습니다. 단방향 트러스트를 사용하여 Active Directory에 도메인 멤버를 구성하는 경우 tdb, rid, autorid와 같은 ID 매핑 백엔드 중 하나를 대신 사용합니다.

애드혹 백엔드는 AD에서 다음 속성을 읽습니다.

AD 속성 이름오브젝트 유형매핑 대상

sAMAccountName

사용자 및 그룹

사용자 또는 그룹 이름 (오브젝트에 따라)

uidNumber

사용자

사용자 ID(UID)

gidNumber

그룹

그룹 ID(GID)

loginShell [a]

사용자

사용자 쉘의 경로

unixHomeDirectory [a]

사용자

사용자의 홈 디렉터리 경로

primaryGroupID [b]

사용자

기본 그룹 ID

[a] Samba는 idmap config DOMAIN:unix_nss_info = yes를 설정하는 경우에만 이 속성을 읽습니다.
[b] Samba는 idmap config DOMAIN:unix_primary_group = yes를 설정하는 경우에만 이 속성을 읽습니다.

사전 요구 사항

  • 사용자와 그룹 모두 AD에 고유한 ID를 설정해야 하며 ID는 /etc/samba/smb.conf 파일에 구성된 범위 내에 있어야 합니다. 범위를 벗어나는 ID가 있는 개체는 Samba 서버에서 사용할 수 없습니다.
  • 사용자와 그룹은 AD에서 모든 필수 속성을 설정해야 합니다. 필수 속성이 없으면 Samba 서버에서 사용자 또는 그룹을 사용할 수 없습니다. 필수 속성은 구성에 따라 다릅니다. . 전제 조건
  • Samba가 설치되어 있어야 합니다.
  • ID 매핑을 제외한 Samba 구성이 /etc/samba/smb.conf 파일에 있습니다.

절차

  1. /etc/samba/smb.conf 파일에서 [global] 섹션을 편집합니다.

    1. 없는 경우 기본 도메인 (*)의 ID 매핑 구성을 추가합니다. 예를 들어 다음과 같습니다.

      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
    2. AD 도메인의 ad ID 매핑 백엔드를 활성화합니다.

      idmap config DOMAIN : backend = ad
    3. AD 도메인의 사용자와 그룹에 할당된 ID 범위를 설정합니다. 예를 들어 다음과 같습니다.

      idmap config DOMAIN : range = 2000000-2999999
      중요

      범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.

    4. AD에서 속성을 읽을 때 Samba가 RFC 2307 스키마를 사용하도록 설정합니다.

      idmap config DOMAIN : schema_mode = rfc2307
    5. Samba가 해당 AD 속성에서 로그인 쉘 및 사용자 홈 디렉터리 경로를 읽을 수 있도록 하려면 다음을 설정합니다.

      idmap config DOMAIN : unix_nss_info = yes

      또는 모든 사용자에게 적용되는 균일한 도메인 전체 홈 디렉터리 경로 및 로그인 쉘을 설정할 수 있습니다. 예를 들어 다음과 같습니다.

      template shell = /bin/bash
      template homedir = /home/%U
    6. 기본적으로 Samba는 사용자 오브젝트의 primaryGroupID 속성을 Linux의 사용자 기본 그룹으로 사용합니다. 또는 대신 gidNumber 특성에 설정된 값을 사용하도록 Samba를 구성할 수 있습니다.

      idmap config DOMAIN : unix_primary_group = yes
  2. /etc/samba/smb.conf 파일을 확인합니다.

    # testparm
  3. Samba 구성을 다시 로드합니다.

    # smbcontrol all reload-config

추가 리소스

  • * 기본 도메인
  • smb.conf(5)idmap_ad(8) man 페이지
  • smb.conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션

1.4.5. 제거 ID 매핑 백엔드 사용

rid ID 매핑 백엔드를 사용하도록 Samba 도메인 멤버를 구성할 수 있습니다.

Samba는 Windows SID의 상대 식별자(RID)를 사용하여 Red Hat Enterprise Linux에서 ID를 생성할 수 있습니다.

참고

RID는 SID의 마지막 부분입니다. 예를 들어 사용자의 SID가 S-1-5-21-5421822485-11512151-421485315-30014 이면 30014 가 해당하는 RID입니다.

rid ID 매핑 백엔드는 AD 및 NT4 도메인의 알고리즘 매핑 체계를 기반으로 계정과 그룹 정보를 계산하는 읽기 전용 API를 구현합니다. 백엔드를 구성할 때 idmap config DOMAIN : range 매개변수에서 가장 낮고 가장 높은 RID를 설정해야 합니다. Samba는 이 매개 변수에 설정된 것보다 낮은 RID를 가진 사용자 또는 그룹을 매핑하지 않습니다.

중요

읽기 전용 백엔드인 ridBUILTIN 그룹과 같은 새 ID를 할당할 수 없습니다. 따라서 * 기본 도메인에 이 백엔드를 사용하지 마십시오.

remove 백엔드를 사용할 수 있는 이점

  • 구성된 범위 내에 RID가 있는 모든 도메인 사용자 및 그룹을 도메인 구성원에서 자동으로 사용할 수 있습니다.
  • ID, 홈 디렉터리 및 로그인 쉘을 수동으로 할당할 필요는 없습니다.

remove 백엔드를 사용하는 단점

  • 모든 도메인 사용자는 동일한 로그인 쉘 및 홈 디렉터리가 할당됩니다. 그러나 변수를 사용할 수 있습니다.
  • 사용자 및 그룹 ID는 모두 동일한 ID 범위 설정으로 remove 백엔드를 사용하는 경우에만 Samba 도메인 구성원에서 동일합니다.
  • 도메인 멤버는 개별 사용자 또는 그룹을 제외할 수 없습니다. 구성된 범위 밖의 사용자와 그룹만 제외됩니다.
  • formula에 따라 winbindd 서비스는 ID를 계산하기 위해 사용하는 표현식에 따라 다른 도메인의 오브젝트에 RID가 동일한 경우 다중 도메인 환경에서 중복 ID가 발생할 수 있습니다.

사전 요구 사항

  • Samba가 설치되어 있어야 합니다.
  • ID 매핑을 제외한 Samba 구성이 /etc/samba/smb.conf 파일에 있습니다.

절차

  1. /etc/samba/smb.conf 파일에서 [global] 섹션을 편집합니다.

    1. 없는 경우 기본 도메인 (*)의 ID 매핑 구성을 추가합니다. 예를 들어 다음과 같습니다.

      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
    2. 도메인에 대한 ID 매핑 제거를 활성화합니다.

      idmap config DOMAIN : backend = rid
    3. 앞으로 할당할 모든 RID를 포함할 수 있을 만큼 큰 범위를 설정합니다. 예를 들어 다음과 같습니다.

      idmap config DOMAIN : range = 2000000-2999999

      Samba는 이 도메인의 RID가 범위에 속하지 않는 사용자 및 그룹을 무시합니다.

      중요

      범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.

    4. 매핑된 모든 사용자에게 할당될 쉘 및 홈 디렉터리 경로를 설정합니다. 예를 들어 다음과 같습니다.

      template shell = /bin/bash
      template homedir = /home/%U
  2. /etc/samba/smb.conf 파일을 확인합니다.

    # testparm
  3. Samba 구성을 다시 로드합니다.

    # smbcontrol all reload-config

추가 리소스

  • * 기본 도메인
  • smb.conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션
  • RID의 로컬 ID 계산에서 idmap_rid(8) 매뉴얼 페이지를 참조하십시오.

1.4.6. 자동 덮어쓰기 ID 매핑 백엔드 사용

autorid ID 매핑 백엔드를 사용하도록 Samba 도메인 멤버를 구성할 수 있습니다.

auto rid 백엔드는 remove ID 매핑 백엔드와 유사하게 작동하지만 다른 도메인의 ID를 자동으로 할당할 수 있습니다. 이를 통해 다음과 같은 상황에서 autorid 백엔드를 사용할 수 있습니다.

  • * 기본 도메인의 경우에만
  • * 기본 도메인 및 추가 도메인의 경우 각 추가 도메인에 대한 ID 매핑 구성을 생성하지 않고도 * 기본 도메인 및 추가 도메인의 경우
  • 특정 도메인 전용
참고

기본 도메인에 autorid를 사용하는 경우 도메인에 대한 ID 매핑 구성을 추가하는 것은 선택 사항입니다.

이 섹션의 일부는 Samba Wiki에 게시된 idmap 구성 문서에서 채택되었습니다. 라이센스: CC BY 4.0. 작성자 및 기여자: Wiki 페이지의 기록 탭을 참조하십시오.

autorid 백엔드를 사용할 경우의 이점

  • 구성된 범위 내에 계산된 UID 및 GID가 있는 모든 도메인 사용자 및 그룹은 도메인 멤버에서 자동으로 사용할 수 있습니다.
  • ID, 홈 디렉터리 및 로그인 쉘을 수동으로 할당할 필요는 없습니다.
  • 다중 도메인 환경의 여러 오브젝트에 동일한 RID가 있는 경우에도 중복 ID가 없습니다.

단점

  • 사용자 및 그룹 ID는 Samba 도메인 구성원에서 동일하지 않습니다.
  • 모든 도메인 사용자는 동일한 로그인 쉘 및 홈 디렉터리가 할당됩니다. 그러나 변수를 사용할 수 있습니다.
  • 도메인 멤버는 개별 사용자 또는 그룹을 제외할 수 없습니다. 계산된 UID 또는 GID가 구성된 범위 외부에 있는 사용자 및 그룹만 제외됩니다.

사전 요구 사항

  • Samba가 설치되어 있어야 합니다.
  • ID 매핑을 제외한 Samba 구성이 /etc/samba/smb.conf 파일에 있습니다.

절차

  1. /etc/samba/smb.conf 파일에서 [global] 섹션을 편집합니다.

    1. * 기본 도메인에 대해 자동 ID 매핑 백엔드를 활성화합니다.

      idmap config * : backend = autorid
    2. 기존 및 향후 오브젝트의 ID를 모두 할당할 수 있을 만큼 큰 범위를 설정합니다. 예를 들어 다음과 같습니다.

      idmap config * : range = 10000-999999

      Samba는 이 도메인에서 계산된 ID가 범위에 속하지 않는 사용자 및 그룹을 무시합니다.

      주의

      범위를 설정하고 Samba가 이를 사용하기 시작하면 범위의 상한만 늘릴 수 있습니다. 범위에 대한 다른 모든 변경으로 인해 새 ID 할당으로 인해 파일 소유권이 손실될 수 있습니다.

    3. 선택적으로 범위 크기를 설정합니다. 예를 들어 다음과 같습니다.

      idmap config * : rangesize = 200000

      Samba는 idmap config * : range 매개변수에 설정된 범위의 모든 ID를 취할 때까지 각 도메인의 오브젝트에 대해 이 수의 연속 ID를 할당합니다.

      참고

      rangesize를 설정하는 경우 그에 따라 범위를 조정해야 합니다. 범위는 여러 범위 크기여야 합니다.

    4. 매핑된 모든 사용자에게 할당될 쉘 및 홈 디렉터리 경로를 설정합니다. 예를 들어 다음과 같습니다.

      template shell = /bin/bash
      template homedir = /home/%U
    5. 필요한 경우 도메인에 대한 ID 매핑 구성을 추가합니다. 개별 도메인에 대한 구성이 없는 경우 Samba는 이전에 구성한 * 기본 도메인 의 자동 백엔드 설정을 사용하여 ID를 계산합니다.

      중요

      범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.

  2. /etc/samba/smb.conf 파일을 확인합니다.

    # testparm
  3. Samba 구성을 다시 로드합니다.

    # smbcontrol all reload-config

추가 리소스

  • idmap_autorid(8) 매뉴얼 페이지의 MAPPING FORMULAS 섹션
  • idmap_autorid(8) 매뉴얼 페이지의 rangesize 매개변수 설명
  • smb.conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션