네트워크 파일 서비스 구성 및 사용
Red Hat Enterprise Linux 10에서 네트워크 파일 서비스 구성 및 사용 가이드
초록
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (계정 필요)
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 바에서 생성을 클릭합니다.
- 요약 필드에 설명 제목을 입력합니다.
- 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
1장. Samba를 서버로 사용
Samba는 Red Hat Enterprise Linux에서 SMB(Server Message Block) 프로토콜을 구현합니다. SMB 프로토콜은 파일 공유 및 공유 프린터와 같은 서버의 리소스에 액세스하는 데 사용됩니다. 또한 Samba는 Microsoft Windows에서 사용하는 DCE RPC(Distributed Computing Environment Remote Procedure Call) 프로토콜을 구현합니다.
다음과 같이 Samba를 실행할 수 있습니다.
- Active Directory(AD) 또는 NT4 도메인 구성원
- 독립 실행형 서버
NT4 PDC(기본 도메인 컨트롤러) 또는 백업 도메인 컨트롤러(BDC)
참고Red Hat은 NT4 도메인을 지원하는 Windows 버전이 있는 기존 설치에서만 PDC 및 BDC 모드를 지원합니다. Windows 7 및 Windows Server 2008 R2 이외의 Microsoft 운영 체제에서 NT4 도메인을 지원하지 않기 때문에 새 Samba NT4 도메인을 설정하지 않는 것이 좋습니다.
Red Hat은 Samba를 AD DC(Domain Controller)로 실행하는 것을 지원하지 않습니다.
설치 모드와는 독립적으로 디렉터리와 프린터를 선택적으로 공유할 수 있습니다. 그러면 Samba가 파일 및 인쇄 서버로 작동할 수 있습니다.
1.1. 다양한 Samba 서비스 및 모드 이해
samba
패키지는 여러 서비스를 제공합니다. 환경 및 구성하려는 시나리오에 따라 이러한 서비스 중 하나 이상이 필요하며 다양한 모드에서 Samba를 구성합니다.
1.1.1. Samba 서비스
Samba는 다음 서비스를 제공합니다.
smbd
이 서비스는 SMB 프로토콜을 사용하여 파일 공유 및 인쇄 서비스를 제공합니다. 또한 서비스는 리소스 잠금을 담당하고 사용자 연결을 인증합니다. 도메인 멤버를 인증하기 위해
smbd
에는winbindd
가 필요합니다.smb
systemd
서비스는smbd
데몬을 시작하고 중지합니다.smbd
서비스를 사용하려면samba
패키지를 설치합니다.nmbd
이 서비스는 NetBIOS over IPv4 프로토콜을 사용하여 호스트 이름 및 IP 확인을 제공합니다. 이름 확인 외에도
nmbd
서비스를 사용하면 SMB 네트워크를 검색하여 도메인, 작업 그룹, 호스트, 파일 공유 및 프린터를 찾을 수 있습니다. 이를 위해 서비스는 이 정보를 브로드캐스트 클라이언트에 직접 보고하거나 로컬 또는 마스터 브라우저로 전달합니다.nmb
systemd
서비스는nmbd
데몬을 시작하고 중지합니다.최신 SMB 네트워크는 DNS를 사용하여 클라이언트 및 IP 주소를 확인합니다. Kerberos의 경우 작동 중인 DNS 설정이 필요합니다.
nmbd
서비스를 사용하려면samba
패키지를 설치합니다.winbindd
이 서비스는 로컬 시스템에서 AD 또는 NT4 도메인 사용자 및 그룹을 사용할 수 있도록 NSS(Name Service Switch)에 대한 인터페이스를 제공합니다. 예를 들어, 도메인 사용자는 Samba 서버 또는 다른 로컬 서비스에 호스팅된 서비스에 대해 인증할 수 있습니다.
winbind
systemd
서비스는winbindd
데몬을 시작하고 중지합니다.Samba를 도메인 멤버로 설정하는 경우,
smbd
서비스보다 먼저winbindd
를 시작해야 합니다. 그렇지 않으면 로컬 시스템에서 도메인 사용자 및 그룹을 사용할 수 없습니다.winbindd
서비스를 사용하려면samba-winbind
패키지를 설치합니다.중요Red Hat은 도메인 사용자 및 그룹을 로컬 시스템에 제공하기 위해
winbindd
서비스가 있는 서버로만 Samba 실행을 지원합니다. ACL(Windows Access Control List) 지원 및 NTLM(NT LAN Manager) 대체와 같은 특정 제한 사항으로 인해 SSSD는 지원되지 않습니다.samba-bgqd
-
Samba 백그라운드 대기열 데몬은 CUPS에서 프린터 목록을 사용하여 정기적으로 업데이트합니다. 여러 프린터가 있는 인쇄 서버의 경우 이 데몬을 실행합니다.
samba-bgqd
systemd
서비스에서 관리합니다. 실행에 실패하면rpcd_spoolss
가 필요에 따라 시작됩니다.
1.1.2. Samba 보안 서비스
/etc/samba/smb.conf
파일의 [global]
섹션에 있는 security
매개 변수는 Samba가 서비스에 연결하는 사용자를 인증하는 방법을 관리합니다. Samba를 설치하는 모드에 따라 매개 변수를 다른 값으로 설정해야 합니다.
- AD 도메인 구성원에서
security = ads
를 설정 이 모드에서 Samba는 Kerberos를 사용하여 AD 사용자를 인증합니다.
Samba를 도메인 멤버로 설정하는 방법에 대한 자세한 내용은 Setting up Samba as an AD domain member server 를 참조하십시오.
- 독립 실행형 서버에서
security = user
설정 이 모드에서 Samba는 로컬 데이터베이스를 사용하여 연결 사용자를 인증합니다.
Samba를 독립 실행형 서버로 설정하는 방법에 대한 자세한 내용은 Samba를 독립 실행형 서버로 설정을 참조하십시오.
- NT4 PDC 또는 BDC에서
security = user
를 설정 - 이 모드에서 Samba는 로컬 또는 LDAP 데이터베이스로 사용자를 인증합니다.
- NT4 도메인 멤버에서
security = domain
설정 이 모드에서 Samba는 사용자를 NT4 PDC 또는 BDC에 연결하는 것을 인증합니다. AD 도메인 구성원에서는 이 모드를 사용할 수 없습니다.
Samba를 도메인 멤버로 설정하는 방법에 대한 자세한 내용은 Setting up Samba as an AD domain member server 를 참조하십시오.
1.1.3. Samba 서비스 및 Samba 클라이언트 유틸리티가 구성을 로드 및 다시 로드하는 시나리오
다음은 Samba 서비스 및 유틸리티가 설정을 로드하고 다시 로드하는 경우를 설명합니다.
Samba 서비스는 설정을 다시 로드합니다.
- 자동으로 3분마다
-
예를 들어, manual 요청에서
smbcontrol all reload-config
명령을 실행하는 경우입니다.
- Samba 클라이언트 유틸리티는 처음 시작할 때만 구성을 읽습니다.
security
등의 특정 매개 변수를 사용하려면 smb
서비스를 다시 시작해야 하며 다시 로드하는 것만으로는 충분하지 않습니다.
1.1.4. 안전한 방식으로 Samba 구성 편집
Samba 서비스는 3분마다 구성을 자동으로 다시 로드합니다. testparm
유틸리티를 사용하여 구성을 확인하기 전에 서비스가 변경 사항을 다시 로드하지 못하도록 안전한 방식으로 Samba 구성을 편집할 수 있습니다.
사전 요구 사항
- Samba가 설치되어 있어야 합니다.
프로세스
/etc/samba/smb.conf
파일의 사본을 생성합니다.cp /etc/samba/smb.conf /etc/samba/samba.conf.copy
# cp /etc/samba/smb.conf /etc/samba/samba.conf.copy
Copy to Clipboard Copied! - 복사한 파일을 편집하고 필요한 사항을 변경합니다.
/etc/samba/samba.conf.copy
파일에서 구성을 확인합니다.testparm -s /etc/samba/samba.conf.copy
# testparm -s /etc/samba/samba.conf.copy
Copy to Clipboard Copied! testparm
이 오류를 보고하면 오류를 수정하고 명령을 다시 실행합니다./etc/samba/smb.conf
파일을 새 구성으로 재정의합니다.mv /etc/samba/samba.conf.copy /etc/samba/smb.conf
# mv /etc/samba/samba.conf.copy /etc/samba/smb.conf
Copy to Clipboard Copied! Samba 서비스가 구성을 자동으로 다시 로드하거나 구성을 수동으로 다시 로드할 때까지 기다립니다.
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
1.2. testparm 유틸리티를 사용하여 smb.conf 파일 확인
testparm
유틸리티는 /etc/samba/smb.conf
파일의 Samba 구성이 올바른지 확인합니다. 유틸리티는 잘못된 매개 변수와 값을 감지하지만 ID 매핑과 같은 잘못된 설정도 탐지합니다. testparm
이 문제를 보고하지 않으면 Samba 서비스가 /etc/samba/smb.conf
파일을 로드합니다. testparm
은 구성된 서비스가 사용 가능한지 또는 예상대로 작동하는지 확인할 수 없습니다.
Red Hat은 이 파일을 수정한 후 testparm
을 사용하여 /etc/samba/smb.conf
파일을 확인하는 것이 좋습니다.
사전 요구 사항
- Samba가 설치되어 있어야 합니다.
-
/etc/samba/smb.conf
파일이 있습니다.
프로세스
testparm
유틸리티를root
사용자로 실행합니다.testparm Global parameters
# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Unknown parameter encountered: "log level" Processing section "[example_share]" Loaded services file OK. ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)! Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions # Global parameters [global] ... [example_share] ...
Copy to Clipboard Copied! 이전 예제 출력에서는 존재하지 않는 매개 변수와 잘못된 ID 매핑 구성을 보고합니다.
-
testparm
이 구성에 잘못된 매개 변수, 값 또는 기타 오류를 보고하면 문제를 수정하고 유틸리티를 다시 실행합니다.
1.3. 독립 실행형 서버로 Samba 설정
Samba를 도메인의 멤버가 아닌 서버로 설정할 수 있습니다. 이 설치 모드에서 Samba는 중앙 DC가 아니라 로컬 데이터베이스로 사용자를 인증합니다. 또한 게스트 액세스를 활성화하여 사용자가 인증 없이 하나 이상의 서비스에 연결할 수 있습니다.
1.3.1. 독립 실행형 서버에 대한 서버 구성 설정
Samba 독립 실행형 서버에 대한 서버 구성을 설정할 수 있습니다.
프로세스
samba
패키지를 설치합니다.dnf install samba
# dnf install samba
Copy to Clipboard Copied! /etc/samba/smb.conf
파일을 편집하고 다음 매개변수를 설정합니다.[global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 1
[global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 1
Copy to Clipboard Copied! 이 구성은
Example-WG
작업 그룹 내에서Server
라는 독립 실행형 서버를 정의합니다. 또한 이 구성을 사용하면 최소 수준(1
)에서 로깅할 수 있으며 로그 파일은/var/log/samba/
디렉터리에 저장됩니다. Samba는log file
매개 변수의%m
매크로를 클라이언트 연결의 NetBIOS 이름으로 확장합니다. 이를 통해 각 클라이언트에 대한 개별 로그 파일이 활성화됩니다.선택 사항: 파일 또는 프린터 공유를 구성합니다. 다음 내용을 참조하십시오.
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! 인증이 필요한 공유를 설정하면 사용자 계정을 생성합니다.
자세한 내용은 로컬 사용자 계정 생성 및 활성화를 참조하십시오.
필요한 포트를 열고
firewall-cmd
유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.firewall-cmd --permanent --add-service=samba firewall-cmd --reload
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
Copy to Clipboard Copied! smb
서비스를 활성화하고 시작합니다.systemctl enable --now smb
# systemctl enable --now smb
Copy to Clipboard Copied!
1.3.2. 로컬 사용자 계정 생성 및 활성화
사용자가 공유에 연결할 때 인증할 수 있도록 하려면 운영 체제와 Samba 데이터베이스에서 Samba 호스트에 계정을 만들어야 합니다. Samba는 파일 시스템 개체 및 Samba 계정에서 연결 사용자를 인증하기 위해 운영 체제 계정이 ACL(액세스 제어 목록)의 유효성을 검사해야 합니다.
passdb backend = tdbsam
기본 설정을 사용하는 경우 Samba는 사용자 계정을 /var/lib/samba/private/passdb.tdb
데이터베이스에 저장합니다.
example
이라는 로컬 Samba 사용자를 만들 수 있습니다.
사전 요구 사항
- Samba는 독립 실행형 서버로 설치 및 구성됩니다.
프로세스
운영 체제 계정을 생성합니다.
useradd -M -s /sbin/nologin example
# useradd -M -s /sbin/nologin example
Copy to Clipboard Copied! 이 명령은 홈 디렉터리를 생성하지 않고
example
계정을 추가합니다. 계정이 Samba로 인증하는 데만 사용되는 경우 계정이 로컬에 로그인하지 못하도록/sbin/nologin
명령을 쉘로 할당합니다.활성화하려면 암호를 운영 체제 계정으로 설정합니다.
passwd example
# passwd example Enter new UNIX password: password Retype new UNIX password: password passwd: password updated successfully
Copy to Clipboard Copied! Samba는 운영 체제 계정에 설정된 암호를 사용하여 인증하지 않습니다. 그러나 계정을 활성화하려면 암호를 설정해야 합니다. 계정이 비활성화되어 있으면 Samba는 이 사용자가 연결하면 액세스를 거부합니다.
사용자를 Samba 데이터베이스에 추가하고 암호를 계정으로 설정합니다.
smbpasswd -a example
# smbpasswd -a example New SMB password: password Retype new SMB password: password Added user example.
Copy to Clipboard Copied! 이 계정을 사용하여 Samba 공유에 연결할 때 인증하려면 이 암호를 사용합니다.
Samba 계정을 활성화합니다.
smbpasswd -e example
# smbpasswd -e example Enabled user example.
Copy to Clipboard Copied!
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 매핑 백엔드를 제공합니다. 가장 자주 사용되는 백엔드는 다음과 같습니다.
백엔드 | 사용 사례 |
---|---|
|
|
| AD 도메인만 해당 |
| AD 및 NT4 도메인 |
|
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
[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
idmap config * : backend = tdb idmap config * : range = 10000-999999
Copy to Clipboard Copied! 자세한 내용은 TDB ID 매핑 백엔드 사용을 참조하십시오.
autorid
autorid
백엔드를 사용하도록 기본 도메인을 구성하는 경우 도메인에 대한 ID 매핑 구성을 추가하는 것은 선택 사항입니다.참고범위는
범위 크기의
배수여야 하며 필수BUILTIN
도메인에 충분한 id 범위 공간을 보장하기 위해 해당 값의 두 배 이상이어야 합니다. 기본범위 크기가
100000인 경우 범위를 최소 200000 이상으로 확장해야 합니다. 예를 들어 range = 100000 - 299999입니다.예를 들어
/etc/samba/smb.conf
파일의[global]
섹션에서 다음을 설정합니다.idmap config * : backend = autorid idmap config * : range = 10000-999999
idmap config * : backend = autorid idmap config * : range = 10000-999999
Copy to Clipboard Copied! 자세한 내용은 Autorid ID 매핑 백엔드 사용을 참조하십시오.
1.4.3. tdb ID 매핑 백엔드 사용
winbindd
서비스는 기본적으로 쓰기 가능한 tdb
ID 매핑 백엔드를 사용하여 SID(보안 식별자), UID 및 GID 매핑 테이블을 저장합니다. 여기에는 로컬 사용자, 그룹 및 기본 제공 주체가 포함됩니다.
이 백엔드는 *
기본 도메인에만 사용합니다. 예를 들면 다음과 같습니다.
idmap config * : backend = tdb idmap config * : range = 10000-999999
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 매핑 백엔드는 단방향 트러스트가 있는 {AD} 도메인을 지원하지 않습니다. 단방향 트러스트를 사용하여 {AD}에 도메인 멤버를 구성하는 경우 tdb
, rid 또는 auto
라는 ID 매핑 백엔드 중 하나를 대신 사용합니다.
rid
애드혹 백엔드는 AD에서 다음 속성을 읽습니다.
AD 속성 이름 | 오브젝트 유형 | 매핑 대상 |
---|---|---|
| 사용자 및 그룹 | 사용자 또는 그룹 이름 (오브젝트에 따라) |
| 사용자 | 사용자 ID(UID) |
| 그룹 | 그룹 ID(GID) |
| 사용자 | 사용자 쉘의 경로 |
| 사용자 | 사용자의 홈 디렉터리 경로 |
| 사용자 | 기본 그룹 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
파일에 있습니다.
프로세스
/etc/samba/smb.conf
파일에서[global]
섹션을 편집합니다.없는 경우 기본 도메인 (
*
)의 ID 매핑 구성을 추가합니다. 예를 들면 다음과 같습니다.idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999
Copy to Clipboard Copied! AD 도메인의
ad
ID 매핑 백엔드를 활성화합니다.idmap config DOMAIN : backend = ad
idmap config DOMAIN : backend = ad
Copy to Clipboard Copied! AD 도메인의 사용자와 그룹에 할당된 ID 범위를 설정합니다. 예를 들면 다음과 같습니다.
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999
Copy to Clipboard Copied! 중요범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.
AD에서 속성을 읽을 때 Samba가 RFC 2307 스키마를 사용하도록 설정합니다.
idmap config DOMAIN : schema_mode = rfc2307
idmap config DOMAIN : schema_mode = rfc2307
Copy to Clipboard Copied! Samba가 해당 AD 속성에서 로그인 쉘 및 사용자 홈 디렉터리 경로를 읽을 수 있도록 하려면 다음을 설정합니다.
idmap config DOMAIN : unix_nss_info = yes
idmap config DOMAIN : unix_nss_info = yes
Copy to Clipboard Copied! 또는 모든 사용자에게 적용되는 균일한 도메인 전체 홈 디렉터리 경로 및 로그인 쉘을 설정할 수 있습니다. 예를 들면 다음과 같습니다.
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%U
Copy to Clipboard Copied! 기본적으로 Samba는 사용자 오브젝트의
primaryGroupID
속성을 Linux의 사용자 기본 그룹으로 사용합니다. 또는 대신gidNumber
특성에 설정된 값을 사용하도록 Samba를 구성할 수 있습니다.idmap config DOMAIN : unix_primary_group = yes
idmap config DOMAIN : unix_primary_group = yes
Copy to Clipboard Copied!
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! Samba 구성을 다시 로드합니다.
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
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를 가진 사용자 또는 그룹을 매핑하지 않습니다.
읽기 전용 백엔드인 rid
는 BUILTIN
그룹과 같은 새 ID를 할당할 수 없습니다. 따라서 *
기본 도메인에 이 백엔드를 사용하지 마십시오.
rid 백엔드 사용의 이점
- 구성된 범위 내에 RID가 있는 모든 도메인 사용자 및 그룹은 도메인 멤버에서 자동으로 사용할 수 있습니다.
- ID, 홈 디렉터리 및 로그인 쉘을 수동으로 할당할 필요가 없습니다.
rid 백엔드 사용의 단점
- 모든 도메인 사용자는 동일한 로그인 쉘 및 홈 디렉터리가 할당됩니다. 그러나 변수를 사용할 수 있습니다.
-
사용자 및 그룹 ID는 모두 동일한 ID 범위 설정으로
rid
백엔드를 사용하는 경우 Samba 도메인 멤버에서만 동일합니다. - 도메인 구성원에서 개별 사용자 또는 그룹을 사용할 수 없는 경우 제외할 수 없습니다. 구성된 범위를 벗어난 사용자 및 그룹만 제외됩니다.
-
winbindd
서비스에서 ID를 계산하는 데 사용하는 공식에 따라 다른 도메인의 오브젝트에 동일한 RID가 있는 경우 다중 도메인 환경에서 중복 ID가 발생할 수 있습니다.
사전 요구 사항
- Samba가 설치되어 있어야 합니다.
-
ID 매핑을 제외한 Samba 구성이
/etc/samba/smb.conf
파일에 있습니다.
프로세스
/etc/samba/smb.conf
파일에서[global]
섹션을 편집합니다.없는 경우 기본 도메인 (
*
)의 ID 매핑 구성을 추가합니다. 예를 들면 다음과 같습니다.idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999
Copy to Clipboard Copied! 도메인에 대해
rid
ID 매핑 백엔드를 활성화합니다.idmap config DOMAIN : backend = rid
idmap config DOMAIN : backend = rid
Copy to Clipboard Copied! 향후 할당될 모든 RID를 포함할 만큼 큰 범위를 설정합니다. 예를 들면 다음과 같습니다.
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999
Copy to Clipboard Copied! Samba는 이 도메인의 RID가 범위에 속하지 않는 사용자와 그룹을 무시합니다.
중요범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.
매핑된 모든 사용자에게 할당될 쉘 및 홈 디렉터리 경로를 설정합니다. 예를 들면 다음과 같습니다.
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%U
Copy to Clipboard Copied!
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! Samba 구성을 다시 로드합니다.
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
1.4.6. 자동 덮어쓰기 ID 매핑 백엔드 사용
autorid
ID 매핑 백엔드를 사용하도록 Samba 도메인 멤버를 구성할 수 있습니다.
autorid
백엔드는 rid
ID 매핑 백엔드와 유사하게 작동하지만 다른 도메인에 대한 ID를 자동으로 할당할 수 있습니다. 이를 통해 다음과 같은 상황에서 autorid
백엔드를 사용할 수 있습니다.
-
*
기본 도메인 전용 -
*
기본 도메인 및 추가 도메인의 경우 각 추가 도메인에 대한 ID 매핑 구성을 생성할 필요가 없습니다. - 특정 도메인 전용
기본 도메인에 autorid
를 사용하는 경우 도메인에 대한 ID 매핑 구성을 추가하는 것은 선택 사항입니다.
이 섹션의 일부는 Samba Wiki에 게시된 idmap config autorid 문서에서 채택되었습니다. 라이센스: CC BY 4.0. 작성자 및 기여자: Wiki 페이지의 기록 탭을 참조하십시오.
autorid 백엔드 사용의 이점
- 계산된 UID 및 GID가 구성된 범위 내에 있는 모든 도메인 사용자 및 그룹은 도메인 멤버에서 자동으로 사용할 수 있습니다.
- ID, 홈 디렉터리 및 로그인 쉘을 수동으로 할당할 필요가 없습니다.
- 다중 도메인 환경의 여러 오브젝트에 동일한 RID가 있더라도 중복 ID가 없습니다.
단점
- 사용자 및 그룹 ID는 Samba 도메인 구성원에서 동일하지 않습니다.
- 모든 도메인 사용자는 동일한 로그인 쉘 및 홈 디렉터리가 할당됩니다. 그러나 변수를 사용할 수 있습니다.
- 도메인 구성원에서 개별 사용자 또는 그룹을 사용할 수 없는 경우 제외할 수 없습니다. 계산된 UID 또는 GID가 구성된 범위를 벗어나는 사용자와 그룹만 제외됩니다.
사전 요구 사항
- Samba가 설치되어 있어야 합니다.
-
ID 매핑을 제외한 Samba 구성이
/etc/samba/smb.conf
파일에 있습니다.
프로세스
/etc/samba/smb.conf
파일에서[global]
섹션을 편집합니다.*
기본 도메인의autorid
ID 매핑 백엔드를 활성화합니다.idmap config * : backend = autorid
idmap config * : backend = autorid
Copy to Clipboard Copied! 모든 기존 및 향후 객체에 ID를 할당할 수 있을 만큼 큰 범위를 설정합니다. 예를 들면 다음과 같습니다.
idmap config * : range = 10000-999999
idmap config * : range = 10000-999999
Copy to Clipboard Copied! Samba는 이 도메인에서 계산된 ID가 범위에 속하지 않는 사용자와 그룹을 무시합니다.
주의범위를 설정하고 Samba가 이를 사용하기 시작하면 범위의 상한만 늘릴 수 있습니다. 범위를 다른 모든 변경으로 인해 새 ID 할당이 발생할 수 있으므로 파일 소유권이 손실됩니다.
선택 사항: 범위 크기를 설정합니다. 예를 들면 다음과 같습니다.
idmap config * : rangesize = 200000
idmap config * : rangesize = 200000
Copy to Clipboard Copied! Samba는
idmap config * : range
매개변수에 설정된 범위의 모든 ID가 사용될 때까지 각 도메인의 오브젝트에 대한 연속 ID 수를 할당합니다.참고범위 크기를 설정하는 경우 적절하게 범위를 조정해야 합니다. 범위는 범위 크기의 여러 개여야 합니다.
매핑된 모든 사용자에게 할당될 쉘 및 홈 디렉터리 경로를 설정합니다. 예를 들면 다음과 같습니다.
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%U
Copy to Clipboard Copied! 선택 사항: 도메인에 대한 ID 매핑 구성을 추가합니다. 개별 도메인에 대한 구성이 없는 경우 Samba는 이전에 구성된
*
기본 도메인에서autorid
백엔드 설정을 사용하여 ID를 계산합니다.중요범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 Planning Samba ID 범위를 참조하십시오.
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! Samba 구성을 다시 로드합니다.
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
1.5. AD 도메인 멤버 서버로 Samba 설정
AD 또는 NT4 도메인을 실행하는 경우 Samba를 사용하여 Red Hat Enterprise Linux 서버를 도메인에 멤버로 추가하여 다음을 얻습니다.
- 다른 도메인 구성원의 도메인 리소스에 액세스
-
sshd
와 같은 로컬 서비스에 도메인 사용자를 인증합니다 - 서버에서 파일 및 인쇄 서버 역할을 할 디렉터리와 프린터 공유
1.5.1. AD 도메인에 RHEL 시스템 연결
Samba Winbind는 RHEL(Red Hat Enterprise Linux) 시스템을 AD(Active Directory)와 연결하기 위한 SSSD(System Security Services Daemon)의 대안입니다. realmd
를 사용하여 Samba Winbind를 구성하여 RHEL 시스템을 AD 도메인에 연결할 수 있습니다.
프로세스
AD에 Kerberos 인증을 위한 더 이상 사용되지 않는 RC4 암호화 유형이 필요한 경우 RHEL에서 이러한 암호에 대한 지원을 활성화합니다.
update-crypto-policies --set DEFAULT:AD-SUPPORT
# update-crypto-policies --set DEFAULT:AD-SUPPORT
Copy to Clipboard Copied! 다음 패키지를 설치합니다.
dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation
# dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation
Copy to Clipboard Copied! 도메인 구성원에서 디렉터리 또는 프린터를 공유하려면
samba
패키지를 설치합니다.dnf install samba
# dnf install samba
Copy to Clipboard Copied! 기존
/etc/samba/smb.conf
Samba 구성 파일을 백업합니다.mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Copy to Clipboard Copied! 도메인에 가입합니다. 예를 들어
ad.example.com
이라는 도메인에 가입하려면 다음을 수행합니다.realm join --membership-software=samba --client-software=winbind ad.example.com
# realm join --membership-software=samba --client-software=winbind ad.example.com
Copy to Clipboard Copied! 이전 명령을 사용하면
realm
유틸리티가 자동으로 수행됩니다.-
ad.example.com
도메인 멤버십에 대한/etc/samba/smb.conf
파일을 만듭니다. -
사용자 및 그룹 조회에 대한
winbind
모듈을/etc/nsswitch.conf
파일에 추가합니다. -
/etc/pam.d/
디렉토리에서 PAM(Pluggable Authentication Module) 구성 파일을 업데이트합니다. -
winbind
서비스를 시작하고 시스템이 부팅될 때 서비스가 시작됩니다.
-
선택 사항:
/etc/samba/smb.conf
파일에서 대체 ID 매핑 백엔드 또는 사용자 지정 ID 매핑 설정을 설정합니다.자세한 내용은 Samba ID 매핑 이해 및 구성을 참조하십시오.
/etc/krb5.conf
파일을 편집하고 다음 섹션을 추가합니다.[plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind }
[plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind }
Copy to Clipboard Copied! winbind
서비스가 실행 중인지 확인합니다.systemctl status winbind
# systemctl status winbind ... Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
Copy to Clipboard Copied! 중요Samba를 활성화하여 도메인 사용자 및 그룹 정보를 쿼리하려면
smb
를 시작하기 전에winbind
서비스를 실행해야 합니다.디렉터리 및 프린터를 공유하는
samba
패키지를 설치한 경우smb
서비스를 활성화하고 시작합니다.systemctl enable --now smb
# systemctl enable --now smb
Copy to Clipboard Copied!
검증
AD 도메인의 AD 관리자 계정과 같은 AD 사용자의 세부 정보를 표시합니다.
getent passwd "AD\administrator"
# getent passwd "AD\administrator" AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
Copy to Clipboard Copied! AD 도메인에서 도메인 사용자 그룹의 멤버를 쿼리합니다.
getent group "AD\Domain Users"
# getent group "AD\Domain Users" AD\domain users:x:10000:user1,user2
Copy to Clipboard Copied! 선택 사항: 파일 및 디렉터리에 대한 권한을 설정할 때 도메인 사용자 및 그룹을 사용할 수 있는지 확인합니다. 예를 들어
/srv/samba/example.txt
파일의 소유자를AD\administrator
로 설정하고 그룹을AD\Domain Users
로 설정하려면 다음을 수행합니다.chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
Copy to Clipboard Copied! Kerberos 인증이 예상대로 작동하는지 확인합니다.
AD 도메인 멤버에서
administrator@AD.EXAMPLE.COM
주체에 대한 티켓을 받습니다.kinit administrator@AD.EXAMPLE.COM
# kinit administrator@AD.EXAMPLE.COM
Copy to Clipboard Copied! 캐시된 Kerberos 티켓을 표시합니다.
klist
# klist Ticket cache: KCM:0 Default principal: administrator@AD.EXAMPLE.COM Valid starting Expires Service principal 01.11.2018 10:00:00 01.11.2018 20:00:00 krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM renew until 08.11.2018 05:00:00
Copy to Clipboard Copied!
사용 가능한 도메인을 표시합니다.
wbinfo --all-domains
# wbinfo --all-domains BUILTIN SAMBA-SERVER AD
Copy to Clipboard Copied!
1.5.2. MIT Kerberos용 로컬 인증 플러그인 사용
winbind
서비스는 {AD} 사용자를 도메인 멤버에 제공합니다. 관리자는 특정 상황에서 도메인 사용자가 도메인 구성원에서 실행 중인 SSH 서버와 같은 로컬 서비스에 인증할 수 있도록 설정하려고 합니다. Kerberos를 사용하여 도메인 사용자를 인증하는 경우 winbind_krb5_localauth
플러그인을 활성화하여 winbind
서비스를 통해 Kerberos 주체를 {AD} 계정에 올바르게 매핑합니다.
예를 들어 {AD} 사용자의 sAMAccountName
속성이 EXAMPLE
로 설정되어 있고 사용자가 사용자 이름을 소문자로 기록하려고 하면 Kerberos는 대문자로 사용자 이름을 반환합니다. 결과적으로 항목이 일치하지 않고 인증이 실패합니다.
winbind_krb5_localauth
플러그인을 사용하면 계정 이름이 올바르게 매핑됩니다. 이는 GSSAPI 인증에만 적용되며 초기 티켓 부여 티켓(TGT)을 받는 데만 적용되지 않습니다.
사전 요구 사항
- Samba는 {AD}의 멤버로 구성되어 있습니다.
- Red Hat Enterprise Linux는 {AD}에 대한 로그인 시도를 인증합니다.
-
winbind
서비스가 실행 중입니다.
프로세스
/etc/krb5.conf
파일을 편집하고 다음 섹션을 추가합니다.
[plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind }
[plugins]
localauth = {
module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
enable_only = winbind
}
1.5.3. Samba 클라이언트에서 인증서 자동 등록 활성화
인증서 자동 등록은 AD(Active Directory) 인증서 서비스의 기능입니다. 이 기능을 사용하면 사용자 개입 없이 인증서 등록을 수행할 수 있습니다. 관리자는 인증서를 수동으로 모니터링하고 갱신하지 않고 로컬 서비스에서 AD CA(인증 기관)에서 발급한 인증서를 사용할 수 있으므로 중단이 중단되는 것을 방지할 수 있습니다.
AD가 CA(인증 기관)를 제공하고 RHEL 호스트가 AD의 멤버인 경우 RHEL 호스트에서 인증서 자동 등록을 활성화할 수 있습니다. 그러면 Samba가 AD의 자동 등록 그룹 정책을 적용하고 인증서를 요청 및 관리하도록 certmonger
서비스를 구성합니다.
사전 요구 사항
- Samba는 AD의 멤버로 구성되어 있습니다.
AD의 Windows 서버에는 다음 서비스가 설치된 Active Directory 인증서 서비스 서버 역할이 있습니다.
- 인증 기관
- 인증서 등록
- 정책 웹 서비스
- ISS(Internet Information Services)는 HTTPS를 통해 인증서 자동 등록 기능을 제공하도록 구성되어 있습니다.
- ISS는 AD CA에서 발급한 인증서를 사용합니다.
- 인증서 등록 서비스는 Kerberos 인증을 지원합니다.
- 인증서 자동 등록에 대한 GPO(그룹 정책 오브젝트)가 AD에 구성되어 있습니다.
프로세스
samba-gpupdate
패키지를 설치합니다.dnf install samba-gpupdate
# dnf install samba-gpupdate
Copy to Clipboard Copied! /etc/samba/smb.conf
파일에 다음 설정을 추가합니다.kerberos method = secrets and keytab sync machine password to keytab = "/etc/krb5.keytab:account_name:sync_spns:spn_prefixes=host:sync_kvno:machine_password", "/etc/samba/cepces.keytab:account_name:machine_password" apply group policies = yes
kerberos method = secrets and keytab sync machine password to keytab = "/etc/krb5.keytab:account_name:sync_spns:spn_prefixes=host:sync_kvno:machine_password", "/etc/samba/cepces.keytab:account_name:machine_password" apply group policies = yes
Copy to Clipboard Copied! Samba 구성에 지정된 설정에는 다음 구성이 포함됩니다.
Kerberos 방법 = secrets 및 keytab
-
먼저 Kerberos 티켓을 확인한 다음
/etc/krb5.keytab
파일을 확인하려면/var/lib/samba/private/secrets.tdb
파일을 사용하도록 Samba를 구성합니다. sync machine password to keytab = <list_of_keytab_files_and_their_principals>
-
Samba가 유지 관리하는 키탭 파일의 경로와 이러한 파일에서 Kerberos 주체를 정의합니다. 표시된 값을 사용하면 Samba는
/etc/krb5.keytab
시스템 키탭을 계속 유지 관리하며, 또한certmonger
에 대한cepces-submit
제출 도우미가 CA에 인증하는 데 사용하는/etc/samba/cepces.keytab
파일을 유지합니다. 그룹 정책 적용 = yes
-
gpupdate
명령을 간격으로 실행하도록winbind
서비스를 구성합니다. 업데이트 간격은 90분과 0분에서 30분 사이의 임의 오프셋입니다.
/etc/samba/cepces.keytab
파일을 만듭니다.net ads keytab create
# net ads keytab create
Copy to Clipboard Copied! /etc/cepces/cepces.conf
파일을 편집하고 다음과 같이 변경합니다.[global]
섹션에서server
변수를 CA 서비스를 실행하는 Windows 서버의 FQDN(정규화된 도메인 이름)으로 설정합니다.[global] server=win-server.ad.example.com
[global] server=win-server.ad.example.com
Copy to Clipboard Copied! [kerberos]
섹션에서keytab
변수를/etc/samba/cepces.keytab
으로 설정합니다.[kerberos] keytab=/etc/samba/cepces.keytab
[kerberos] keytab=/etc/samba/cepces.keytab
Copy to Clipboard Copied!
certmonger
서비스를 활성화하고 시작합니다.systemctl enable --now certmonger
# systemctl enable --now certmonger
Copy to Clipboard Copied! certmonger
서비스는 CA에서 인증서를 요청하고 만료되기 전에 자동으로 갱신합니다.samba-gpupdate
를 수동으로 실행하여 AD에서 그룹 정책이 로드되었는지 확인합니다.samba-gpupdate
# samba-gpupdate
Copy to Clipboard Copied! certmonger
서비스는 다음 디렉터리에 키와 인증서를 저장합니다.-
개인 키:
/var/lib/samba/private/certs/
발행된 인증서:
/var/lib/samba/certs/
이제 동일한 호스트의 서비스에서 키와 인증서를 사용할 수 있습니다.
-
개인 키:
선택 사항:
certmonger
에서 관리하는 인증서를 표시합니다.getcert list
# getcert list Number of certificates and requests being tracked: 1. Request ID 'AD-ROOT-CA.Machine': status: MONITORING stuck: no key pair storage: type=FILE,location='/var/lib/samba/private/certs/AD-ROOT-CA.Machine.key' certificate: type=FILE,location='/var/lib/samba/certs/AD-ROOT-CA.Machine.crt' CA: AD-ROOT-CA issuer: CN=AD-ROOT-CA,DC=ad,DC=example,DC=com subject: CN=rhel9.ad.example.com issued: 2025-03-25 14:22:07 CET expires: 2026-03-25 14:22:07 CET dns: rhel9.ad.example.com key usage: digitalSignature,keyEncipherment eku: id-kp-clientAuth,id-kp-serverAuth certificate template/profile: Machine profile: Machine pre-save command: post-save command: track: yes auto-renew: yes
Copy to Clipboard Copied! 기본적으로 Windows CA는
머신
인증서 템플릿을 사용하여 인증서만 발행합니다. 이 호스트에 적용되는 추가 템플릿을 Windows CA에 구성한 경우certmonger
도 이러한 템플릿에 대한 인증서를 요청하고getcert list
출력에 대한 항목도 포함됩니다.
1.6. IdM 도메인 멤버에서 Samba 설정
Red Hat IdM(Identity Management) 도메인에 연결된 호스트에서 Samba를 설정할 수 있습니다. 신뢰할 수 있는 Active Directory(AD) 도메인에서 IdM 및 또한 사용 가능한 경우 Samba에서 제공하는 공유 및 프린터 서비스에 액세스할 수 있습니다.
IdM 도메인 멤버에서 Samba를 사용하는 것은 지원되지 않는 기술 프리뷰 기능이며 특정 제한 사항이 포함되어 있습니다. 예를 들어, IdM 신뢰 컨트롤러는 Active Directory 글로벌 카탈로그 서비스를 지원하지 않으며 DMCE/원격 프로시저 호출(DCE/RPC) 프로토콜을 사용하여 IdM 그룹 해결을 지원하지 않습니다. 결과적으로 AD 사용자는 다른 IdM 클라이언트에 로그인할 때 IdM 클라이언트에서 호스팅되는 Samba 공유 및 프린터에만 액세스할 수 있습니다. Windows 시스템에 로그인한 AD 사용자는 IdM 도메인 멤버에서 호스팅되는 Samba 공유에 액세스할 수 없습니다.
IdM 도메인 구성원에 Samba를 배포하는 고객은 Red Hat에 피드백을 제공하는 것이 좋습니다.
AD 도메인의 사용자가 Samba에서 제공하는 공유 및 프린터 서비스에 액세스해야 하는 경우 AES 암호화 유형이 AD인지 확인합니다. 자세한 내용은 GPO를 사용하여 Active Directory에서 AES 암호화 유형 활성화를 참조하십시오.
사전 요구 사항
- 호스트는 IdM 도메인에 클라이언트로 결합됩니다.
- IdM 서버와 클라이언트 모두 RHEL 10에서 실행해야 합니다.
1.6.1. 도메인 구성원에 Samba 설치를 위한 IdM 도메인 준비
IdM 클라이언트에 Samba를 설정하려면 IdM 서버에서 ipa-adtrust-install
유틸리티를 사용하여 IdM 도메인을 준비해야 합니다.
ipa-adtrust-install
명령을 자동으로 실행하는 시스템은 AD 신뢰 컨트롤러가 됩니다. 그러나 IdM 서버에서 ipa-adtrust-install
을 한 번만 실행해야 합니다.
사전 요구 사항
- IdM 서버가 설치되어 있어야 합니다.
- 패키지를 설치하고 IdM 서비스를 다시 시작할 수 있는 root 권한이 있습니다.
프로세스
필수 패키지를 설치합니다.
dnf install ipa-server-trust-ad samba-client
[root@ipaserver ~]# dnf install ipa-server-trust-ad samba-client
Copy to Clipboard Copied! IdM 관리자로 인증합니다.
kinit admin
[root@ipaserver ~]# kinit admin
Copy to Clipboard Copied! ipa-adtrust-install
유틸리티를 실행합니다.ipa-adtrust-install
[root@ipaserver ~]# ipa-adtrust-install
Copy to Clipboard Copied! IdM이 통합된 DNS 서버와 함께 설치된 경우 DNS 서비스 레코드가 자동으로 생성됩니다.
통합된 DNS 서버 없이 IdM을 설치한 경우,
ipa-adtrust-install
은 DNS에 수동으로 추가해야 하는 서비스 레코드 목록을 인쇄합니다.스크립트에서
/etc/samba/smb.conf
가 이미 존재하고 다시 작성됨을 묻는 메시지를 표시합니다.WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yes
WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yes
Copy to Clipboard Copied! 스크립트에서 이전 Linux 클라이언트가 신뢰할 수 있는 사용자로 작업할 수 있는 호환성 플러그인인
slapi-nis
플러그인을 구성하도록 프롬프트를 표시합니다.Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes
Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes
Copy to Clipboard Copied! SID 생성 작업을 실행하여 기존 사용자의 SID를 생성하라는 메시지가 표시됩니다.
Do you want to run the ipa-sidgen task? [no]: yes
Do you want to run the ipa-sidgen task? [no]: yes
Copy to Clipboard Copied! 이는 리소스 집약적인 작업이므로 사용자가 많은 경우 한 번에 이 작업을 실행할 수 있습니다.
선택 사항: 기본적으로 Dynamic RPC 포트 범위는 Windows Server 2008 이상에서는
49152-65535
로 정의됩니다. 환경에 대해 다른 Dynamic RPC 포트 범위를 정의해야 하는 경우 다른 포트를 사용하도록 Samba를 구성하고 방화벽 설정에서 해당 포트를 엽니다. 다음 예제에서는 포트 범위를55000-65000
으로 설정합니다.net conf setparm global 'rpc server dynamic port range' 55000-65000 firewall-cmd --add-port=55000-65000/tcp firewall-cmd --runtime-to-permanent
[root@ipaserver ~]# net conf setparm global 'rpc server dynamic port range' 55000-65000 [root@ipaserver ~]# firewall-cmd --add-port=55000-65000/tcp [root@ipaserver ~]# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! ipa
서비스를 다시 시작하십시오.ipactl restart
[root@ipaserver ~]# ipactl restart
Copy to Clipboard Copied! smbclient
유틸리티를 사용하여 Samba가 IdM 측에서 Kerberos 인증에 응답하는지 확인합니다.smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required
[root@ipaserver ~]# smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.15.2) ...
Copy to Clipboard Copied!
1.6.2. IdM 클라이언트에 Samba 서버 설치 및 구성
IdM 도메인에 등록된 클라이언트에 Samba를 설치하고 구성할 수 있습니다.
사전 요구 사항
- IdM 서버와 클라이언트 모두 RHEL 10 이상에서 실행해야 합니다.
- IdM 도메인은 도메인 멤버에 Samba를 설치하기 위해 IdM 도메인 준비에 설명되어 있습니다.
- IdM에 AD로 신뢰가 구성된 경우 Kerberos에 대해 AES 암호화 유형을 활성화합니다. 예를 들어 GPO(그룹 정책 오브젝트)를 사용하여 AES 암호화 유형을 활성화합니다. 자세한 내용은 GPO를 사용하여 Active Directory에서 AES 암호화 활성화를 참조하십시오.
프로세스
ipa-client-samba
패키지를 설치합니다.dnf install ipa-client-samba
[root@idm_client]# dnf install ipa-client-samba
Copy to Clipboard Copied! ipa-client-samba
유틸리티를 사용하여 클라이언트를 준비하고 초기 Samba 구성을 생성합니다.ipa-client-samba
[root@idm_client]# ipa-client-samba Searching for IPA server... IPA server: DNS discovery Chosen IPA master: idm_server.idm.example.com SMB principal to be created: cifs/idm_client.idm.example.com@IDM.EXAMPLE.COM NetBIOS name to be used: IDM_CLIENT Discovered domains to use: Domain name: idm.example.com NetBIOS name: IDM SID: S-1-5-21-525930803-952335037-206501584 ID range: 212000000 - 212199999 Domain name: ad.example.com NetBIOS name: AD SID: None ID range: 1918400000 - 1918599999 Continue to configure the system with these values? [no]: yes Samba domain member is configured. Please check configuration at /etc/samba/smb.conf and start smb and winbind services
Copy to Clipboard Copied! 기본적으로
ipa-client-samba
는 사용자가 연결할 때 사용자의 홈 디렉토리를 동적으로 공유하는/etc/samba/smb.conf
파일에[homes]
섹션을 자동으로 추가합니다. 이 서버에 홈 디렉터리가 없거나 공유하려는 경우/etc/samba/smb.conf
에서 다음 행을 제거하십시오.[homes] read only = no
[homes] read only = no
Copy to Clipboard Copied! 디렉토리와 프린터를 공유합니다. 자세한 내용은 다음을 참조하십시오.
로컬 방화벽에서 Samba 클라이언트에 필요한 포트를 엽니다.
firewall-cmd --permanent --add-service=samba-client firewall-cmd --reload
[root@idm_client]# firewall-cmd --permanent --add-service=samba-client [root@idm_client]# firewall-cmd --reload
Copy to Clipboard Copied! smb
및winbind
서비스를 활성화하고 시작합니다.systemctl enable --now smb winbind
[root@idm_client]# systemctl enable --now smb winbind
Copy to Clipboard Copied!
검증
samba-client
패키지가 설치된 다른 IdM 도메인 멤버에서 다음 확인 단계를 실행합니다.
Kerberos 인증을 사용하여 Samba 서버의 공유를 나열합니다.
smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
Copy to Clipboard Copied!
1.6.3. IdM이 새 도메인을 신뢰하는 경우 ID 매핑 구성 수동 추가
Samba에는 사용자가 리소스에 액세스하는 각 도메인에 대한 ID 매핑 구성이 필요합니다. IdM 클라이언트에서 실행 중인 기존 Samba 서버에서 관리자가 Active Directory(AD) 도메인에 새 신뢰를 추가한 후 ID 매핑 구성을 수동으로 추가해야 합니다.
사전 요구 사항
- IdM 클라이언트에 Samba가 구성되어 있습니다. 이후에 새로운 신뢰가 IdM에 추가되었습니다.
- Kerberos에 대한 DES 및 RC4 암호화 유형은 신뢰할 수 있는 AD 도메인에서 비활성화해야 합니다. 보안상의 이유로 RHEL 10은 이러한 약한 암호화 유형을 지원하지 않습니다.
프로세스
호스트의 keytab을 사용하여 인증합니다.
kinit -k
[root@idm_client]# kinit -k
Copy to Clipboard Copied! ipa idrange-find
명령을 사용하여 새 도메인의 기본 ID와 ID 범위 크기를 모두 표시합니다. 예를 들어 다음 명령은ad.example.com
도메인의 값을 표시합니다.ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw
[root@idm_client]# ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw --------------- 1 range matched --------------- cn: AD.EXAMPLE.COM_id_range ipabaseid: 1918400000 ipaidrangesize: 200000 ipabaserid: 0 ipanttrusteddomainsid: S-1-5-21-968346183-862388825-1738313271 iparangetype: ipa-ad-trust ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! 다음 단계에서
ipabaseid
및ipaidrangesize
속성의 값이 필요합니다.사용 가능한 가장 높은 ID를 계산하려면 다음 공식을 사용합니다.
maximum_range = ipabaseid + ipaidrangesize - 1
maximum_range = ipabaseid + ipaidrangesize - 1
Copy to Clipboard Copied! 이전 단계의 값을 사용하여
ad.example.com
도메인에 사용 가능한 가장 높은 ID는1918599999
(1918400000 + 200000 - 1)입니다./etc/samba/smb.conf
파일을 편집하고 도메인의 ID 매핑 구성을[global]
섹션에 추가합니다.idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sss
idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sss
Copy to Clipboard Copied! ipabaseid
특성의 값을 가장 낮은 값으로 지정하고 이전 단계의 계산된 값을 가장 높은 범위 값으로 지정합니다.smb
및winbind
서비스를 다시 시작합니다.systemctl restart smb winbind
[root@idm_client]# systemctl restart smb winbind
Copy to Clipboard Copied!
검증
Kerberos 인증을 사용하여 Samba 서버의 공유를 나열합니다.
smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
Copy to Clipboard Copied!
1.13. macOS 클라이언트에 대한 Samba 구성
VFS (
Virtual File System) Samba 모듈은 Apple SMB(Server Message Block) 클라이언트와의 향상된 호환성을 제공합니다.
1.15. Samba를 인쇄 서버로 설정
Samba를 출력 서버로 설정하면 네트워크의 클라이언트가 Samba를 사용하여 출력할 수 있습니다. 또한 Windows 클라이언트가 구성된 경우 Samba 서버에서 드라이버를 다운로드할 수 있습니다.
이 섹션의 일부는 Samba 설정에 Samba Wiki에 게시된 Print Server 문서로 채택되었습니다. 라이센스: CC BY 4.0. 작성자 및 기여자: Wiki 페이지의 기록 탭을 참조하십시오.
사전 요구 사항
Samba는 다음 모드 중 하나로 설정되었습니다.
1.15.1. Samba에서 출력 서버 지원 활성화
기본적으로 Samba에서는 출력 서버 지원이 활성화되어 있지 않습니다. Samba를 인쇄 서버로 사용하려면 그에 따라 Samba를 구성해야 합니다.
인쇄 작업 및 프린터 작업에는 원격 프로시저 호출(RPC)이 필요합니다. 기본적으로 Samba는 RPC를 관리하기 위해 필요에 따라 rpcd_spoolss
서비스를 시작합니다. 첫 번째 RPC 호출 중에 또는 CUPS에서 프린터 목록을 업데이트할 때 Samba는 CUPS에서 프린터 정보를 검색합니다. 프린터당 약 1초가 필요할 수 있습니다. 따라서 프린터가 50개 이상인 경우 rpcd_spoolss
설정을 조정합니다.
사전 요구 사항
프린터는 CUPS 서버에 구성됩니다.
CUPS에서 프린터를 구성하는 방법에 대한 자세한 내용은 인쇄 서버의 CUPS 웹 콘솔(https://printserver:631/help)에 제공된 설명서를 참조하십시오.
프로세스
/etc/samba/smb.conf
파일을 편집합니다.[ Cryostats]
섹션을 추가하여 Samba에서 출력 백엔드를 활성화합니다.[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600
[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600
Copy to Clipboard Copied! 중요[ Cryostat]
공유 이름은 하드 코딩되어 있으며 변경할 수 없습니다.CUPS 서버가 다른 호스트 또는 포트에서 실행되는 경우
[ Cryostats]
섹션에 설정을 지정합니다.cups server = printserver.example.com:631
cups server = printserver.example.com:631
Copy to Clipboard Copied! 프린터 수가 많은 경우 CUPS에 연결된 프린터 수보다 유휴 초 수를 더 높은 값으로 설정합니다. 예를 들어 프린터가 100개 있는 경우
[global]
섹션에 설정된 프린터를 설정합니다.rpcd_spoolss:idle_seconds = 200
rpcd_spoolss:idle_seconds = 200
Copy to Clipboard Copied! 환경에서 이 설정이 확장되지 않으면
[global]
섹션의rpcd_spools
작업자 수도 늘립니다.rpcd_spoolss:num_workers = 10
rpcd_spoolss:num_workers = 10
Copy to Clipboard Copied! 기본적으로
rpcd_spoolss
는 5개의 작업자를 시작합니다.
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! 필요한 포트를 열고
firewall-cmd
유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.firewall-cmd --permanent --add-service=samba firewall-cmd --reload
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
Copy to Clipboard Copied! smb
서비스를 다시 시작하십시오.systemctl restart smb
# systemctl restart smb
Copy to Clipboard Copied! 서비스를 다시 시작한 후 Samba는 CUPS 백엔드에 구성된 모든 프린터를 자동으로 공유합니다. 특정 프린터만 수동으로 공유하려면 다음을 참조하십시오.
검증
인쇄 작업을 제출합니다. 예를 들어, PDF 파일을 인쇄하려면 다음을 입력합니다.
smbclient -Uuser //sambaserver.example.com/printer_name -c "print example.pdf"
# smbclient -Uuser //sambaserver.example.com/printer_name -c "print example.pdf"
Copy to Clipboard Copied!
1.15.2. 수동으로 특정 프린터 공유
Samba를 출력 서버로 구성한 경우 기본적으로 Samba는 CUPS 백엔드에 구성된 모든 프린터를 공유합니다. 다음 절차에서는 특정 프린터만 공유하는 방법을 설명합니다.
사전 요구 사항
- Samba가 인쇄 서버로 설정됨
프로세스
/etc/samba/smb.conf
파일을 편집합니다.[global]
섹션에서 설정을 설정하여 자동 프린터 공유를 비활성화합니다.load printers = no
load printers = no
Copy to Clipboard Copied! 공유할 각 프린터에 대해 섹션을 추가합니다. 예를 들어 CUPS 백엔드에서 Samba로
example
이라는 프린터를 공유하려면 다음 섹션을 추가합니다.[Example-Printer] path = /var/tmp/ printable = yes printer name = example
[Example-Printer] path = /var/tmp/ printable = yes printer name = example
Copy to Clipboard Copied! 각 프린터에 대해 개별 스풀 디렉터리가 필요하지 않습니다.
[ Cryostats]
섹션에서 설정한 것처럼 프린터의path
매개변수에 동일한 spool 디렉토리를 설정할 수 있습니다.
/etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! Samba 구성을 다시 로드합니다.
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
1.16. Samba 인쇄 서버에서 Windows 클라이언트에 대한 자동 프린터 드라이버 다운로드 설정
Windows 클라이언트에 대해 Samba 인쇄 서버를 실행하는 경우 드라이버를 업로드하고 프린터를 사전 구성할 수 있습니다. 사용자가 프린터에 연결하면 Windows는 자동으로 드라이버를 다운로드하여 클라이언트에 로컬로 설치합니다. 사용자는 설치에 대한 로컬 관리자 권한이 필요하지 않습니다. 또한 Windows는 사전 구성된 드라이버 설정(예: 트레이 수)을 적용합니다.
이 섹션의 일부는 Samba Wiki에 게시된 Windows 클라이언트용 자동 드라이버 다운로드 설정 문서에서 채택되었습니다. 라이센스: CC BY 4.0. 작성자 및 기여자: Wiki 페이지의 기록 탭을 참조하십시오.
사전 요구 사항
- Samba가 인쇄 서버로 설정됨
1.16.1. 프린터 드라이버에 대한 기본 정보
이 섹션에서는 프린터 드라이버에 대한 일반적인 정보를 제공합니다.
지원되는 드라이버 모델 버전
Samba는 Windows 2000 이상 및 Windows Server 2000 이상에서 지원되는 프린터 드라이버 모델 버전 3만 지원합니다. Samba는 Windows 8 및 Windows Server 2012에 도입된 드라이버 모델 버전 4를 지원하지 않습니다. 그러나 이러한 Windows 버전과 최신 버전은 버전 3 드라이버도 지원합니다.
패키지 인식 드라이버
Samba는 패키지 인식 드라이버를 지원하지 않습니다.
업로드될 프린터 드라이버 준비
Samba 인쇄 서버에 드라이버를 업로드하기 전에 다음을 수행합니다.
- 압축된 형식으로 제공되는 경우 드라이버의 압축을 풉니다.
일부 드라이버는 Windows 호스트에 드라이버를 로컬로 설치하는 설치 애플리케이션을 시작해야 합니다. 특정 상황에서 설치 프로그램은 설치 프로그램이 실행되는 동안 개별 파일을 운영 체제의 임시 폴더에 추출합니다. 드라이버 파일을 업로드에 사용하려면 다음을 수행합니다.
- 설치 프로그램을 시작합니다.
- 임시 폴더의 파일을 새 위치로 복사합니다.
- 설치를 취소합니다.
프린터 제조업체에 인쇄 서버에 업로드를 지원하는 드라이버를 요청합니다.
프린터를 클라이언트에 32비트 및 64비트 드라이버 제공
32비트 및 64비트 Windows 클라이언트 모두에 대해 프린터용 드라이버를 제공하려면 두 아키텍처 모두에 대해 정확히 동일한 이름의 드라이버를 업로드해야 합니다. 예를 들어 Example Cryostat라는 32비트 드라이버와 Example
Cryostat (v1.0)
라는 64비트 드라이버를 업로드하는 경우 이름이 일치하지 않습니다. 결과적으로 드라이버 중 하나를 프린터에 할당할 수 있으며 두 아키텍처 모두에서 드라이버를 사용할 수 없습니다.
1.16.2. 사용자가 드라이버를 업로드하고 사전 구성 가능
프린터 드라이버를 업로드하고 미리 구성하려면 사용자 또는 그룹에 Se CryostatOperatorPrivilege
권한이 부여되어야 합니다. 사용자를 printadmin
그룹에 추가해야 합니다. Red Hat Enterprise Linux는 samba
패키지를 설치할 때 이 그룹을 자동으로 생성합니다. printadmin
그룹에는 사용 가능한 가장 낮은 동적 시스템 GID가 1000 미만으로 할당됩니다.
프로세스
예를 들어
Se CryostatOperatorPrivilege
권한을printadmin
그룹에 부여하려면 다음을 수행합니다.net rpc rights grant "printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights grant "printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully granted rights.
Copy to Clipboard Copied! 참고도메인 환경에서
Se CryostatOperatorPrivilege
를 도메인 그룹에 부여합니다. 이를 통해 사용자의 그룹 멤버십을 업데이트하여 권한을 중앙에서 관리할 수 있습니다.Se CryostatOperatorPrivilege
가 부여된 모든 사용자 및 그룹을 나열하려면 다음을 수행하십시오.net rpc rights list privileges SePrintOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights list privileges SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter administrator's password: SePrintOperatorPrivilege: BUILTIN\Administrators DOMAIN\printadmin
Copy to Clipboard Copied!
1.16.4. 클라이언트가 Samba 출력 서버를 신뢰하도록 하는 GPO 생성
보안상의 이유로 최근 Windows 운영 체제는 클라이언트가 신뢰할 수 없는 서버에서 패키지 인식 프린터 드라이버를 다운로드하지 못하도록 합니다. 인쇄 서버가 AD의 멤버인 경우 도메인에 GPO(그룹 정책 개체)를 생성하여 Samba 서버를 신뢰할 수 있습니다.
사전 요구 사항
- Samba 인쇄 서버는 AD 도메인의 멤버입니다.
- GPO를 만들기 위해 사용 중인 Windows 컴퓨터에는 Windows Remote Server Administration Tools(RSAT)가 설치되어 있어야 합니다. 자세한 내용은 Windows 설명서를 참조하십시오.
프로세스
-
AD 도메인
Administrator
사용자와 같은 그룹 정책을 편집할 수 있는 계정을 사용하여 Windows 컴퓨터에 로그인합니다. -
Group Policy Management Console
을 엽니다. AD 도메인을 마우스 오른쪽 버튼으로 클릭하고
이 도메인에서 GPO 만들기를 선택하고 여기에 연결합니다
.-
Legacy Cryostat Driver Policy
와 같은 GPO 이름을 입력하고OK
를 클릭합니다. 새 GPO가 도메인 항목에 표시됩니다. -
새로 생성된 GPO를 마우스 오른쪽 버튼으로 클릭하고
편집을
선택하여그룹 정책 관리 편집기
를 엽니다. 창 오른쪽에서
Point 및 Print Restriction
을 두 번 클릭하여 정책을 편집합니다.정책을 활성화하고 다음 옵션을 설정합니다.
-
Users can only point and print to these servers
and enter the fully-qualified domain name (FQDN) of the Samba print server to the field next to this option. 두 확인란의
보안 프롬프트
아래의 확인란에서Do not show warning or evation 프롬프트를
선택합니다.
-
- OK를 클릭합니다.
Package Point and Print - Approved servers
를 두 번 클릭하여 정책을 편집합니다.-
정책을 활성화하고
표시
버튼을 클릭합니다. Samba 출력 서버의 FQDN을 입력합니다.
-
확인을
클릭하여콘텐츠 표시
및 정책의 속성 창을 모두 닫습니다.
-
정책을 활성화하고
-
그룹 정책 관리 편집기
를 닫습니다. -
그룹 정책 관리 콘솔을
종료합니다.
Windows 도메인 멤버가 그룹 정책을 적용한 후 사용자가 프린터에 연결하면 프린터 드라이버가 Samba 서버에서 자동으로 다운로드됩니다.
1.16.5. 드라이버 업로드 및 프린터 사전 구성
Windows 클라이언트에서 Print Management
애플리케이션을 사용하여 Samba 인쇄 서버에서 호스팅되는 드라이버 및 사전 설정 프린터를 업로드합니다. 자세한 내용은 Windows 설명서를 참조하십시오.
1.17. FIPS 모드가 활성화된 서버에서 Samba 실행
이 섹션에서는 FIPS 모드가 활성화된 상태에서 Samba를 실행할 때의 제한 사항을 간략하게 설명합니다. 또한 Samba를 실행하는 Red Hat Enterprise Linux 호스트에서 FIPS 모드를 활성화하는 절차를 제공합니다.
1.17.1. FIPS 모드에서 Samba 사용 제한
다음 Samba 모드 및 기능은 지정된 조건에서 FIPS 모드에서 작동합니다.
- 도메인 구성원으로서의 Samba는 AES 암호를 사용하는 Kerberos 인증을 사용하는 AD(Active Directory) 또는 Red Hat Enterprise Linux IdM(Identity Management) 환경에서만 사용됩니다.
- Active Directory 도메인 멤버의 파일 서버로 Samba입니다. 그러나 이를 위해서는 클라이언트가 Kerberos를 사용하여 서버를 인증해야 합니다.
FIPS 모드가 활성화된 경우 FIPS의 보안 강화로 인해 다음 Samba 기능 및 모드가 작동하지 않습니다.
- RC4 암호가 차단되므로 NTLM(NT LAN Manager) 인증
- 서버 메시지 블록 버전 1(SMB1) 프로토콜
- NTLM 인증을 사용하므로 독립 실행형 파일 서버 모드
- NT4 스타일 도메인 컨트롤러
- NT4 스타일 도메인 멤버입니다. Red Hat은 PDC(기본 도메인 컨트롤러) 기능을 계속 지원합니다. IdM은 백그라운드에서 사용합니다.
- Samba 서버에 대한 암호 변경 Active Directory 도메인 컨트롤러에 대해 Kerberos를 사용하여 암호 변경만 수행할 수 있습니다.
다음 기능은 FIPS 모드에서 테스트되지 않으므로 Red Hat에서 지원하지 않습니다.
- Samba를 인쇄 서버로 실행
1.17.2. FIPS 모드에서 Samba 사용
Samba를 실행하는 RHEL 호스트에서 FIPS 모드를 활성화할 수 있습니다.
사전 요구 사항
- Samba는 Red Hat Enterprise Linux 호스트에서 구성됩니다.
- Samba는 FIPS 모드에서 지원되는 모드에서 실행됩니다.
프로세스
RHEL에서 FIPS 모드를 활성화합니다.
fips-mode-setup --enable
# fips-mode-setup --enable
Copy to Clipboard Copied! 서버를 재부팅합니다.
reboot
# reboot
Copy to Clipboard Copied! testparm
유틸리티를 사용하여 구성을 확인합니다.testparm -s
# testparm -s
Copy to Clipboard Copied! 명령에서 오류 또는 비호환성을 표시하는 경우 이를 수정하여 Samba가 올바르게 작동하는지 확인합니다.
1.18. Samba 서버의 성능 튜닝
특정 상황에서 Samba의 성능을 향상시킬 수 있는 설정과 성능에 부정적인 영향을 미칠 수 있는 설정에 대해 알아봅니다.
이 섹션의 일부는 Samba Wiki에 게시된 성능 튜닝 설명서에서 채택되었습니다. 라이센스: CC BY 4.0. 작성자 및 기여자: Wiki 페이지의 기록 탭을 참조하십시오.
사전 요구 사항
- Samba는 파일 또는 인쇄 서버로 설정됩니다.
1.18.1. SMB 프로토콜 버전 설정
각각의 새로운 SMB 버전은 기능을 추가하고 프로토콜의 성능을 향상시킵니다. 최근 Windows 및 Windows Server 운영 체제는 항상 최신 프로토콜 버전을 지원합니다. Samba가 최신 프로토콜 버전을 사용하는 경우 Samba에 연결하는 Windows 클라이언트는 성능 향상의 이점을 누릴 수 있습니다. Samba에서 server max 프로토콜의 기본값은 지원되는 안정적인 최신 SMB 프로토콜 버전으로 설정됩니다.
안정적인 최신 SMB 프로토콜 버전을 항상 활성화하려면 server max protocol
매개변수를 설정하지 마십시오. 매개 변수를 수동으로 설정하는 경우 최신 프로토콜 버전을 사용하도록 각 새 버전의 SMB 프로토콜로 설정을 수정해야 합니다.
다음 절차에서는 server max protocol
매개 변수에서 기본값을 사용하는 방법을 설명합니다.
프로세스
-
/etc/samba/smb.conf
파일의[global]
섹션에서server max protocol
매개변수를 제거합니다. Samba 구성 다시 로드
smbcontrol all reload-config
# smbcontrol all reload-config
Copy to Clipboard Copied!
1.18.3. 성능에 부정적인 영향을 미칠 수 있는 설정
기본적으로 Red Hat Enterprise Linux의 커널은 높은 네트워크 성능을 위해 조정됩니다. 예를 들어 커널은 버퍼 크기에 자동 조정 메커니즘을 사용합니다. /etc/samba/smb.conf
파일에서 socket options
매개변수를 설정하면 이러한 커널 설정이 재정의됩니다. 결과적으로 이 매개 변수를 설정하면 대부분의 경우 Samba 네트워크 성능이 저하됩니다.
커널에서 최적화된 설정을 사용하려면 /etc/samba/smb.conf
의 [global]
섹션에서 socket options
매개변수를 제거합니다.
1.19. 기본값보다 낮은 SMB 버전이 필요한 클라이언트와 호환되도록 Samba 구성
Samba는 지원하는 최소 서버 메시지 블록(SMB) 버전에 적절하고 안전한 기본값을 사용합니다. 그러나 이전 SMB 버전이 필요한 클라이언트가 있는 경우 이를 지원하도록 Samba를 구성할 수 있습니다.
1.19.1. Samba 서버에서 지원하는 최소 SMB 프로토콜 버전 설정
Samba의 /etc/samba/smb.conf
파일의 server min protocol
매개 변수는 Samba 서버가 지원하는 최소 서버 메시지 블록(SMB) 프로토콜 버전을 정의합니다. 최소 SMB 프로토콜 버전을 변경할 수 있습니다.
기본적으로 RHEL 8.2 이상의 Samba는 SMB2 및 최신 프로토콜 버전만 지원합니다. Red Hat은 더 이상 사용되지 않는 SMB1 프로토콜을 사용하지 않을 것을 권장합니다. 그러나 환경에 SMB1이 필요한 경우 server min protocol
매개 변수를 NT1
로 수동으로 설정하여 SMB1을 다시 활성화할 수 있습니다.
사전 요구 사항
- Samba가 설치 및 구성되어 있습니다.
프로세스
/etc/samba/smb.conf
파일을 편집하고,server min protocol
매개 변수를 추가하고, 매개 변수를 서버가 지원할 최소 SMB 프로토콜 버전으로 설정합니다. 예를 들어 최소 SMB 프로토콜 버전을SMB3
로 설정하려면 다음을 추가합니다.server min protocol = SMB3
server min protocol = SMB3
Copy to Clipboard Copied! smb
서비스를 다시 시작하십시오.systemctl restart smb
# systemctl restart smb
Copy to Clipboard Copied!
1.20. 자주 사용하는 Samba 명령줄 유틸리티
이 장에서는 Samba 서버로 작업할 때 자주 사용되는 명령을 설명합니다.
1.20.1. 네트워크 광고 사용 join 및 net rpc join 명령
net
유틸리티의 join
하위 명령을 사용하여 Samba를 AD 또는 NT4 도메인에 결합할 수 있습니다. 도메인에 가입하려면 /etc/samba/smb.conf
파일을 수동으로 생성하고 필요한 경우 PAM과 같은 추가 구성을 업데이트해야 합니다.
Red Hat은 realm
유틸리티를 사용하여 도메인에 참여할 것을 권장합니다. realm
유틸리티는 관련된 모든 구성 파일을 자동으로 업데이트합니다.
프로세스
다음 설정을 사용하여
/etc/samba/smb.conf
파일을 수동으로 생성합니다.AD 도메인 멤버의 경우:
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
Copy to Clipboard Copied! NT4 도메인 멤버의 경우:
[global] workgroup = domain_name security = user passdb backend = tdbsam
[global] workgroup = domain_name security = user passdb backend = tdbsam
Copy to Clipboard Copied!
-
*
기본 도메인 및/etc/samba/smb.conf
파일의[global
] 섹션에 결합하려는 도메인에 대한 ID 매핑 구성을 추가합니다. /etc/samba/smb.conf
파일을 확인합니다.testparm
# testparm
Copy to Clipboard Copied! 도메인 관리자로 도메인에 가입합니다.
AD 도메인에 가입하려면 다음을 수행합니다.
net ads join -U "DOMAIN\administrator"
# net ads join -U "DOMAIN\administrator"
Copy to Clipboard Copied! NT4 도메인에 가입하려면 다음을 수행합니다.
net rpc join -U "DOMAIN\administrator"
# net rpc join -U "DOMAIN\administrator"
Copy to Clipboard Copied!
winbind
소스를/etc/nsswitch.conf
파일의passwd
및그룹
데이터베이스 항목에 추가합니다.passwd: files winbind group: files winbind
passwd: files winbind group: files winbind
Copy to Clipboard Copied! winbind
서비스를 활성화하고 시작합니다.systemctl enable --now winbind
# systemctl enable --now winbind
Copy to Clipboard Copied! 선택 사항:
authselect
유틸리티를 사용하여 PAM을 구성합니다.자세한 내용은 시스템의
authselect(8)
도움말 페이지를 참조하십시오.선택 사항: AD 환경의 경우 Kerberos 클라이언트를 구성합니다.
자세한 내용은 Kerberos 클라이언트 설명서를 참조하십시오.
1.20.2. net rpc 권한 명령 사용
Windows에서는 계정 및 그룹에 권한을 할당하여 공유에서 ACL을 설정하거나 프린터 드라이버를 업로드하는 등 특수 작업을 수행할 수 있습니다. Samba 서버에서는 net rpc rights
명령을 사용하여 권한을 관리할 수 있습니다.
설정할 수 있는 권한 나열
사용 가능한 모든 권한 및 소유자를 나열하려면 net rpc rights list
명령을 사용합니다. 예를 들면 다음과 같습니다.
net rpc rights list -U "DOMAIN\administrator"
# net rpc rights list -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
SeMachineAccountPrivilege Add machines to domain
SeTakeOwnershipPrivilege Take ownership of files or other objects
SeBackupPrivilege Back up files and directories
SeRestorePrivilege Restore files and directories
SeRemoteShutdownPrivilege Force shutdown from a remote system
SePrintOperatorPrivilege Manage printers
SeAddUsersPrivilege Add users and groups to the domain
SeDiskOperatorPrivilege Manage disk shares
SeSecurityPrivilege System security
권한 부여
계정 또는 그룹에 권한을 부여하려면 net rpc rights grant
명령을 사용합니다.
예를 들어 DOMAIN\printadmin
그룹에 Se CryostatOperatorPrivilege
권한을 부여합니다.
net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
권한 취소
계정 또는 그룹에서 권한을 취소하려면 net rpc rights revoke
명령을 사용합니다.
예를 들어 DOMAIN\printadmin
그룹에서 Se CryostatOperatorPrivilege
권한을 취소하려면 다음을 수행합니다.
net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
1.20.4. net user 명령 사용
net user
명령을 사용하면 AD DC 또는 NT4 PDC에서 다음 작업을 수행할 수 있습니다.
- 모든 사용자 계정 나열
- 사용자 추가
- 사용자 제거
AD 도메인의 광고
또는 NT4 도메인의 rpc
과 같은 연결 방법을 지정하는 것은 도메인 사용자 계정을 나열하는 경우에만 필요합니다. 다른 사용자 관련 하위 명령은 연결 방법을 자동으로 감지할 수 있습니다.
-U user_name
매개변수를 명령에 전달하여 요청된 작업을 수행할 수 있는 사용자를 지정합니다.
도메인 사용자 계정 나열
AD 도메인의 모든 사용자를 나열하려면 다음을 수행합니다.
net ads user -U "DOMAIN\administrator"
# net ads user -U "DOMAIN\administrator"
NT4 도메인의 모든 사용자를 나열하려면 다음을 수행합니다.
net rpc user -U "DOMAIN\administrator"
# net rpc user -U "DOMAIN\administrator"
도메인에 사용자 계정 추가
Samba 도메인 멤버에서 net user add
명령을 사용하여 사용자 계정을 도메인에 추가할 수 있습니다.
예를 들어 user
계정을 도메인에 추가합니다.
계정을 추가합니다.
net user add user password -U "DOMAIN\administrator"
# net user add user password -U "DOMAIN\administrator" User user added
Copy to Clipboard Copied! 선택 사항: RPC(원격 프로시저 호출) 쉘을 사용하여 AD DC 또는 NT4 PDC에서 계정을 활성화합니다. 예를 들면 다음과 같습니다.
net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name
# net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751) net rpc> user edit disabled user: no Set user's disabled flag from [yes] to [no] net rpc> exit
Copy to Clipboard Copied!
도메인에서 사용자 계정 삭제
Samba 도메인 멤버에서는 net user delete
명령을 사용하여 도메인에서 사용자 계정을 제거할 수 있습니다.
예를 들어 도메인에서 user
계정을 제거하려면 다음을 수행합니다.
net user delete user -U "DOMAIN\administrator"
# net user delete user -U "DOMAIN\administrator"
User user deleted
1.20.5. rpcclient 유틸리티 사용
rpcclient
유틸리티를 사용하면 로컬 또는 원격 SMB 서버에서 클라이언트측 MS-RPC 기능을 수동으로 실행할 수 있습니다. 그러나 대부분의 기능은 Samba에서 제공하는 별도의 유틸리티에 통합되어 있습니다. MS-PRC 함수 테스트에만 rpcclient
를 사용합니다.
사전 요구 사항
-
samba-client
패키지가 설치되어 있습니다.
예
예를 들어 rpcclient
유틸리티를 사용하여 다음을 수행할 수 있습니다.
프린터 Spool Cryostat(SPOOLSS)를 관리합니다.
예 1.7. 드라이버에 드라이버 할당
rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"'
# rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"' Enter DOMAIN\administrators password: Successfully set printer_name to driver driver_name.
Copy to Clipboard Copied! SMB 서버에 대한 정보를 검색합니다.
예 1.8. 모든 파일 공유 및 공유 Cryostat 나열
rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum'
# rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum' Enter DOMAIN\administrators password: netname: Example_Share remark: path: C:\srv\samba\example_share\ password: netname: Example_Printer remark: path: C:\var\spool\samba\ password:
Copy to Clipboard Copied! SCC(Security Account Manager Remote) 프로토콜을 사용하여 작업을 수행합니다.
예 1.9. SMB 서버에 사용자 나열
rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers'
# rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers' Enter DOMAIN\administrators password: user:[user1] rid:[0x3e8] user:[user2] rid:[0x3e9]
Copy to Clipboard Copied! 독립 실행형 서버 또는 도메인 구성원에 대해 명령을 실행하면 로컬 데이터베이스의 사용자가 나열됩니다. AD DC 또는 NT4 PDC에 대해 명령을 실행하면 도메인 사용자가 나열됩니다.
1.20.6. samba-regedit 애플리케이션 사용
프린터 구성과 같은 특정 설정은 Samba 서버의 레지스트리에 저장됩니다. ncurses 기반 samba-regedit
애플리케이션을 사용하여 Samba 서버의 레지스트리를 편집할 수 있습니다.
사전 요구 사항
-
samba-client
패키지가 설치되어 있습니다.
프로세스
애플리케이션을 시작하려면 다음을 입력합니다.
samba-regedit
# samba-regedit
다음 키를 사용합니다.
- 커서를 커서 아래로 이동: 레지스트리 트리와 값을 탐색합니다.
- Enter: 키를 열거나 값을 편집합니다.
-
Tab: 키와
값
창 사이를 전환합니다. - Ctrl+C: 애플리케이션을 닫습니다.
1.20.7. smbcontrol 유틸리티 사용
smbcontrol
유틸리티를 사용하면 명령 메시지를 smbd
,nmbd
,winbindd
또는 모든 서비스에 보낼 수 있습니다. 이러한 제어 메시지는 예를 들어 구성을 다시 로드하도록 서비스에 지시합니다.
사전 요구 사항
-
samba-common-tools
패키지가 설치되어 있습니다.
프로세스
-
reload-config
메시지 유형을all
대상으로 전송하여smbd
,nmbd
,winbindd
서비스의 구성을 다시 로드합니다.
smbcontrol all reload-config
# smbcontrol all reload-config
1.20.8. smbpasswd 유틸리티 사용
smbpasswd
유틸리티는 로컬 Samba 데이터베이스에서 사용자 계정과 암호를 관리합니다.
사전 요구 사항
-
samba-common-tools
패키지가 설치되어 있습니다.
프로세스
사용자로 명령을 실행하는 경우
smbpasswd
는 명령을 실행하는 사용자의 Samba 암호를 변경합니다. 예를 들면 다음과 같습니다.smbpasswd
[user@server ~]$ smbpasswd New SMB password: password Retype new SMB password: password
Copy to Clipboard Copied! root
사용자로smbpasswd
를 실행하는 경우 유틸리티를 사용하여 다음을 수행할 수 있습니다.새 사용자를 생성합니다.
smbpasswd -a user_name
[root@server ~]# smbpasswd -a user_name New SMB password: password Retype new SMB password: password Added user user_name.
Copy to Clipboard Copied! 참고사용자를 Samba 데이터베이스에 추가하려면 먼저 로컬 운영 체제에서 계정을 만들어야 합니다.
Samba 사용자를 활성화합니다.
smbpasswd -e user_name
[root@server ~]# smbpasswd -e user_name Enabled user user_name.
Copy to Clipboard Copied! Samba 사용자를 비활성화합니다.
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Disabled user user_name
Copy to Clipboard Copied! 사용자를 삭제합니다.
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Deleted user user_name.
Copy to Clipboard Copied!
1.20.9. smbstatus 유틸리티 사용
smbstatus
유틸리티는 다음에 대해 보고합니다.
-
각
smbd
데몬의 PID당 Samba 서버에 연결합니다. 이 보고서에는 사용자 이름, 기본 그룹, SMB 프로토콜 버전, 암호화 및 서명 정보가 포함됩니다. -
Samba 공유당 연결입니다. 이 보고서에는
smbd
데몬의 PID, 연결 시스템의 IP, 연결이 설정된 타임스탬프, 암호화 및 서명 정보가 포함됩니다. - 잠긴 파일 목록입니다. 보고서 항목에는 opportunistic 잠금(oplock) 유형과 같은 추가 세부 정보가 포함됩니다.
사전 요구 사항
-
samba
패키지가 설치되어 있습니다. -
smbd
서비스가 실행 중입니다.
프로세스
smbstatus
# smbstatus
Samba version 4.15.2
PID Username Group Machine Protocol Version Encryption Signing
....-------------------------------------------------------------------------------------------------------------------------
963 DOMAIN\administrator DOMAIN\domain users client-pc (ipv4:192.0.2.1:57786) SMB3_02 - AES-128-CMAC
Service pid Machine Connected at Encryption Signing:
....---------------------------------------------------------------------------
example 969 192.0.2.1 Thu Nov 1 10:00:00 2018 CEST - AES-128-CMAC
Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
....--------------------------------------------------------------------------------------------------------
969 10000 DENY_WRITE 0x120089 RDONLY LEASE(RWH) /srv/samba/example file.txt Thu Nov 1 10:00:00 2018
1.20.10. smbtar 유틸리티 사용
smbtar
유틸리티는 SMB 공유 또는 하위 디렉터리의 콘텐츠를 백업하고 해당 콘텐츠를 tar
아카이브에 저장합니다. 또는 테이크 장치에 콘텐츠를 작성할 수 있습니다.
사전 요구 사항
-
samba-client
패키지가 설치되어 있습니다.
프로세스
다음 명령을 사용하여
//server/example/
공유에 있는데모
디렉터리의 콘텐츠를 백업하고 콘텐츠를/root/example.tar
아카이브에 저장합니다.smbtar -s server -x example -u user_name -p password -t /root/example.tar
# smbtar -s server -x example -u user_name -p password -t /root/example.tar
Copy to Clipboard Copied!
1.20.11. wbinfo 유틸리티 사용
wbinfo
유틸리티는 winbindd
서비스에서 생성 및 사용하는 정보를 쿼리하고 반환합니다.
사전 요구 사항
-
samba-winbind-clients
패키지가 설치되어 있습니다.
프로세스
예를 들어 wbinfo
를 사용하여 다음을 수행할 수 있습니다.
도메인 사용자를 나열합니다.
wbinfo -u
# wbinfo -u AD\administrator AD\guest ...
Copy to Clipboard Copied! 도메인 그룹을 나열합니다.
wbinfo -g
# wbinfo -g AD\domain computers AD\domain admins AD\domain users ...
Copy to Clipboard Copied! 사용자의 SID를 표시합니다.
wbinfo --name-to-sid="AD\administrator"
# wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
Copy to Clipboard Copied! 도메인 및 신뢰에 대한 정보를 표시합니다.
wbinfo --trusted-domains --verbose
# wbinfo --trusted-domains --verbose Domain Name DNS Domain Trust Type Transitive In Out BUILTIN None Yes Yes Yes server None Yes Yes Yes DOMAIN1 domain1.example.com None Yes Yes Yes DOMAIN2 domain2.example.com External No Yes Yes
Copy to Clipboard Copied!
2장. NFS 서버 배포
NFS(네트워크 파일 시스템) 프로토콜을 사용하면 원격 사용자가 네트워크를 통해 공유 디렉터리를 마운트하고 로컬로 마운트하여 사용할 수 있습니다. 이를 통해 네트워크의 중앙 집중식 서버에 리소스를 통합할 수 있습니다.
2.1. 마이너 NFSv4 버전의 주요 기능
각 마이너 NFSv4 버전은 성능 및 보안을 개선하기 위한 개선 사항을 제공합니다. 이러한 개선 사항을 사용하여 NFSv4의 모든 가능성을 활용하여 네트워크 간에 효율적이고 안정적인 파일 공유를 보장할 수 있습니다.
NFSv4.2의 주요 기능
- 서버 측 복사
- 서버 측 복사는 데이터를 네트워크를 통해 뒤로 전송하지 않고 서버에서 파일을 복사하는 NFS 서버의 기능입니다.
- 스파스 파일
- 파일에 하나 이상의 빈 공간 또는 0으로 구성된 할당되지 않은 데이터 블록 또는 초기화되지 않은 데이터 블록을 사용할 수 있습니다. 이를 통해 애플리케이션은 스파스 파일에서 홀의 위치를 매핑할 수 있습니다.
- 공간 예약
- 클라이언트는 데이터를 작성하기 전에 스토리지 서버에 공간을 예약하거나 할당할 수 있습니다. 이렇게 하면 서버가 공간이 부족하지 않습니다.
- 레이블이 지정된 NFS
- 데이터 액세스 권한을 적용하고 NFS 파일 시스템의 개별 파일에 대해 클라이언트와 서버 간에 SELinux 레이블을 활성화합니다.
- 레이아웃 개선 사항
- 병렬 NFS(pNFS) 서버가 더 나은 성능 통계를 수집할 수 있는 기능을 제공합니다.
NFSv4.1의 주요 기능
- pNFS에 대한 클라이언트 측 지원
- 고속 I/O를 클러스터형 서버로 지원하기 때문에 여러 시스템에 데이터를 저장하고, 데이터에 대한 직접 액세스 권한, 메타데이터 업데이트에 대한 동기화를 제공할 수 있습니다.
- 세션
세션은 클라이언트에 속하는 연결을 기준으로 서버 상태를 유지합니다. 두 가지 주요 기능을 제공합니다.
-
이전 작업과 새 작업의 응답을 구분하는 데 도움이 되는
정확히once-semantics
(EOS)입니다. - NFS 작업을 위해 여러 네트워크 연결을 바인딩하여 성능을 개선
-
이전 작업과 새 작업의 응답을 구분하는 데 도움이 되는
NFSv4.0의 주요 기능
- RPC 및 보안
-
RPCSEC_GSS
프레임워크는 RPC 보안을 강화합니다. NFSv4 프로토콜은 대역 내 보안 협상에 대한 새로운 작업을 도입합니다. 이를 통해 클라이언트는 파일 시스템 리소스에 안전하게 액세스하기 위한 서버 정책을 쿼리할 수 있습니다. - 절차 및 작업 구조
-
NFS 4.0에는
COMPOUND
절차가 도입되어 클라이언트가 RPC를 줄이기 위해 여러 작업을 단일 요청으로 병합할 수 있습니다. - 파일 시스템 모델
NFS 4.0은 계층형 파일 시스템 모델을 유지하여 국제화를 위해 파일을 바이트 스트림 및 UTF-8로 인코딩 이름으로 처리합니다.
파일 처리 유형
volatile 파일 처리를 사용하면 서버가 파일 시스템 변경 사항에 맞게 조정하고 영구 파일 처리 없이도 필요에 따라 클라이언트가 조정할 수 있습니다.
특성 유형
파일 속성 구조에는 각각 고유한 목적을 제공하는 필수, 권장, 이름이 지정된 속성이 포함됩니다. NFSv3에서 파생되는 필수 속성은 파일 유형을 구분하는 데 중요하지만 ACL과 같은 권장 속성은 액세스 제어 기능을 제공합니다.
다중 서버 네임스페이스
네임스페이스는 여러 서버에서 확장되어 속성, 참조 지원, 중복 및 원활한 서버 마이그레이션을 기반으로 파일 시스템 전송을 단순화합니다.
- OPEN 및 CLOSE 작업
- 이러한 작업은 파일 조회, 생성 및 의미 체계 공유를 단일 시점에서 결합하여 올바른 파일 공유 의미 체계를 보장할 수 있습니다.
- 파일 잠금
- 파일 잠금은 프로토콜의 일부이므로 RPC 콜백이 필요하지 않습니다. 파일 잠금 상태는 임대 기반 모델에서 서버에서 관리하며, 리스를 갱신하지 못하면 서버에 의한 상태 해제가 발생할 수 있습니다.
- 클라이언트 캐싱 및 위임
- 캐싱은 특성 및 디렉터리 캐싱에 대한 클라이언트 결정 타임아웃을 사용하여 이전 버전과 유사합니다. NFS 4.0의 위임을 사용하면 서버가 클라이언트에 특정 책임을 할당하여 특정 파일 공유 의미가 보장되며 즉각적인 서버 개입없이 로컬 파일 작업을 수행할 수 있습니다.
2.2. AUTH_SYS 인증 방법
AUTH_SYS
메서드( AUTH_UNIX
라고도 함)는 클라이언트 인증 메커니즘입니다. AUTH_SYS
를 사용하면 클라이언트는 사용자의 사용자 ID(UID) 및 그룹 ID(GID)를 서버에 전송하여 파일에 액세스할 때 ID 및 권한을 확인합니다. 클라이언트 제공 정보가 의존하므로 덜 안전한 것으로 간주되므로 잘못 구성된 경우 무단 액세스가 가능합니다.
매핑 메커니즘을 사용하면 UID 및 GID 할당이 시스템 간에 다른 경우에도 NFS 클라이언트가 서버에서 적절한 권한으로 파일에 액세스할 수 있습니다. UID 및 GID는 다음 메커니즘을 통해 NFS 클라이언트와 서버 간에 매핑됩니다.
- 직접 매핑
UID 및 GID는 로컬 시스템과 원격 시스템 간에 NFS 서버와 클라이언트에 의해 직접 매핑됩니다. 이를 위해서는 NFS 파일 공유에 참여하는 모든 시스템에서 일관된 UID 및 GID 할당이 필요합니다. 예를 들어 클라이언트에서 UID 1000이 있는 사용자는 서버에서 UID 1000이 있는 사용자만 액세스할 수 있는 공유의 파일에 액세스할 수 있습니다.
NFS 환경에서 간소화된 ID 관리를 위해 관리자는 LDAP 또는 NIS(Network Information Service)와 같은 중앙 집중식 서비스를 사용하여 여러 시스템의 UID 및 GID 매핑을 관리하는 경우가 많습니다.
- 사용자 및 그룹 ID 매핑
-
NFS 서버와 클라이언트는
idmapd
서비스를 사용하여 서로 다른 시스템 간에 UID와 GID를 변환하여 일관된 식별 및 권한 할당을 수행할 수 있습니다.
2.3. AUTH_GSS 인증 방법
Kerberos는 비보안 네트워크를 통해 클라이언트 및 서버에 대한 보안 인증을 허용하는 네트워크 인증 프로토콜입니다. 대칭 키 암호화를 사용하며 사용자 및 서비스를 인증하기 위해 신뢰할 수 있는 KMS(Key Distribution Center)가 필요합니다.
RPCSEC_GSS
Kerberos 메커니즘을 사용하는 AUTH_SYS
와 달리 서버는 클라이언트에 의존하지 않고 파일에 액세스하는 사용자를 올바르게 나타냅니다. 대신 암호화는 서버에 사용자를 인증하는 데 사용되며 악의적인 클라이언트가 사용자의 Kerberos 자격 증명을 사용하지 않고도 사용자를 가장하지 못하게 합니다.
/etc/exports
파일에서 sec
옵션은 공유에서 제공해야 하는 Kerberos 보안의 하나 또는 여러 가지 방법을 정의하고 클라이언트는 이러한 방법 중 하나를 사용하여 공유를 마운트할 수 있습니다. sec
옵션은 다음 값을 지원합니다.
-
sys
: 암호화 보호 없음 (기본값) -
krb5
: 인증 만 -
krb5i
: 인증 및 무결성 보호 -
krb5p
: 인증, 무결성 검사 및 트래픽 암호화
메서드에서 제공하는 암호화 기능이 많을수록 성능이 저하됩니다.
2.4. 내보낸 파일 시스템에 대한 파일 권한
내보낸 파일 시스템의 파일 권한은 NFS를 통해 액세스하는 클라이언트의 파일 및 디렉터리에 대한 액세스 권한을 결정합니다.
원격 호스트에서 NFS 파일 시스템을 마운트하면 각 공유 파일에 있는 유일한 보호는 파일 시스템 권한입니다. 동일한 UID(사용자 ID) 값을 공유하는 두 사용자가 다른 클라이언트 시스템에 동일한 NFS 파일 시스템을 마운트하는 경우 서로의 파일을 수정할 수 있습니다.
NFS는 클라이언트의 root
사용자를 서버의 root
사용자와 동일하게 처리합니다. 그러나 기본적으로 NFS 서버는 NFS 공유에 액세스할 때 root
를 nobody
계정에 매핑합니다. root_squash
옵션은 이 동작을 제어합니다.
2.5. NFS 서버에 필요한 서비스
RHEL(Red Hat Enterprise Linux)은 커널 모듈과 사용자 공간 프로세스의 조합을 사용하여 NFS 파일 공유를 제공합니다.
서비스 이름 | NFS 버전 | 설명 |
---|---|---|
| 3 |
이 프로세스에서는 로컬 원격 프로시저 호출(RPC) 서비스의 포트 예약을 허용하여 해당 원격 RPC 서비스에 액세스할 수 있도록 합니다. |
| 3, 4 |
이 서비스는 NFSv3 클라이언트의 요청된 NFS 공유가 현재 NFS 서버에서 내보내지고 클라이언트가 액세스할 수 있는지 확인합니다. |
| 3, 4 | 이 프로세스는 서버에서 정의하는 명시적인 NFS 버전 및 프로토콜을 알립니다. NFS 클라이언트가 연결할 때마다 서버 스레드를 제공하는 등 NFS 클라이언트의 동적 요구 사항을 충족하기 위해 커널과 함께 작동합니다.
|
| 3, 4 | 이 서비스는 원격 사용자에 대한 사용자 할당량 정보를 제공합니다. |
| 4 | 이 프로세스에서는 NFSv4 클라이언트와 서버 upcall을 제공합니다. 이 호출은 NFSv4 이름( 'user@domain'형식의 문자열)과 로컬 사용자 및 그룹 ID 간에 매핑됩니다. |
| 3, 4 |
이 서비스는 |
| 4 | 이 서비스는 다른 클라이언트가 서버 재부팅과 결합된 네트워크 파티션 중에 충돌하는 잠금을 수행할 때 서버가 잠금 회수를 부여하지 못하도록 NFSv4 클라이언트 추적 데몬을 제공합니다. |
| 3 | 이 서비스는 로컬 호스트가 재부팅될 때 및 원격 NFSv3 호스트가 재부팅될 때 커널에 알림을 제공합니다. |
모듈 이름 | NFS 버전 | 설명 |
---|---|---|
| 3, 4 | 공유 NFS 파일 시스템에 대해 서비스를 요청하는 NFS 커널 모듈입니다. |
| 3 | 이 커널 모듈은 클라이언트가 서버의 파일을 잠글 수 있는 NLM(Network Lock Manager) 프로토콜을 구현합니다. NFS 서버가 실행되면 RHEL에서 모듈을 자동으로 로드합니다. |
2.6. /etc/exports 구성 파일
/etc/exports
파일은 서버가 내보내는 디렉터리를 제어합니다. 각 행에는 내보내기 지점, 디렉터리를 마운트할 수 있는 공백으로 구분된 클라이언트 목록, 각 클라이언트에 대한 옵션이 포함되어 있습니다.
<directory> <host_or_network_1>(<options_1>) <host_or_network_n>(<options_n>)...
<directory> <host_or_network_1>(<options_1>) <host_or_network_n>(<options_n>)...
다음은 /etc/exports
항목의 개별 부분입니다.
- <export>
- 내보낼 디렉터리입니다.
- <host_or_network>
- 내보내기가 공유되는 호스트 또는 네트워크입니다. 예를 들어 호스트 이름, IP 주소 또는 IP 네트워크를 지정할 수 있습니다.
- <options>
- 호스트 또는 네트워크의 옵션.
클라이언트와 옵션 사이에 공백을 추가하면 동작이 변경됩니다. 예를 들어 다음 줄은 다음과 같은 의미가 없습니다.
/projects client.example.com(rw) /projects client.example.com (rw)
/projects client.example.com(rw)
/projects client.example.com (rw)
첫 번째 줄에서 서버는 client.example.com
만 읽기-쓰기 모드로 /projects
디렉터리를 마운트하고 다른 호스트에서 공유를 마운트할 수 없습니다. 그러나 두 번째 행의 client.example.com
과 (rw)
사이의 공간으로 인해 서버는 읽기 전용 모드(기본 설정)로 디렉터리를 client.example.com
으로 내보내지만 다른 모든 호스트는 읽기-쓰기 모드로 공유를 마운트할 수 있습니다.
NFS 서버는 내보낸 각 디렉터리에 대해 다음 기본 설정을 사용합니다.
기본 설정 | 설명 |
---|---|
| 디렉터리를 읽기 전용 모드로 내보냅니다. |
| 이전 요청의 변경 사항을 디스크에 쓰기 전에 NFS 서버는 요청에 응답하지 않습니다. |
| 서버가 다른 쓰기 요청이 보류 중인 것으로 의심되는 경우 디스크에 쓰기를 지연합니다. |
|
클라이언트의 |
2.7. NFSv4 전용 서버 구성
네트워크에 NFSv3 클라이언트가 없는 경우 NFSv4 또는 특정 마이너 프로토콜 버전만 지원하도록 NFS 서버를 구성할 수 있습니다. 서버에서 NFSv4만 사용하면 네트워크에 열려 있는 포트 수를 줄일 수 있습니다.
프로세스
nfs-utils
패키지를 설치합니다.dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! /etc/nfs.conf
파일을 편집하고 다음과 같이 변경합니다.[nfsd]
섹션에서vers3
매개 변수를 비활성화하여 NFSv3를 비활성화합니다.[nfsd] vers3=n
[nfsd] vers3=n
Copy to Clipboard Copied! 선택 사항: 특정 NFSv4 마이너 버전만 필요한 경우 모든
vers4.<minor_version
> 매개변수의 주석을 제거하고 적절하게 설정합니다. 예를 들면 다음과 같습니다.[nfsd] vers3=n # vers4=y vers4.0=n vers4.1=n vers4.2=y
[nfsd] vers3=n # vers4=y vers4.0=n vers4.1=n vers4.2=y
Copy to Clipboard Copied! 이 구성을 사용하면 서버에서 NFS 버전 4.2만 제공합니다.
중요특정 NFSv4 마이너 버전만 필요한 경우 마이너 버전의 매개변수만 설정합니다. 예기치 않은 활성화 또는 마이너 버전의 비활성화를 방지하기 위해
vers4
매개변수의 주석을 제거하지 마십시오. 기본적으로vers4
매개변수는 모든 NFSv4 마이너 버전을 활성화하거나 비활성화합니다. 그러나 다른vers
매개 변수와 함께vers4
를 설정하면 이 동작이 변경됩니다.
모든 NFSv3 관련 서비스를 비활성화합니다.
systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
Copy to Clipboard Copied! NFSv3 마운트 요청을 수신 대기하지 않도록
rpc.mountd
데몬을 구성합니다. 다음 콘텐츠를 사용하여/etc/systemd/system/nfs-mountd.service.d/v4only.conf
파일을 만듭니다.[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
Copy to Clipboard Copied! systemd
관리자 구성을 다시 로드하고nfs-mountd
서비스를 다시 시작합니다.systemctl daemon-reload systemctl restart nfs-mountd
# systemctl daemon-reload # systemctl restart nfs-mountd
Copy to Clipboard Copied! 선택 사항: 공유할 디렉터리를 생성합니다. 예를 들면 다음과 같습니다.
mkdir -p /nfs/projects/
# mkdir -p /nfs/projects/
Copy to Clipboard Copied! 기존 디렉터리를 공유하려면 이 단계를 건너뜁니다.
/nfs/projects/
디렉터리에 필요한 권한을 설정합니다.chmod 2770 /nfs/projects/ chgrp users /nfs/projects/
# chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/
Copy to Clipboard Copied! 이러한 명령은
/nfs/projects/
디렉터리에서users
그룹에 대한 쓰기 권한을 설정하고 동일한 그룹이 이 디렉터리에 생성된 새 항목에 자동으로 설정되어 있는지 확인합니다.공유하려는 각 디렉터리의
/etc/exports
파일에 내보내기 지점을 추가합니다./nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
Copy to Clipboard Copied! 이 항목은
192.0.2.0/24
및2001:db8::/32
서브넷의 클라이언트에 대한 읽기 및 쓰기 액세스 권한으로 액세스할 수 있도록/nfs/projects/
디렉터리를 공유합니다.firewalld
에서 관련 포트를 엽니다.firewall-cmd --permanent --add-service nfs firewall-cmd --reload
# firewall-cmd --permanent --add-service nfs # firewall-cmd --reload
Copy to Clipboard Copied! NFS 서버를 활성화하고 시작합니다.
systemctl enable --now nfs-server
# systemctl enable --now nfs-server
Copy to Clipboard Copied!
검증
서버에서 서버가 구성한 NFS 버전만 제공하는지 확인합니다.
cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2
# cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2
Copy to Clipboard Copied! 클라이언트에서 다음 단계를 수행합니다.
nfs-utils
패키지를 설치합니다.dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! 내보낸 NFS 공유를 마운트합니다.
mount server.example.com:/nfs/projects/ /mnt/
# mount server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! users
그룹의 멤버인 사용자로/mnt/
:에 파일을 생성합니다.touch /mnt/file
# touch /mnt/file
Copy to Clipboard Copied! 디렉터리를 나열하여 파일이 생성되었는지 확인합니다.
ls -l /mnt/
# ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 file
Copy to Clipboard Copied!
2.8. 선택적 NFSv4 지원으로 NFSv3 서버 구성
여전히 NFSv3 클라이언트를 사용하는 네트워크에서 NFSv3 프로토콜을 사용하여 공유를 제공하도록 서버를 구성합니다. 네트워크에 최신 클라이언트가 있는 경우에도 NFSv4를 활성화할 수 있습니다. 기본적으로 Red Hat Enterprise Linux NFS 클라이언트는 서버에서 제공하는 최신 NFS 버전을 사용합니다.
프로세스
nfs-utils
패키지를 설치합니다.dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! 선택 사항: 기본적으로 NFSv3 및 NFSv4가 활성화됩니다. NFSv4 또는 특정 마이너 버전만 필요하지 않은 경우 모든
vers4.<minor_version
> 매개변수의 주석을 제거하고 그에 따라 설정합니다.[nfsd] # vers3=y # vers4=y vers4.0=n vers4.1=n vers4.2=y
[nfsd] # vers3=y # vers4=y vers4.0=n vers4.1=n vers4.2=y
Copy to Clipboard Copied! 이 구성을 사용하면 서버에서 NFS 버전 3 및 4.2만 제공합니다.
중요특정 NFSv4 마이너 버전만 필요한 경우 마이너 버전의 매개변수만 설정합니다. 예기치 않은 활성화 또는 마이너 버전의 비활성화를 방지하기 위해
vers4
매개변수의 주석을 제거하지 마십시오. 기본적으로vers4
매개변수는 모든 NFSv4 마이너 버전을 활성화하거나 비활성화합니다. 그러나 다른vers
매개 변수와 함께vers4
를 설정하면 이 동작이 변경됩니다.기본적으로 NFSv3 RPC 서비스는 임의의 포트를 사용합니다. 방화벽 구성을 활성화하려면
/etc/nfs.conf
파일에서 고정 포트 번호를 구성합니다.[lockd]
섹션에서nlockmgr
RPC 서비스의 고정 포트 번호를 설정합니다. 예를 들면 다음과 같습니다.[lockd] port=5555
[lockd] port=5555
Copy to Clipboard Copied! 이 설정을 사용하면 서비스는 UDP 및 TCP 프로토콜 모두에 이 포트 번호를 자동으로 사용합니다.
[statd]
섹션에서rpc.statd
서비스의 고정 포트 번호를 설정합니다. 예를 들면 다음과 같습니다.[statd] port=6666
[statd] port=6666
Copy to Clipboard Copied! 이 설정을 사용하면 서비스는 UDP 및 TCP 프로토콜 모두에 이 포트 번호를 자동으로 사용합니다.
선택 사항: 공유할 디렉터리를 생성합니다. 예를 들면 다음과 같습니다.
mkdir -p /nfs/projects/
# mkdir -p /nfs/projects/
Copy to Clipboard Copied! 기존 디렉터리를 공유하려면 이 단계를 건너뜁니다.
/nfs/projects/
디렉터리에 필요한 권한을 설정합니다.chmod 2770 /nfs/projects/ chgrp users /nfs/projects/
# chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/
Copy to Clipboard Copied! 이러한 명령은
/nfs/projects/
디렉터리에서users
그룹에 대한 쓰기 권한을 설정하고 동일한 그룹이 이 디렉터리에 생성된 새 항목에 자동으로 설정되어 있는지 확인합니다.공유하려는 각 디렉터리의
/etc/exports
파일에 내보내기 지점을 추가합니다./nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
Copy to Clipboard Copied! 이 항목은
192.0.2.0/24
및2001:db8::/32
서브넷의 클라이언트에 대한 읽기 및 쓰기 액세스 권한으로 액세스할 수 있도록/nfs/projects/
디렉터리를 공유합니다.firewalld
에서 관련 포트를 엽니다.firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} firewall-cmd --reload
# firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} # firewall-cmd --reload
Copy to Clipboard Copied! NFS 서버를 활성화하고 시작합니다.
systemctl enable --now rpc-statd nfs-server
# systemctl enable --now rpc-statd nfs-server
Copy to Clipboard Copied!
검증
서버에서 서버가 구성한 NFS 버전만 제공하는지 확인합니다.
cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2
# cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2
Copy to Clipboard Copied! 클라이언트에서 다음 단계를 수행합니다.
nfs-utils
패키지를 설치합니다.dnf install nfs-utils
# dnf install nfs-utils
Copy to Clipboard Copied! 내보낸 NFS 공유를 마운트합니다.
mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/
# mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! 공유가 지정된 NFS 버전으로 마운트되었는지 확인합니다.
mount | grep "/mnt"
# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (rw,relatime,vers=3,...
Copy to Clipboard Copied! users
그룹의 멤버인 사용자로/mnt/
:에 파일을 생성합니다.touch /mnt/file
# touch /mnt/file
Copy to Clipboard Copied! 디렉터리를 나열하여 파일이 생성되었는지 확인합니다.
ls -l /mnt/
# ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 file
Copy to Clipboard Copied!
2.9. NFS 서버에서 할당량 지원 활성화
사용자 또는 그룹이 저장할 수 있는 데이터 양을 제한하려면 파일 시스템에 할당량을 구성할 수 있습니다. NFS 서버에서 rpc-rquotad
서비스는 할당량이 NFS 클라이언트의 사용자에게도 적용되도록 합니다.
프로세스
내보내는 디렉터리에서 할당량이 활성화되어 있는지 확인합니다.
ext 파일 시스템의 경우 다음을 입력합니다.
quotaon -p /nfs/projects/
# quotaon -p /nfs/projects/ group quota on /nfs/projects (/dev/sdb1) is on user quota on /nfs/projects (/dev/sdb1) is on project quota on /nfs/projects (/dev/sdb1) is off
Copy to Clipboard Copied! XFS 파일 시스템의 경우 다음을 입력합니다.
findmnt /nfs/projects
# findmnt /nfs/projects TARGET SOURCE FSTYPE OPTIONS /nfs/projects /dev/sdb1 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquota
Copy to Clipboard Copied!
quota-rpc
패키지를 설치합니다.dnf install quota-rpc
# dnf install quota-rpc
Copy to Clipboard Copied! 선택 사항: 기본적으로 quota RPC 서비스는 포트 875에서 실행됩니다. 다른 포트에서 서비스를 실행하려면
/etc/sysconfig/rpc
>를 추가합니다.-rquotad
파일의RPCRQUOTADOPTS
변수에 -p <port_numberRPCRQUOTADOPTS="-p __<port_number>__"
RPCRQUOTADOPTS="-p __<port_number>__"
Copy to Clipboard Copied! 선택 사항: 기본적으로 원격 호스트는 할당량만 읽을 수 있습니다. 클라이언트가 할당량을 설정할 수 있도록 하려면
/etc/sysconfig/rpc-rquotad
파일의RPCRQUOTADOPTS
변수에-S
옵션을 추가합니다.RPCRQUOTADOPTS="-S"
RPCRQUOTADOPTS="-S"
Copy to Clipboard Copied! firewalld
에서 포트를 엽니다.firewall-cmd --permanent --add-port=875/udp firewall-cmd --reload
# firewall-cmd --permanent --add-port=875/udp # firewall-cmd --reload
Copy to Clipboard Copied! rpc-rquotad
서비스를 활성화하고 시작합니다.systemctl enable --now rpc-rquotad
# systemctl enable --now rpc-rquotad
Copy to Clipboard Copied!
검증
클라이언트에서 다음을 수행합니다.
내보낸 공유를 마운트합니다.
mount server.example.com:/nfs/projects/ /mnt/
# mount server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! 할당량을 표시합니다. 명령은 내보낸 디렉터리의 파일 시스템에 따라 달라집니다. 예를 들면 다음과 같습니다.
마운트된 모든 ext 파일 시스템에 특정 사용자의 할당량을 표시하려면 다음을 입력합니다.
quota -u <user_name>
# quota -u <user_name> Disk quotas for user demo (uid 1000): Filesystem space quota limit grace files quota limit grace server.example.com:/nfs/projects 0K 100M 200M 0 0 0
Copy to Clipboard Copied! XFS 파일 시스템에 사용자 및 그룹 할당량을 표시하려면 다음을 입력합니다.
xfs_quota -x -c "report -h" /mnt/
# xfs_quota -x -c "report -h" /mnt/ User quota on /nfs/projects (/dev/vdb1) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] demo 0 100M 200M 00 [------]
Copy to Clipboard Copied!
2.10. NFS 서버에서 RDMA를 통해 NFS 활성화
RDMA(Remote Direct Memory Access)는 클라이언트 시스템이 스토리지 서버의 메모리에서 자체 메모리로 직접 데이터를 전송할 수 있는 프로토콜입니다. 이렇게 하면 스토리지 처리량이 향상되고 서버와 클라이언트 간의 데이터 전송 대기 시간이 단축되고 두 종료 모두에서 CPU 부하가 줄어듭니다. NFS 서버와 클라이언트가 모두 RDMA를 통해 연결된 경우 클라이언트는 NFSoRDMA를 사용하여 내보낸 디렉터리를 마운트할 수 있습니다.
사전 요구 사항
- NFS 서비스가 실행 중이고 구성됨
- RoCE(InfiniBand 또는 RDMA over Converged Ethernet) 장치가 서버에 설치되어 있습니다.
- IP over InfiniBand (IPoIB)는 서버에 구성되고 InfiniBand 장치에 IP 주소가 할당됩니다.
프로세스
rdma-core
패키지를 설치합니다.dnf install rdma-core
# dnf install rdma-core
Copy to Clipboard Copied! 패키지가 이미 설치된 경우
/etc/rdma/modules/rdma.conf
파일의xprtrdma
및svcrdma
모듈이 주석 해제되었는지 확인합니다.NFS over RDMA client support NFS over RDMA server support
# NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdma
Copy to Clipboard Copied! 선택 사항: 기본적으로 RDMA를 통한 NFS는 포트 20049를 사용합니다. 다른 포트를 사용하려면
/etc/nfs.conf
파일의[nfsd]
섹션에서rdma-port
설정을 설정합니다.rdma-port=<port>
rdma-port=<port>
Copy to Clipboard Copied! firewalld
에서 NFSoRDMA 포트를 엽니다.firewall-cmd --permanent --add-port={20049/tcp,20049/udp} firewall-cmd --reload
# firewall-cmd --permanent --add-port={20049/tcp,20049/udp} # firewall-cmd --reload
Copy to Clipboard Copied! 20049 이외의 다른 포트를 설정하면 포트 번호를 조정합니다.
nfs-server
서비스를 다시 시작합니다.systemctl restart nfs-server
# systemctl restart nfs-server
Copy to Clipboard Copied!
검증
InfiniBand 하드웨어가 있는 클라이언트에서 다음 단계를 수행합니다.
다음 패키지를 설치합니다.
dnf install nfs-utils rdma-core
# dnf install nfs-utils rdma-core
Copy to Clipboard Copied! RDMA를 통해 내보낸 NFS 공유를 마운트합니다.
mount -o rdma server.example.com:/nfs/projects/ /mnt/
# mount -o rdma server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! 기본값(20049) 이외의 포트 번호를 설정하면 port
= <port_number>
를 명령에 전달합니다.mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
# mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! rdma
옵션을 사용하여 공유가 마운트되었는지 확인합니다.mount | grep "/mnt"
# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)
Copy to Clipboard Copied!
2.11. Red Hat Enterprise Linux Identity Management 도메인에서 Kerberos를 사용하여 NFS 서버 설정
Red Hat Enterprise Linux IdM(Identity Management)을 사용하는 경우 NFS 서버를 IdM 도메인에 연결할 수 있습니다. 이를 통해 사용자와 그룹을 중앙에서 관리하고 인증, 무결성 보호 및 트래픽 암호화에 Kerberos를 사용할 수 있습니다.
사전 요구 사항
- NFS 서버는 Red Hat Enterprise Linux IdM(Identity Management) 도메인에 등록되어 있습니다.
- NFS 서버가 실행 중이고 구성되어 있습니다.
프로세스
IdM 관리자로 kerberos 티켓을 받습니다.
kinit admin
# kinit admin
Copy to Clipboard Copied! nfs/<FQDN> 서비스
주체를 생성합니다.ipa service-add nfs/nfs_server.idm.example.com
# ipa service-add nfs/nfs_server.idm.example.com
Copy to Clipboard Copied! IdM에서
nfs
서비스 주체를 검색하여/etc/krb5.keytab
파일에 저장합니다.ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
# ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
Copy to Clipboard Copied! 선택 사항:
/etc/krb5.keytab
파일에서 주체를 표시합니다.klist -k /etc/krb5.keytab
# klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! 기본적으로 IdM 클라이언트는 호스트를 IdM 도메인에 결합할 때
/etc/krb5.keytab
파일에 호스트 주체를 추가합니다. 호스트 주체가 없는 경우ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_server.idm.example.com -k /etc/krb5.keytab
명령을 사용하여 추가합니다.ipa-client-automount
유틸리티를 사용하여 IdM ID의 매핑을 구성합니다.ipa-client-automount
# ipa-client-automount Searching for IPA server... IPA server: DNS discovery Location: default Continue to configure the system with these values? [no]: yes Configured /etc/idmapd.conf Restarting sssd, waiting for it to become available. Started autofs
Copy to Clipboard Copied! /etc/exports
파일을 업데이트하고 Kerberos 보안 방법을 클라이언트 옵션에 추가합니다. 예를 들면 다음과 같습니다./nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
Copy to Clipboard Copied! 클라이언트가 여러 보안 방법 중에서 선택할 수 있도록 하려면 해당 방법을 콜론으로 구분하여 지정합니다.
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
Copy to Clipboard Copied! 내보낸 파일 시스템을 다시 로드합니다.
exportfs -r
# exportfs -r
Copy to Clipboard Copied!
2.12. TLS 지원을 사용하여 NFS 서버 구성
RPCSEC_GSS
프로토콜이 없으면 NFS 트래픽은 기본적으로 암호화되지 않습니다. Red Hat Enterprise Linux 10부터 TLS를 사용하여 NFS를 구성할 수 있으므로 기본적으로 NFS 트래픽을 암호화할 수 있습니다.
사전 요구 사항
- NFSv4 서버를 구성했습니다. 자세한 내용은 NFSv4 전용 서버 구성을 참조하십시오.
- CA(인증 기관) 인증서가 있습니다.
-
ktls-utils
패키지를 설치했습니다.
프로세스
개인 키 및 CSR(인증서 서명 요청)을 만듭니다.
openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1"
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1"
Copy to Clipboard Copied! 중요CN(일반 이름) 및 DNS는 호스트 이름과 일치해야 합니다. IP는 호스트의 IP와 일치해야 합니다.
-
/etc/pki/tls/private/server.example.com.csr
파일을 CA로 전송하고 서버 인증서를 요청합니다. 수신된 CA 인증서와 서버 인증서를 호스트에 저장합니다. CA 인증서를 시스템의 신뢰 저장소로 가져옵니다.
cp ca.crt /etc/pki/ca-trust/source/anchors update-ca-trust
# cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
Copy to Clipboard Copied! 서버 인증서를
/etc/pki/tls/certs/
디렉터리로 이동합니다.mv server.example.com.crt /etc/pki/tls/certs/
# mv server.example.com.crt /etc/pki/tls/certs/
Copy to Clipboard Copied! 개인 키 및 인증서에서 SELinux 컨텍스트가 올바른지 확인합니다.
restorecon -Rv /etc/pki/tls/certs/
# restorecon -Rv /etc/pki/tls/certs/
Copy to Clipboard Copied! /etc/tlshd.conf
파일의[authenticate.server]
섹션에 서버 인증서와 개인 키를 추가합니다.x509.certificate= /etc/pki/tls/certs/server.example.com.crt x509.private_key= /etc/pki/tls/private/server.example.com.key
x509.certificate= /etc/pki/tls/certs/server.example.com.crt x509.private_key= /etc/pki/tls/private/server.example.com.key
Copy to Clipboard Copied! x509.truststore
매개변수를 설정하지 않은 상태로 둡니다.tlshd
서비스를 활성화하고 시작합니다.systemctl enable --now tlshd.service
# systemctl enable --now tlshd.service
Copy to Clipboard Copied!
2.13. TLS 지원을 사용하여 NFS 클라이언트 구성
서버가 TLS 암호화를 사용하여 NFS를 지원하는 경우 적절하게 클라이언트를 구성하고 xprtsec=tls
매개변수를 사용하여 TLS 지원과 함께 마운트할 수 있습니다.
사전 요구 사항
- TLS 암호화를 사용하여 NFS 서버를 구성했습니다. 자세한 내용은 TLS 지원을 사용하여 NFS 서버 구성을 참조하십시오.
-
ktls-utils
패키지를 설치했습니다.
프로세스
CA(인증 기관) 인증서를 시스템의 신뢰 저장소로 가져옵니다.
cp ca.crt /etc/pki/ca-trust/source/anchors update-ca-trust
# cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
Copy to Clipboard Copied! tlshd
서비스를 활성화하고 시작합니다.systemctl enable --now tlshd.service
# systemctl enable --now tlshd.service
Copy to Clipboard Copied! TLS 암호화를 사용하여 NFS 공유를 마운트합니다.
mount -o xprtsec=tls server.example.com:/nfs/projects/ /mnt/
# mount -o xprtsec=tls server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied!
검증
클라이언트가 TLS 지원을 사용하여 NFS 공유를 성공적으로 마운트했는지 확인합니다.
journalctl -u tlshd
# journalctl -u tlshd … Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful
Copy to Clipboard Copied!
2.14. 상호 TLS 지원을 사용하여 NFS 클라이언트 구성
서버가 TLS 암호화를 사용하여 NFS를 지원하는 경우 TLS 프로토콜을 사용하여 NFS 서버와 클라이언트를 구성하여 서로 인증할 수 있습니다.
사전 요구 사항
- TLS 암호화를 사용하여 NFS 서버를 구성했습니다. 자세한 내용은 TLS 지원을 사용하여 NFS 서버 구성을 참조하십시오.
-
ktls-utils
패키지를 설치했습니다.
프로세스
개인 키 및 CSR(인증서 서명 요청)을 만듭니다.
openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
Copy to Clipboard Copied! 중요CN(일반 이름) 및 DNS는 호스트 이름과 일치해야 합니다. IP는 호스트의 IP와 일치해야 합니다.
-
/etc/pki/tls/private/client.example.com.csr
파일을 CA(인증 기관)로 전송하고 클라이언트 인증서를 요청합니다. 수신된 CA 인증서와 클라이언트 인증서를 호스트에 저장합니다. CA 인증서를 시스템의 신뢰 저장소로 가져옵니다.
cp ca.crt /etc/pki/ca-trust/source/anchors update-ca-trust
# cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
Copy to Clipboard Copied! 클라이언트 인증서를
/etc/pki/tls/certs/
디렉터리로 이동합니다.mv client.example.com.crt /etc/pki/tls/certs/
# mv client.example.com.crt /etc/pki/tls/certs/
Copy to Clipboard Copied! 개인 키 및 인증서에서 SELinux 컨텍스트가 올바른지 확인합니다.
restorecon -Rv /etc/pki/tls/certs/
# restorecon -Rv /etc/pki/tls/certs/
Copy to Clipboard Copied! /etc/tlshd.conf
파일의[authenticate.client]
섹션에 클라이언트 인증서 및 개인 키를 추가합니다.x509.certificate= /etc/pki/tls/certs/client.example.com.crt x509.private_key= /etc/pki/tls/private/client.example.com.key
x509.certificate= /etc/pki/tls/certs/client.example.com.crt x509.private_key= /etc/pki/tls/private/client.example.com.key
Copy to Clipboard Copied! x509.truststore
매개변수를 설정하지 않은 상태로 둡니다.tlshd
서비스를 활성화하고 시작합니다.systemctl enable --now tlshd.service
# systemctl enable --now tlshd.service
Copy to Clipboard Copied! TLS 암호화를 사용하여 NFS 공유를 마운트합니다.
mount -o xprtsec=mtls server.example.com:/nfs/projects/ /mnt/
# mount -o xprtsec=mtls server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied!
검증
클라이언트가 TLS 지원을 사용하여 NFS 공유를 성공적으로 마운트했는지 확인합니다.
journalctl -u tlshd
# journalctl -u tlshd … Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful
Copy to Clipboard Copied!