검색

16장. 파일 및 인쇄 서버

download PDF

이 장에서는 Red Hat Enterprise Linux에 제공되는 기본 FTP 서버인SMB( Server Message Block ) 및 일반 인터넷 파일 시스템 (FS ) 프로토콜의 오픈 소스 구현인 Samba 의 설치 및 구성을 안내합니다. 또한 인쇄 설정 도구를 사용하여 프린터를 구성하는 방법을 설명합니다.

16.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 버전이 포함된 기존 설치에서만 이러한 모드를 지원합니다. Microsoft 운영 체제 이후 Windows 7 및 Windows Server 2008 R2는 NT4 도메인을 지원하지 않기 때문에 새로운 Samba NT4 도메인을 설정하지 않는 것이 좋습니다.

설치 모드와는 독립적으로 디렉터리와 프린터를 선택적으로 공유할 수 있습니다. 그러면 Samba가 파일 및 인쇄 서버로 작동할 수 있습니다.

참고

Red Hat은 Samba를 AD 도메인 컨트롤러(DC)로 실행하는 것을 지원하지 않습니다.

16.1.1. Samba 서비스

Samba는 다음 서비스를 제공합니다.

smbd

이 서비스는 SMB 프로토콜을 사용하여 파일 공유 및 인쇄 서비스를 제공합니다. 또한 서비스는 리소스 잠금을 담당하고 사용자 연결을 인증합니다. smb systemd 서비스는 smbd 데몬을 시작하고 중지합니다.

ClusterRoled 서비스를 사용하려면 samba 패키지를 설치합니다.

nmbd

이 서비스는 NetBIOS over IPv4 프로토콜을 사용하여 호스트 이름 및 IP 확인을 제공합니다. 이름 확인 외에도 nmbd 서비스를 사용하면 SMB 네트워크를 검색하여 도메인, 작업 그룹, 호스트, 파일 공유 및 프린터를 찾을 수 있습니다. 이를 위해 서비스는 이 정보를 브로드캐스트 클라이언트에 직접 보고하거나 로컬 또는 마스터 브라우저로 전달합니다. nmb systemd 서비스는 nmbd 데몬을 시작하고 중지합니다.

최신 SMB 네트워크는 DNS를 사용하여 클라이언트 및 IP 주소를 확인합니다.

nmbd 서비스를 사용하려면 samba 패키지를 설치합니다.

winbindd

winbindd 서비스는 로컬 시스템에서 AD 또는 NT4 도메인 사용자 및 그룹을 사용할 수 있는 NSS(Name Service Switch)의 인터페이스를 제공합니다. 예를 들어, 도메인 사용자는 Samba 서버 또는 다른 로컬 서비스에 호스팅된 서비스에 대해 인증할 수 있습니다. winbind systemd 서비스는 winbindd 데몬을 시작하고 중지합니다.

Samba를 도메인 멤버로 설정하는 경우, smb d 서비스보다 먼저 winbind d 를 시작해야 합니다. 그렇지 않으면 로컬 시스템에서 도메인 사용자 및 그룹을 사용할 수 없습니다.

winbindd 서비스를 사용하려면 samba-winbind 패키지를 설치합니다.

중요

Red Hat은 로컬 시스템에 도메인 사용자 및 그룹을 제공하기 위해 winbindd 서비스가 있는 서버로 Samba 실행을 지원합니다. Windows ACL(액세스 제어 목록) 지원 및 NT LAN Manager(NTLM) 대체와 같은 특정 제한으로 인해 Samba에서 SSSD(System Security Services Daemon)를 사용하는 것은 현재 이러한 사용 사례에서 지원되지 않습니다. 자세한 내용은 Red Hat Knowledgebase 문서 IdM 클라이언트에서 실행 중인 Samba 파일 서버에 대한 지원 상태 또는 SSSD가 클라이언트 데몬으로 사용되는 직접 등록된 AD 클라이언트를 참조하십시오.

16.1.2. testparm utility 를 사용하여 gRPC.conf 파일 확인

testparm 유틸리티는 /etc/samba/smb.conf 파일의 Samba 구성이 올바른지 확인합니다. 유틸리티는 잘못된 매개 변수와 값을 감지하지만 ID 매핑과 같은 잘못된 설정도 탐지합니다. testparm 이 문제를 보고하지 않으면 Samba 서비스가 /etc/samba/smb.conf 파일을 로드합니다. testparm은 구성된 서비스가 사용 가능한지 또는 예상대로 작동하는지 확인할 수 없습니다.

중요

Red Hat은 이 파일을 수정한 후 testparm 을 사용하여 /etc/hiera/hiera.conf 파일을 확인하는 것이 좋습니다.

/etc/hiera/hiera.conf 파일을 확인하려면 testparm 유틸리티를 root 사용자로 실행합니다. testparm 에서 구성에 잘못된 매개변수, 값 또는 기타 오류를 보고하면 문제를 해결하고 유틸리티를 다시 실행합니다.

예 16.1. testparm사용

다음 출력에서는 존재하지 않는 매개변수와 잘못된 ID 매핑 구성을 보고합니다.

~]# 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 levell"
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]
	...

16.1.3. Samba 보안 모드 이해

/etc/samba/smb.conf 파일의 [global] 섹션에 있는 security 매개 변수는 Samba가 서비스에 연결하는 사용자를 인증하는 방법을 관리합니다. 에서 Samba를 설치하는 모드에 따라 매개 변수를 다른 값으로 설정해야 합니다.

  • AD 도메인 멤버에서 security = advertising를 설정합니다.

    이 모드에서 Samba는 Kerberos를 사용하여 AD 사용자를 인증합니다.

    도메인 구성원으로 Samba를 설정하는 방법에 대한 자세한 내용은 16.1.5절. “Samba를 도메인 멤버로 설정” 을 참조하십시오.

  • 독립 실행형 서버에서 security = user 를 설정합니다.

    이 모드에서 Samba는 로컬 데이터베이스를 사용하여 연결 사용자를 인증합니다.

    독립 실행형 서버로 Samba를 설정하는 방법에 대한 자세한 내용은 16.1.4절. “Samba를 독립 실행형 서버로 설정” 을 참조하십시오.

  • NT4 PDC 또는 BDC에서 security = user 를 설정합니다.

    이 모드에서 Samba는 로컬 또는 LDAP 데이터베이스로 사용자를 인증합니다.

  • NT4 도메인 멤버에서 security = domain 을 설정합니다.

    이 모드에서 Samba는 사용자를 NT4 PDC 또는 BDC에 연결하는 것을 인증합니다. AD 도메인 구성원에서는 이 모드를 사용할 수 없습니다.

    도메인 구성원으로 Samba를 설정하는 방법에 대한 자세한 내용은 16.1.5절. “Samba를 도메인 멤버로 설정” 을 참조하십시오.

자세한 내용은 tutorial .conf (5) 도움말 페이지의 보안 매개변수에 대한 설명을 참조하십시오.

16.1.4. Samba를 독립 실행형 서버로 설정

특정 상황에서는 관리자가 도메인의 멤버가 아닌 Samba 서버를 설정하려고 합니다. 이 설치 모드에서 Samba는 중앙 DC가 아니라 로컬 데이터베이스로 사용자를 인증합니다. 또한 게스트 액세스를 활성화하여 사용자가 인증 없이 하나 이상의 서비스에 연결할 수 있습니다.

16.1.4.1. 독립 실행형 서버에 대한 서버 구성 설정

Samba를 독립 실행형 서버로 설정하려면 다음을 수행합니다.

Samba를 독립 실행형 서버로 설정

  1. samba 패키지를 설치합니다.

    ~]# yum install samba
  2. /etc/samba/smb.conf 파일을 편집하고 다음 매개변수를 설정합니다.

    [global]
    	workgroup = Example-WG
    	netbios name = Server
    	security = user
    
    	log file = /var/log/samba/%m.log
    	log level = 1

    이 구성은 Example-WG 작업 그룹 내에서 Server 라는 독립 실행형 서버를 정의합니다. 또한 이 구성을 사용하면 최소 수준( 1)에서 로깅할 수있으며로그 파일은 /var/log/samba/ 디렉터리에 저장됩니다. Samba는 log file 매개 변수의 %m 매크로를 클라이언트 연결의 NetBIOS 이름으로 확장합니다. 이를 통해 각 클라이언트에 대한 개별 로그 파일이 활성화됩니다.

    자세한 내용은 xfs .conf(5) 도움말 페이지의 매개 변수 설명을 참조하십시오.

  3. 파일 또는 프린터 공유를 구성합니다. 보기:

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  5. 인증이 필요한 공유를 설정하면 사용자 계정을 생성합니다. 자세한 내용은 16.1.4.2절. “로컬 사용자 계정 생성 및 활성화”의 내용을 참조하십시오.
  6. 필요한 포트를 열고 firewall-cmd 유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.

    ~]# firewall-cmd --permanent --add-port={139/tcp,445/tcp}
    ~]# firewall-cmd --reload
  7. ClusterRole 서비스를 시작합니다.

    ~]# systemctl start smb
  8. 필요에 따라 시스템이 부팅될 때redentials 서비스가 자동으로 시작되도록 활성화합니다.

    ~]# systemctl enable smb

16.1.4.2. 로컬 사용자 계정 생성 및 활성화

사용자가 공유에 연결할 때 인증할 수 있도록 하려면 운영 체제와 Samba 데이터베이스에서 Samba 호스트에 계정을 만들어야 합니다. Samba는 파일 시스템 개체 및 Samba 계정에서 연결 사용자를 인증하기 위해 운영 체제 계정이 ACL(액세스 제어 목록)의 유효성을 검사해야 합니다.

passdb backend = tdbsam 기본 설정을 사용하는 경우 Samba는 사용자 계정을 /var/lib/samba/private/passdb.tdb 데이터베이스에 저장합니다.

예를 들어 예제 Samba 사용자를 만들려면 다음을 수행합니다.

Samba 사용자 생성

  1. 운영 체제 계정을 생성합니다.

    ~]# useradd -M -s /sbin/nologin example

    이전 명령은 홈 디렉터리를 생성하지 않고 예제 계정을 추가합니다. 계정이 Samba로 인증하는 데만 사용되는 경우 계정이 로컬에 로그인하지 못하도록 /sbin/nologin 명령을 쉘로 할당합니다.

  2. 활성화하려면 암호를 운영 체제 계정으로 설정합니다.

    ~]# passwd example
    Enter new UNIX password: password
    Retype new UNIX password: password
    passwd: password updated successfully

    Samba는 운영 체제 계정에 설정된 암호를 사용하여 인증하지 않습니다. 그러나 계정을 활성화하려면 암호를 설정해야 합니다. 계정이 비활성화되어 있으면 Samba는 이 사용자가 연결하면 액세스를 거부합니다.

  3. 사용자를 Samba 데이터베이스에 추가하고 암호를 계정으로 설정합니다.

    ~]# smbpasswd -a example
    New SMB password: password
    Retype new SMB password: password
    Added user example.

    이 계정을 사용하여 Samba 공유에 연결할 때 인증하려면 이 암호를 사용합니다.

  4. Samba 계정을 활성화합니다.

    ~]# smbpasswd -e example
    Enabled user example.

16.1.5. Samba를 도메인 멤버로 설정

AD 또는 NT4 도메인을 실행하는 관리자는 Samba를 사용하여 Red Hat Enterprise Linux 서버를 도메인에 가입하려는 경우가 많습니다. 이를 통해 다음을 수행할 수 있습니다.

  • 다른 도메인 구성원의 도메인 리소스에 액세스
  • sshd와 같은 로컬 서비스에 도메인 사용자를 인증합니다
  • 서버에서 파일 및 인쇄 서버 역할을 할 디렉터리와 프린터 공유

16.1.5.1. 도메인 가입

Red Hat Enterprise Linux 시스템을 도메인에 가입하려면 다음을 수행합니다.

도메인에 Red Hat Enterprise Linux 시스템 가입

  1. 다음 패키지를 설치합니다.

    ~]# yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \
        samba-winbind samba-common-tools
  2. 도메인 멤버에서 디렉터리 또는 프린터를 공유하려면 samba 패키지를 설치합니다.

    ~]# yum install samba
  3. AD에 가입하는 경우 samba-winbind-krb5-locator 패키지를 추가로 설치합니다.

    ~]# yum install samba-winbind-krb5-locator

    이 플러그인을 사용하면 Kerberos가 DNS 서비스 레코드를 사용하는 AD 사이트를 기반으로 KDC(Key Distribution Center)를 찾을 수 있습니다.

  4. 필요한 경우 기존 /etc/hiera/hiera.conf Samba 구성 파일의 이름을 변경합니다.

    ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.old
  5. 도메인에 가입합니다. 예를 들어 ad.example.com이라는 도메인에 참여하려면 다음을 수행합니다.

    ~]# realm join --membership-software=samba --client-software=winbind ad.example.com

    이전 명령을 사용하면 realm 유틸리티가 자동으로 수행됩니다.

    • ad.example .com 도메인의 멤버십에 대한 /etc/samba/smb.conf 파일을 만듭니다.
    • 사용자 및 그룹 조회에 대한 winbind 모듈을 /etc/nsswitch.conf 파일에 추가합니다.
    • /etc/pam.d/ 디렉토리에서 PAM(Pluggable Authentication Module) 구성 파일을 업데이트합니다.
    • winbind 서비스를 시작하고 시스템이 부팅될 때 서비스가 시작됩니다.

      realm 유틸리티에 대한 자세한 내용은 Red Hat Windows Integration Guiderealm(8) 도움말 페이지 및 해당 섹션을 참조하십시오.

  6. 선택적으로 /etc/samba/smb.conf 파일에서 대체 ID 매핑 백엔드 또는 사용자 지정된 ID 매핑 설정을 설정합니다. 자세한 내용은 16.1.5.3절. “ID 매핑 이해”의 내용을 참조하십시오.
  7. 선택적으로 구성을 확인합니다. 16.1.5.2절. “도메인 구성원으로서의 Samba Was Correctly Joined as a Domain Member 확인”을 참조하십시오.
  8. winbindd 가 실행 중인지 확인합니다.

    ~]# systemctl status winbind
    중요

    Samba가 도메인 사용자 및 그룹 정보를 쿼리하도록 활성화하려면 winbindd 서비스가 실행 중이어야 합니다. floatingd를 시작하기 전에 .

  9. 디렉터리 및 프린터를 공유하도록 samba 패키지를 설치한 경우 xfsd 서비스를 시작합니다.

    ~]# systemctl start smb

16.1.5.2. 도메인 구성원으로서의 Samba Was Correctly Joined as a Domain Member 확인

Red Hat Enterprise Linux에 도메인 멤버로 가입한 후 다른 테스트를 실행하여 조인이 성공했는지 확인할 수 있습니다. 보기:

운영 체제가 도메인 사용자 계정 및 그룹을 검색할 수 있는지 확인

getent 유틸리티를 사용하여 운영 체제가 도메인 사용자 및 그룹을 검색할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.

  • AD 도메인의 관리자 계정을 쿼리하려면 다음을 수행합니다.

    ~]# getent passwd AD\\administrator
    AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
  • AD 도메인에서 Domain Users 그룹의 멤버를 쿼리하려면 다음을 수행합니다.

    ~]# getent group "AD\\Domain Users"
    AD\domain users:x:10000:user

명령이 올바르게 작동하는 경우 파일 및 디렉터리에 대한 권한을 설정할 때 도메인 사용자 및 그룹을 사용할 수 있는지 확인합니다. 예를 들어 /srv/samba/example.txt 파일의 소유자를 AD\administrator로 설정하고 그룹을 AD\ Domain Users 로 설정하려면 다음을 수행합니다.

~]# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
AD 도메인 사용자가 Kerberos 티켓을 받을 수 있는지 확인

AD 환경에서 사용자는 DC에서 Kerberos 티켓을 받을 수 있습니다. 예를 들어 관리자가 Kerberos 티켓을 받을 수 있는지 확인하려면 다음을 수행합니다.

참고

kinitklist 유틸리티를 사용하려면 Samba 도메인 멤버에 KnativeServing5- octets 패키지를 설치합니다.

Kerberos 티켓 검색

  1. administrator@AD.EXAMPLE.COM 주요인의 티켓을 받습니다.

    ~]# kinit administrator@AD.EXAMPLE.COM
  2. 캐시된 Kerberos 티켓을 표시합니다.

    ~]# klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@AD.EXAMPLE.COM
    
    Valid starting    Expires       Service principal
    11.09.2017 14:46:21 12.09.2017 00:46:21 krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
    	renew until 18.09.2017 14:46:19
사용 가능한 도메인 나열

winbindd 서비스를 통해 사용 가능한 모든 도메인을 나열하려면 다음을 입력합니다.

~]# wbinfo --all-domains

Samba가 도메인 멤버로 성공적으로 가입된 경우 이 명령은 기본 제공 및 로컬 호스트 이름을 표시하고 도메인 Samba는 신뢰할 수 있는 도메인을 포함하는 멤버입니다.

예 16.2. 사용 가능한 도메인 표시

~]# wbinfo --all-domains
BUILTIN
SAMBA-SERVER
AD

16.1.5.3. ID 매핑 이해

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

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

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

Linux UID 및 GID를 AD에 저장하든, 이를 생성하도록 Samba를 구성하는 경우 각 도메인 구성에는 다른 도메인과 겹치지 않아야 하는 고유한 ID 범위가 필요합니다.

주의

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

예 16.3. 고유 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
중요

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

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

16.1.5.3.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

자세한 내용은 16.1.5.4.1절. “tdb ID 매핑 백엔드 사용”의 내용을 참조하십시오.

autorid

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

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

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

자세한 내용은 자동 백엔드 구성의 내용을 참조하십시오.

16.1.5.4. 다른 ID 매핑 백엔드

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

표 16.1. 자주 사용하는 ID 매핑 백엔드
백엔드사용 사례

tdb

* 기본 도메인만

ad

AD 도메인만 해당

rid

AD 및 NT4 도메인

autorid

AD, NT4 및 * 기본 도메인

다음 섹션에서는 이점, 권장 시나리오, 백엔드를 사용할 위치 및 구성 방법에 대해 설명합니다.

16.1.5.4.1. tdb ID 매핑 백엔드 사용

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

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

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

* 기본 도메인에 대한 자세한 내용은 16.1.5.3.2절. “* 기본 도메인” 을 참조하십시오.

16.1.5.4.2. 광고 ID 매핑 백엔드 사용

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

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

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

표 16.2. 사용자 및 그룹 오브젝트에서 광고 백엔드 읽기 속성
AD 특성 이름오브젝트 유형매핑됨

sAMAccountName

사용자 및 그룹

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

uidNumber

사용자

사용자 ID(UID)

gidNumber

Group

그룹 ID(GID)

loginShell [a]

사용자

사용자 쉘의 경로

unixHomeDirectory

사용자

사용자의 홈 디렉터리 경로

primaryGroupID [b]

사용자

기본 그룹 ID

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

ad 백엔드의 사전 요구 사항

ad ID 매핑 백엔드를 사용하려면 다음을 수행합니다.

  • 사용자와 그룹 모두 AD에 고유한 ID를 설정해야 하며 ID는 /etc/samba/smb.conf 파일에 구성된 범위 내에 있어야 합니다. 범위를 벗어나는 ID가 있는 개체는 Samba 서버에서 사용할 수 없습니다.
  • 사용자와 그룹은 AD에서 모든 필수 속성을 설정해야 합니다. 필수 속성이 없으면 Samba 서버에서 사용자 또는 그룹을 사용할 수 없습니다. 필요한 속성은 구성에 따라 다릅니다. 표 16.2. “사용자 및 그룹 오브젝트에서 광고 백엔드 읽기 속성”을 참조하십시오.

ad 백엔드 구성

ad ID 매핑 백엔드를 사용하도록 Samba AD 멤버를 구성하려면 다음을 수행합니다.

도메인 멤버에서 광고 백엔드 구성

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

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

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

      기본 도메인 구성에 대한 자세한 내용은 16.1.5.3.2절. “* 기본 도메인” 을 참조하십시오.

    2. AD 도메인의 ad ID 매핑 백엔드를 활성화합니다.

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

      idmap config DOMAIN : range = 2000000-2999999
      중요

      범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 또한 범위는 나중에 할당되는 모든 ID를 포함할 만큼 충분히 커야 합니다. 자세한 내용은 16.1.5.3.1절. “계획 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

      변수 대체에 대한 자세한 내용은 gRPC .conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션을 참조하십시오.

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

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

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

    ~]# smbcontrol all reload-config
  4. 설정이 예상대로 작동하는지 확인합니다. “운영 체제가 도메인 사용자 계정 및 그룹을 검색할 수 있는지 확인”을 참조하십시오.

자세한 내용은 tutorial .conf(5) 및 idmap_ad(8) 매뉴얼 페이지를 참조하십시오.

16.1.5.4.3. 라이딩 ID 매핑 사용

Samba는 Windows GovCloud의 RID(RID)를 사용하여 Red Hat Enterprise Linux에 ID를 생성할 수 있습니다.

참고

RID는 SID의 마지막 부분입니다. 예를 들어 사용자의 SID가 S-1-5-21-5421822485-11512151-421485315-30014 이면 30014 가 해당하는 RID입니다. 자세한 내용은 Samba에서 로컬 ID를 계산하는 방법에 대한 자세한 내용은 idmap_rid(8) 매뉴얼 페이지를 참조하십시오.

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

중요

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

혜택

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

단점

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

제거 백엔드 구성

제거 ID 매핑 백엔드를 사용하도록 Samba 도메인 멤버를 구성하려면 다음을 수행합니다.

도메인 멤버에서 제거 백엔드 구성

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

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

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

      기본 도메인 구성에 대한 자세한 내용은 16.1.5.3.2절. “* 기본 도메인” 을 참조하십시오.

    2. 도메인에 대해 제거 ID 매핑 백엔드를 활성화합니다.

      idmap config DOMAIN : backend = rid
    3. 향후 할당될 모든 RID를 포함할 만큼 큰 범위를 설정합니다. 예를 들면 다음과 같습니다.

      idmap config DOMAIN : range = 2000000-2999999

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

      중요

      범위는 이 서버의 다른 도메인 구성과 겹치지 않아야 합니다. 자세한 내용은 16.1.5.3.1절. “계획 ID 범위”의 내용을 참조하십시오.

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

      template shell = /bin/bash
      template homedir = /home/%U

      변수 대체에 대한 자세한 내용은 gRPC .conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션을 참조하십시오.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

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

    ~]# smbcontrol all reload-config
  4. 설정이 예상대로 작동하는지 확인합니다. “운영 체제가 도메인 사용자 계정 및 그룹을 검색할 수 있는지 확인”을 참조하십시오.
16.1.5.4.4. 자동 ID 매핑 백엔드 사용

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

  • * 기본 도메인에만 해당됩니다.
  • * 기본 도메인 및 추가 도메인의 경우 각 추가 도메인에 대한 ID 매핑 구성을 생성할 필요가 없습니다.
  • 특정 도메인에만 적용됩니다.

혜택

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

단점

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

자동 백엔드 구성

* 기본 도메인의 자동 ID 매핑 백엔드를 사용하도록 Samba 도메인 멤버를 구성하려면 다음을 수행합니다.

참고

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

도메인 멤버에서 자동 백엔드 구성

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

    1. * 기본 도메인의 autorid ID 매핑 백엔드를 활성화합니다.

      idmap config * : backend = autorid
    2. 모든 기존 및 향후 객체에 ID를 할당할 수 있을 만큼 큰 범위를 설정합니다. 예를 들면 다음과 같습니다.

      idmap config * : range = 10000-999999

      Samba는 이 도메인에서 계산된 ID가 범위에 속하지 않는 사용자와 그룹을 무시합니다. 백엔드 계산된 ID에 대한 자세한 내용은 idmap_autorid(8) 매뉴얼 페이지의 MAPPING FORMULAS 섹션을 참조하십시오.

      주의

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

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

      idmap config * : rangesize = 200000

      Samba는 idmap config * : range 매개변수에 설정된 범위의 모든 ID를 사용할 때까지 각 도메인의 오브젝트에 대해 이 연속 ID 수를 할당합니다. 자세한 내용은 idmap_autorid(8) 매뉴얼 페이지의 rangesize 매개변수 설명을 참조하십시오.

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

      template shell = /bin/bash
      template homedir = /home/%U

      변수 대체에 대한 자세한 내용은 gRPC .conf(5) 도움말 페이지의 VARIABLE SUBSTITUTIONS 섹션을 참조하십시오.

    5. 필요한 경우 도메인에 대한 ID 매핑 구성을 추가합니다. 개별 도메인에 대한 구성이 없는 경우 Samba는 이전에 구성된 * 기본 도메인에서 자동 만료 백엔드 설정을 사용하여 ID를 계산합니다.

      중요

      개별 도메인에 추가 백엔드를 구성하는 경우 모든 ID 매핑 구성 범위가 겹치지 않아야 합니다. 자세한 내용은 16.1.5.3.1절. “계획 ID 범위”의 내용을 참조하십시오.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

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

    ~]# smbcontrol all reload-config
  4. 설정이 예상대로 작동하는지 확인합니다. “운영 체제가 도메인 사용자 계정 및 그룹을 검색할 수 있는지 확인”을 참조하십시오.

16.1.6. Samba 서버에서 파일 공유 구성

Samba를 파일 서버로 사용하려면 독립 실행형 또는 도메인 멤버 구성의 /etc/hiera/hiera.conf 파일에 공유를 추가합니다.

다음 중 하나를 사용하는 공유를 추가할 수 있습니다.

16.1.6.1. POSIX ACL을 사용하는 공유 설정

Samba는 Linux 서비스로 POSIX ACL과의 공유를 지원합니다. chmod와 같은 유틸리티를 사용하여 Samba 서버에서 권한을 로컬로 관리할 수 있습니다. 공유가 확장된 속성을 지원하는 파일 시스템에 저장된 경우 여러 사용자 및 그룹으로 ACL을 정의할 수 있습니다.

참고

대신 세분화된 Windows ACL을 사용해야 하는 경우 16.1.6.2절. “Windows ACL을 사용하는 공유 설정” 을 참조하십시오.

공유를 추가하려면 Samba를 설정합니다. 보기:

16.1.6.1.1. POSIX ACL을 사용하는 공유 추가

example 라는 공유를 생성하려면 /srv/hiera/example/ 디렉터리 의 콘텐츠를 제공하고 POSIX ACL을 사용합니다.

POSIX ACL을 사용하는 공유 추가

  1. 선택적으로 폴더가 없는 경우 생성합니다. 예를 들면 다음과 같습니다.

    ~]# mkdir -p /srv/samba/example/
  2. enforcing 모드에서 SELinux를 실행하는 경우 디렉터리에 samba_share_t 컨텍스트를 설정합니다.

    ~]# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    ~]# restorecon -Rv /srv/samba/example/
  3. 디렉터리에 파일 시스템 ACL을 설정합니다. 자세한 내용은 16.1.6.1.2절. “ACL 설정”의 내용을 참조하십시오.
  4. 예제 공유를 /etc/hiera/hiera.conf 파일에 추가합니다. 예를 들어, 쓰기 가능 공유를 추가하려면 다음을 수행합니다.

    [example]
    	path = /srv/samba/example/
    	read only = no
    참고

    파일 시스템 ACL에 관계없이 read only = no를 설정하지 않으면 Samba는 읽기 전용 모드로 디렉토리를 공유합니다.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  6. 필요한 포트를 열고 firewall-cmd 유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.

    ~]# firewall-cmd --permanent --add-service=samba
    ~]# firewall-cmd --reload
  7. smb 서비스를 다시 시작하십시오.

    ~]# systemctl restart smb
  8. 필요에 따라 bootable 서비스가 부팅 시 자동으로 시작되도록 활성화합니다.

    ~]# systemctl enable smb
16.1.6.1.2. ACL 설정

POSIX ACL 지원을 사용하는 공유:

표준 Linux ACL 설정

Linux의 표준 ACL은 한 명의 소유자, 하나의 그룹 및 기타 모든 정의되지 않은 사용자에 대한 권한 설정을 지원합니다. chown,chgrpchmod 유틸리티를 사용하여 ACL을 업데이트할 수 있습니다. 정확한 제어가 필요한 경우 더 복잡한 POSIX ACL을 사용하는 경우 확장 ACL 설정 을 참조하십시오.

예를 들어 /srv/hiera/example/ 디렉터리의 소유자를 root 사용자로 설정하려면 Domain Users 그룹에 읽기 및 쓰기 권한을 부여하고 다른 모든 사용자에 대한 액세스 권한을 거부합니다.

~]# chown root:"Domain Users" /srv/samba/example/
~]# chmod 2770 /srv/samba/example/
참고

디렉토리에서 set-group-ID(SGID) 비트를 활성화하면 새 디렉토리 항목을 생성한 사용자의 기본 그룹으로 설정하는 일반적인 동작이 아니라 모든 새 파일 및 하위 디렉터리의 기본 그룹을 디렉토리 그룹의 기본 그룹으로 자동으로 설정합니다.

권한에 대한 자세한 내용은 chown(1) 및 tekton (1) 도움말페이지를 참조하십시오.

확장 ACL 설정

공유 디렉터리가 확장 ACL을 지원하는 경우 파일 시스템을 사용하여 복잡한 권한을 설정할 수 있습니다. 확장 ACL에는 여러 사용자와 그룹에 대한 권한이 포함될 수 있습니다.

확장 POSIX ACL을 사용하면 여러 사용자 및 그룹으로 복잡한 ACL을 구성할 수 있습니다. 그러나 다음 권한만 설정할 수 있습니다.

  • 액세스 권한 없음
  • 읽기 액세스
  • 쓰기 액세스
  • 전체 제어

Create folder / append data와 같은 세분화된 Windows 권한이 필요한 경우 Windows ACL을 사용하도록 공유를 구성합니다. 16.1.6.2절. “Windows ACL을 사용하는 공유 설정”을 참조하십시오.

공유에서 확장 POSIX ACL을 사용하려면 다음을 수행합니다.

share에서 확장 POSIX ACL 활성화

  1. /etc/samba/smb.conf 파일의 공유 섹션에서 다음 매개 변수를 활성화하여 확장 ACL의 ACL 상속을 활성화합니다.

    inherit acls = yes

    자세한 내용은 xfs .conf(5) 도움말 페이지의 매개 변수 설명을 참조하십시오.

  2. smb 서비스를 다시 시작하십시오.

    ~]# systemctl restart smb
  3. 필요에 따라 bootable 서비스가 부팅 시 자동으로 시작되도록 활성화합니다.

    ~]# systemctl enable smb
  4. 디렉터리에 ACL을 설정합니다. 확장된 ACL 사용에 대한 자세한 내용은 5장. 액세스 제어 목록 을 참조하십시오.

    예 16.4. 확장 ACL 설정

    다음 절차에서는 Domain Admins 그룹에 대한 읽기, 쓰기, 실행 권한을 설정하고, Domain Users 그룹에 대한 읽기, 실행 권한을 설정하고, /srv/samba/example/ 디렉터리의 다른 모든 사용자에 대한 액세스를 거부합니다.

    확장 ACL 설정

    1. 기본 사용자 계정 그룹에 자동 부여 권한을 비활성화합니다.

      ~]# setfacl -m group::--- /srv/samba/example/
      ~]# setfacl -m default:group::--- /srv/samba/example/

      디렉터리의 기본 그룹은 동적 CREAT OR GROUP 주체에 추가로 매핑됩니다. Samba 공유에 확장 POSIX ACL을 사용하면 이 주체가 자동으로 추가되며 제거할 수 없습니다.

    2. 디렉터리에 대한 권한을 설정합니다.

      1. Domain Admins 그룹에 읽기, 쓰기 및 실행 권한을 부여합니다.

        ~]# setfacl -m group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
      2. Domain Users 그룹에 읽기 및 실행 권한을 부여합니다.

        ~]# setfacl -m group:"DOMAIN\Domain Users":r-x /srv/samba/example/
      3. other ACL 항목과 일치하지 않는 사용자에 대한 액세스를 거부하도록 other ACL 항목에 대한 권한을 설정합니다.

        ~]# setfacl -R -m other::--- /srv/samba/example/

        이러한 설정은 이 디렉터리에만 적용됩니다. Windows에서는 이러한 ACL이 이 폴더에만 매핑됩니다.

    3. 이전 단계에서 설정한 권한을 이 디렉터리에 생성된 새 파일 시스템 개체에서 상속하려면 다음을 수행합니다.

      ~]# setfacl -m default:group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
      ~]# setfacl -m default:group:"DOMAIN\Domain Users":r-x /srv/samba/example/
      ~]# setfacl -m default:other::--- /srv/samba/example/

      이러한 설정에서 보안 주체의 이 폴더만 이 폴더, 하위 폴더 및 파일로 설정됩니다.

    Samba는 이전에 설정된 권한을 다음 Windows ACL에 매핑합니다.

    Principal액세스적용 대상

    DOMAIN\Domain Administrator

    전체 제어

    이 폴더, 하위 폴더 및 파일

    DOMAIN\Domain 사용자

    읽기 및 실행

    이 폴더, 하위 폴더 및 파일

    Everyone [a]

    없음

    이 폴더, 하위 폴더 및 파일

    소유자 (Unix Userpass:attributes[]소유자) [b]

    전체 제어

    이 폴더만

    primary_group (Unix Userpass:attributes[]primary_group) [c]

    없음

    이 폴더만

    CREATOR OWNER [d] [e]

    전체 제어

    하위 폴더 및 파일만

    작성자 그룹 [f]

    없음

    하위 폴더 및 파일만

    [a] Samba는 이 주체에 대한 권한을 other ACL 항목에서 매핑합니다.
    [b] Samba는 디렉터리의 소유자를 이 항목에 매핑합니다.
    [c] Samba는 디렉터리의 기본 그룹을 이 항목에 매핑합니다.
    [d] 새 파일 시스템 개체에서 작성자는 이 주체의 권한을 자동으로 상속합니다.
    [e] POSIX ACL을 사용하는 공유에서 지원되지 않는 ACL에서 이러한 주체를 구성하거나 제거합니다.
    [f] 새 파일 시스템 개체에서 작성자의 기본 그룹은 이 주체의 권한을 자동으로 상속합니다.
16.1.6.1.3. 공유에서 권한 설정

선택적으로 Samba 공유에 대한 액세스를 제한하거나 부여하려면 /etc/samba/smb.conf 파일의 공유 섹션에 특정 매개 변수를 설정할 수 있습니다.

참고

공유 기반 권한은 사용자, 그룹 또는 호스트가 공유에 액세스할 수 있는 경우 관리합니다. 이러한 설정은 파일 시스템 ACL에 영향을 미치지 않습니다.

공유 기반 설정을 사용하여 공유에 대한 액세스를 제한합니다. 예를 들어 특정 호스트의 액세스를 거부하려면 다음을 수행합니다.

사용자 및 그룹 기반 공유 액세스 구성

사용자 및 그룹 기반 액세스 제어를 사용하면 특정 사용자 및 그룹의 공유에 대한 액세스 권한을 부여하거나 거부할 수 있습니다. 예를 들어, 사용자 계정에 대한 액세스가 거부되는 동안 Domain Users 그룹의 모든 구성원이 공유에 액세스할 수 있도록 하려면 공유의 구성에 다음 매개변수를 추가합니다.

valid users = +DOMAIN\"Domain Users"
invalid users = DOMAIN\user

잘못된 users 매개변수는 유효한 users 매개변수보다 우선 순위가 높습니다. 예를 들어 사용자 계정이 Domain Users 그룹의 멤버인 경우 이전 예제를 사용할 때 이 계정에 대한 액세스가 거부됩니다.

자세한 내용은 xfs .conf(5) 도움말 페이지의 매개 변수 설명을 참조하십시오.

호스트 기반 공유 액세스 구성

호스트 기반 액세스 제어를 사용하면 클라이언트의 호스트 이름, IP 주소 또는 IP 범위를 기반으로 공유에 대한 액세스 권한을 부여하거나 거부할 수 있습니다.

예를 들어 127.0.0.1 IP 주소, 192.0.2.0/24 IP 범위 및 client1.example.com 호스트에서 공유에 액세스할 수 있도록 하려면 client2.example.com 호스트에 대한 액세스를 추가로 거부합니다.

호스트 기반 공유 액세스 구성

  1. /etc/hiera/hiera.conf의 공유 구성에 다음 매개 변수를 추가합니다.

    hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.com
    hosts deny = client2.example.com
  2. Samba 구성 다시 로드

    ~]# smbcontrol all reload-config

hosts deny 매개 변수는 호스트 허용 보다 우선 순위가 높습니다. 예를 들어 client1.example.comhosts allow 매개 변수에 나열된 IP 주소로 확인되면 이 호스트에 대한 액세스가 거부됩니다.

자세한 내용은 xfs .conf(5) 도움말 페이지의 매개 변수 설명을 참조하십시오.

16.1.6.2. Windows ACL을 사용하는 공유 설정

Samba는 공유 및 파일 시스템 개체에서 Windows ACL 설정을 지원합니다. 이를 통해 다음을 수행할 수 있습니다.

  • 세분화된 Windows ACL 사용
  • Windows를 사용하여 공유 권한 및 파일 시스템 ACL 관리

또는 POSIX ACL을 사용하도록 공유를 구성할 수 있습니다. 자세한 내용은 16.1.6.1절. “POSIX ACL을 사용하는 공유 설정”의 내용을 참조하십시오.

16.1.6.2.1. SeDiskOperatorPrivilege Privilege 권한 부여

SeDiskOperatorPrivilege 권한이 부여된 사용자 및 그룹만 Windows ACL을 사용하는 공유에 대한 권한을 구성할 수 있습니다. 예를 들어 DOMAIN\Domain Administrator 그룹에 권한을 부여하려면 다음을 수행합니다.

~]# net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
참고

도메인 환경에서 도메인 그룹에 SeDiskOperatorPrivilege 을 부여합니다. 이를 통해 사용자의 그룹 멤버십을 업데이트하여 권한을 중앙에서 관리할 수 있습니다.

SeDiskOperatorPrivilege 이 부여된 모든 사용자 및 그룹을 나열하려면 다음을 수행하십시오.

~]# net rpc rights list privileges SeDiskOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter administrator's password:
SeDiskOperatorPrivilege:
 BUILTIN\Administrators
 DOMAIN\Domain Admins
16.1.6.2.2. Windows ACL 지원 활성화

Windows ACL을 지원하는 공유를 구성하려면 Samba에서 이 기능을 활성화해야 합니다. 모든 공유에 대해 전역적으로 활성화하려면 /etc/samba/smb.conf 파일의 [global] 섹션에 다음 설정을 추가합니다.

vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes

대신 공유의 섹션에 동일한 매개 변수를 추가하여 개별 공유에 대해 Windows ACL 지원을 활성화할 수 있습니다.

16.1.6.2.3. Windows ACL을 사용하는 공유 추가

example 라는 공유를 생성하려면 /srv/hiera/example/ 디렉터리 의 콘텐츠를 공유하고 Windows ACL을 사용합니다.

Windows ACL을 사용하는 공유 추가

  1. 선택적으로 폴더가 없는 경우 생성합니다. 예를 들면 다음과 같습니다.

    ~]# mkdir -p /srv/samba/example/
  2. enforcing 모드에서 SELinux를 실행하는 경우 디렉터리에 samba_share_t 컨텍스트를 설정합니다.

    ~]# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    ~]# restorecon -Rv /srv/samba/example/
  3. 예제 공유를 /etc/hiera/hiera.conf 파일에 추가합니다. 예를 들어, 쓰기 가능 공유를 추가하려면 다음을 수행합니다.

    [example]
    	path = /srv/samba/example/
    	read only = no
    참고

    파일 시스템 ACL에 관계없이 read only = no를 설정하지 않으면 Samba는 읽기 전용 모드로 디렉토리를 공유합니다.

  4. [global] 섹션에서 모든 공유에 대해 Windows ACL 지원을 활성화하지 않은 경우 [example] 섹션에 다음 매개변수를 추가하여 이 공유에 대해 이 기능을 활성화합니다.

    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes
  5. /etc/samba/smb.conf 파일을 확인합니다.

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  6. 필요한 포트를 열고 firewall-cmd 유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.

    ~]# firewall-cmd --permanent --add-service=samba
    ~]# firewall-cmd --reload
  7. smb 서비스를 다시 시작하십시오.

    ~]# systemctl restart smb
  8. 필요에 따라 bootable 서비스가 부팅 시 자동으로 시작되도록 활성화합니다.

    ~]# systemctl enable smb
16.1.6.2.4. Windows ACL을 사용하는 공유의 공유 권한 및 파일 시스템 ACL 관리

Windows ACL을 사용하는 Samba 공유에서 공유 및 파일 시스템 ACL을 관리하려면 컴퓨터 관리 와 같은 Windows 애플리케이션을 사용합니다. 자세한 내용은 Windows 설명서를 참조하십시오.

또는 smbcacls 유틸리티를 사용하여 ACL을 관리합니다. 자세한 내용은 16.1.6.3절. “tekton cacls를 사용하여 SMB share에서 ACL 관리”의 내용을 참조하십시오.

참고

Windows에서 파일 시스템 권한을 수정하려면 SeDiskOperatorPrivilege 권한이 부여된 계정을 사용해야 합니다. 16.1.6.2.1절. “SeDiskOperatorPrivilege Privilege 권한 부여”을 참조하십시오.

16.1.6.3. tekton cacls를 사용하여 SMB share에서 ACL 관리

smbcacls 유틸리티는 SMB 공유에 저장된 파일 및 디렉터리의 ACL을 나열, 설정 및 삭제할 수 있습니다. smbcacls를 사용하여 파일 시스템 ACL을 관리할 수 있습니다.

  • 고급 Windows ACL 또는 POSIX ACL을 사용하는 로컬 또는 원격 Samba 서버에서.
  • Red Hat Enterprise Linux에서 Windows에서 호스팅되는 공유의 ACL을 원격으로 관리합니다.
16.1.6.3.1. 액세스 제어 항목 이해

파일 시스템 오브젝트의 각 ACL 항목에는 다음 형식의 ACE(액세스 제어 항목)가 포함되어 있습니다.

security_principal:access_right/inheritance_information/permissions

예 16.5. 액세스 제어 항목

AD\Domain Users 그룹에 Windows의 이 폴더, 하위 폴더 및 파일에 적용되는 수정 권한이 있는 경우 ACL에는 다음 ACE가 포함됩니다.

AD\Domain Users:ALLOWED/OI|CI/CHANGE

다음은 개별 ACE에 대해 설명합니다.

보안 주체
보안 주체는 ACL의 권한이 적용되는 사용자, 그룹 또는 SID입니다.
액세스 권한
개체에 대한 액세스 권한이 부여되거나 거부되었는지 여부를 정의합니다. 값은 ALLOWED 또는 DENIED 일 수 있습니다.
상속 정보

다음 값이 있습니다.

표 16.3. 상속 설정
설명매핑 대상

OI

오브젝트 Inherit

이 폴더 및 파일

CI

컨테이너 Inherit

이 폴더 및 하위 폴더

IO

상속 만

ACE는 현재 파일 또는 디렉터리에는 적용되지 않습니다.

ID

상속됨

ACE는 상위 디렉터리에서 상속되었습니다.

또한 값은 다음과 같이 결합할 수 있습니다.

표 16.4. 상속 설정 Combinations
값 결합설정의 Windows Applies에 매핑

OI/CI

이 폴더, 하위 폴더 및 파일

OI/CI/IO

하위 폴더 및 파일만

CI/IO

하위 폴더만

OI/IO

파일만

권한

이 값은 하나 이상의 Windows 권한 또는 smbcacls 별칭을 나타내는 16진수 값일 수 있습니다.

  • 하나 이상의 Windows 권한을 나타내는 16진수 값입니다.

    다음 표에는 고급 Windows 권한 및 해당 값이 16진수 형식으로 표시됩니다.

    표 16.5. Hex 형식의 Windows 권한 및 Their Correspondingredentialscacls 값
    Windows 권한Hex Values

    전체 제어

    0x001F01FF

    폴더를 트래버스/실행 파일

    0x00100020

    디렉토리 표시 / 데이터 읽기

    0x00100001

    속성 읽기

    0x00100080

    확장 속성 읽기

    0x00100008

    파일 만들기 / 데이터 쓰기

    0x00100002

    폴더 생성 / 데이터 추가

    0x00100004

    쓰기 속성

    0x00100100

    확장 속성 쓰기

    0x00100010

    하위 폴더 및 파일 삭제

    0x00100040

    delete

    0x00110000

    읽기 권한

    0x00120000

    권한 변경

    0x00140000

    소유권 얻기

    0x00180000

    여러 권한을 비트 단위로 OR 작업을 사용하여 단일 16진수 값으로 결합할 수 있습니다. 자세한 내용은 16.1.6.3.3절. “ACE 마스크 계산”의 내용을 참조하십시오.

  • smbcacls 별칭. 다음 테이블에는 사용 가능한 별칭이 표시됩니다.

    표 16.6. 기존 ClusterRolecacls Aliases 및 Their Corresponding Windows Permission
    tektoncacls AliasWindows 권한으로 매핑

    R

    읽기

    READ

    읽기 및 실행

    W

    특별

    • 파일 만들기 / 데이터 쓰기
    • 폴더 생성 / 데이터 추가
    • 쓰기 속성
    • 확장 속성 쓰기
    • 읽기 권한

    D

    delete

    P

    권한 변경

    O

    소유권 얻기

    X

    트래버스/실행

    변경

    수정

    FULL

    전체 제어

    참고

    권한을 설정할 때 단일 문자 별칭을 결합할 수 있습니다. 예를 들어 RD 를 설정하여 Windows 권한 Read and Delete 를 적용할 수 있습니다. 그러나 여러 개의 비 단일 문자 별칭을 결합하거나 별칭과 16진수 값을 결합할 수 없습니다.

16.1.6.3.2. tekton cacls를사용하여 ACL 표시

--add 와 같은 작업 매개변수 없이 tektoncacls 를 실행하면 유틸리티에 파일 시스템 오브젝트의 ACL이 표시됩니다.

예를 들어----- server/example 공유의 루트 디렉토리의 ACL을 나열하려면 다음을 수행합니다.

~]# smbcacls //server/example / -U "DOMAINpass:quotes[administrator]"
Enter DOMAINpass:quotes[administrator]'s password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021

명령의 출력이 표시됩니다.

  • REVISION: 보안 설명자의 내부 Windows NT ACL 개정
  • CONTROL: 보안 설명자 제어
  • OWNER: 보안 설명자 소유자의 이름 또는 SID
  • GROUP: 보안 설명자 그룹의 이름 또는 SID
  • ACL 항목. 자세한 내용은 16.1.6.3.1절. “액세스 제어 항목 이해”의 내용을 참조하십시오.
16.1.6.3.3. ACE 마스크 계산

ACE를 추가하거나 업데이트할 때 대부분의 경우 표 16.6. “기존 ClusterRolecacls Aliases 및 Their Corresponding Windows Permission” 에 나열된 smbcacls 별칭을 사용합니다.

그러나 표 16.5. “Hex 형식의 Windows 권한 및 Their Correspondingredentialscacls 값” 에 나열된 고급 Windows 권한을 설정하려면 비트 단위 OR 작업을 사용하여 올바른 값을 계산해야 합니다. 다음 쉘 명령을 사용하여 값을 계산할 수 있습니다.

~]# echo $(printf '0x%X' $
							
							
							
							
							
							hex_value_1 | hex_value_2 | ...)

예 16.6. ACE 마스크 계산

다음 권한을 설정하려고 합니다.

  • 트래버스 폴더 / 실행 파일 (0x00100020)
  • 폴더 / 읽기 데이터 나열 (0x00100001)
  • 읽기 속성 (0x00100080)

이전 권한의 16진수 값을 계산하려면 다음을 입력합니다.

~]# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1

ACE를 설정하거나 업데이트할 때 반환된 값을 사용합니다.

16.1.6.3.4. ClusterRole cacls를 사용하여 ACL 추가, 업데이트 및 제거

smbcacls 유틸리티에 전달하는 매개변수에 따라 파일 또는 디렉터리에서 ACL을 추가, 업데이트 및 제거할 수 있습니다.

ACL 추가

이 폴더, 하위 폴더 및 파일에 대한 CHANGE 권한을 부여하는 0.0.0.0/0 서버 /example 공유의 루트에 ACL을 추가하려면 AD\Domain Users 그룹에 다음을 수행합니다.

~]# smbcacls //server/example / -U "DOMAIN\administrator \
    --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE

ACL 업데이트

ACL 업데이트는 새 ACL을 추가하는 것과 유사합니다. 기존 보안 주체와 함께 --modify 매개 변수를 사용하여 ACL을 재정의하여 ACL을 업데이트합니다. smbcacls 가 ACL 목록에서 보안 주체를 찾는 경우 유틸리티는 권한을 업데이트합니다. 그렇지 않으면 명령이 오류와 함께 실패합니다.

ACL for SID principal_name not found

예를 들어 AD\Domain Users 그룹의 권한을 업데이트하고 이 폴더, 하위 폴더 및 파일의 READ 로 설정하려면 다음을 수행합니다.

~]# smbcacls //server/example / -U "DOMAIN\administrator \
    --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

ACL 삭제

ACL을 삭제하려면 정확한 ACL을 사용하여 --delete 를 tekton cacls 유틸리티에 전달합니다. 예를 들면 다음과 같습니다.

~]# smbcacls //server/example / -U "DOMAIN\administrator \
    --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

16.1.6.4. 사용자가 Samba 서버에서 디렉터리 공유 활성화

Samba 서버에서는 사용자가 root 권한 없이 디렉터리를 공유할 수 있도록 구성할 수 있습니다.

16.1.6.4.1. 사용자 공유 기능 활성화

사용자가 디렉토리를 공유할 수 있으려면 관리자가 Samba에서 사용자 공유를 활성화해야 합니다. 예를 들어 로컬 예제 그룹의 멤버만 사용자 공유를 생성할 수 있도록 하려면 다음을 수행합니다.

사용자 공유 활성화

  1. 로컬 example 그룹이 없는 경우 해당 그룹을 생성합니다.

    ~]# groupadd example
  2. Samba에서 사용자 공유 정의를 저장하고 권한을 올바르게 설정하도록 디렉터리를 준비합니다. 예를 들면 다음과 같습니다.

    1. 디렉터리를 만듭니다.

      ~]# mkdir -p /var/lib/samba/usershares/
    2. example 그룹에 대한 쓰기 권한을 설정합니다.

      ~]# chgrp example /var/lib/samba/usershares/
      ~]# chmod 1770 /var/lib/samba/usershares/

      사용자가 이 디렉터리의 다른 사용자가 저장한 파일의 이름을 변경하거나 삭제하지 않도록 Sticky bit를 설정합니다.

  3. /etc/samba/smb.conf 파일을 편집하고 [global] 섹션에 다음을 추가합니다.

    1. 사용자 공유 정의를 저장하도록 구성한 디렉터리의 경로를 설정합니다. 예를 들면 다음과 같습니다.

      usershare path = /var/lib/samba/usershares/
    2. 이 서버에서 Samba를 만들 수 있는 사용자 공유 수를 설정합니다. 예를 들면 다음과 같습니다.

      usershare max shares = 100

      usershare max shares 매개변수에 기본값 0을 사용하는 경우 사용자 공유가 비활성화됩니다.

    3. 선택적으로 절대 디렉토리 경로 목록을 설정합니다. 예를 들어 Samba가 /data 및 / srv 디렉토리의 하위 디렉터리만 공유할 수 있도록 허용하려면 다음을 설정합니다.

      usershare prefix allow list = /data /srv

      설정할 수 있는 추가 사용자 공유 관련 매개 변수 목록은 ClusterRole .conf(5) 도움말 페이지의 USERSHARES 섹션을 참조하십시오.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  5. Samba 구성을 다시 로드합니다.

    ~]# smbcontrol all reload-config

이제 사용자가 사용자 공유를 생성할 수 있습니다. 자세한 내용은 16.1.6.4.2절. “사용자 공유 추가”의 내용을 참조하십시오.

16.1.6.4.2. 사용자 공유 추가

16.1.6.4.1절. “사용자 공유 기능 활성화” 에 따라 Samba를 구성한 후 net usershare add 명령을 실행하여 root 권한 없이 Samba 서버에서 디렉터리를 공유할 수 있습니다.

net usershare add 명령의 synopsis, net usershare addshare_namepathcommentACLsguest_ok=y|n

중요

사용자 공유를 생성할 때 ACL을 설정하는 경우 ACL보다 먼저 주석 매개변수를 지정해야 합니다. 빈 주석을 설정하려면 큰따옴표로 빈 문자열을 사용합니다.

관리자가 /etc/samba/smb.conf 파일의 [global] 섹션에서 관리자 집합 usershare에서 guest = yes를 허용하는 경우 사용자는 사용자 공유에서만 게스트 액세스를 활성화할 수 있습니다.

예 16.7. 사용자 공유 추가

사용자가 Samba 서버에서 /srv/samba/ 디렉터리를 공유하려고 합니다. 공유 이름은 example 이고, 주석을 설정하지 않으며, 게스트 사용자가 액세스할 수 있어야 합니다. 또한 공유 권한은 AD\Domain Users 그룹에 대한 전체 액세스 권한과 기타 사용자의 읽기 권한으로 설정해야 합니다. 이 공유를 추가하려면 사용자로 실행합니다.

~]$ net usershare add example /srv/samba/ "" \
    "AD\Domain Users":F,Everyone:R guest_ok=yes
16.1.6.4.3. 사용자 공유 설정 업데이트

사용자 공유 설정을 업데이트하려면 net usershare add 명령을 동일한 공유 이름 및 새 설정으로 사용하여 공유를 재정의합니다. 16.1.6.4.2절. “사용자 공유 추가”을 참조하십시오.

16.1.6.4.4. 기존 사용자 공유에 대한 정보 표시

사용자는 Samba 서버에 net usershare info 명령을 입력하여 사용자 공유 및 해당 설정을 표시할 수 있습니다.

사용자가 만든 모든 사용자 공유를 표시하려면 다음을 수행하십시오.

~]$ net usershare info -l
[share_1]
path=/srv/samba/
comment=
usershare_acl=Everyone:R,host_name\user:F,
guest_ok=y
...

명령을 실행하는 사용자가 생성한 공유만 나열하려면 -l 매개 변수를 생략합니다.

특정 공유에 대한 정보만 표시하려면 공유 이름 또는 와일드카드를 명령에 전달합니다. 예를 들어 share_ 로 시작하는 공유의 정보를 표시하려면 다음을 수행합니다.

~]$ net usershare info -l share*_
16.1.6.4.5. 사용자 공유 나열

Samba 서버에서의 설정 없이 사용 가능한 사용자 공유만 나열하려면 net usershare list 명령을 사용합니다.

사용자가 생성한 공유를 나열하려면 다음을 수행합니다.

~]$ net usershare list -l
share_1
share_2
...

명령을 실행하는 사용자가 생성한 공유만 나열하려면 -l 매개 변수를 생략합니다.

특정 공유만 나열하려면 공유 이름 또는 와일드카드를 명령에 전달합니다. 예를 들어, share_ 로 시작하는 이름의 공유만 나열하려면 다음을 실행합니다.

~]$ net usershare list -l share_*
16.1.6.4.6. 사용자 공유 삭제

사용자 공유를 삭제하려면 공유를 생성한 사용자 또는 root 사용자로 입력합니다.

~]$ net usershare delete share_name

16.1.6.5. 공유에 대한 게스트 액세스 활성화

특정 상황에서는 사용자가 인증 없이 연결할 수 있는 디렉터리를 공유하려고 합니다. 이를 구성하려면 공유에서 게스트 액세스를 활성화합니다.

주의

인증이 필요하지 않은 공유는 보안 위험이 될 수 있습니다.

공유에서 게스트 액세스가 활성화된 경우 Samba는 게스트 연결을 guest account 매개변수에 설정된 운영 체제 계정에 매핑합니다. 게스트 사용자는 다음 조건 중 하나 이상이 충족되는 경우 이러한 파일에 액세스할 수 있습니다.

  • 계정은 파일 시스템 ACL에 나열됩니다.
  • 다른 사용자의 POSIX 권한에서 허용

예 16.8. 게스트 공유 권한

게스트 계정을 nobody (기본값)에 매핑하도록 Samba를 구성한 경우 다음 예의 ACL을 사용합니다.

  • 게스트 사용자가 file1.txt를 읽을 수 있도록 허용
  • 게스트 사용자가 file2.txt 를 읽고 수정할 수 있도록 허용합니다.
  • 게스트 사용자가 file3.txt를 읽거나 수정하지 못하게 합니다.
-rw-r--r--. 1 root    root   1024 1. Sep 10:00 file1.txt
-rw-r-----. 1 nobody   root   1024 1. Sep 10:00 file2.txt
-rw-r-----. 1 root    root   1024 1. Sep 10:00 file3.txt

예를 들어 기존 [example] 공유에 대해 게스트 액세스를 활성화하려면 다음을 수행합니다.

게스트 공유 설정

  1. /etc/samba/smb.conf 파일을 편집합니다.

    1. 이 서버에서 설정한 첫 번째 게스트 공유인 경우:

      1. [global] 섹션에서 guest = Bad User에 map을 설정합니다.

        [global]
        	...
        	map to guest = Bad User

        이 설정에서 Samba는 사용자 이름이 존재하지 않는 한 잘못된 암호를 사용하는 로그인 시도를 거부합니다. 지정된 사용자 이름이 없고 공유에서 게스트 액세스가 활성화된 경우 Samba는 연결을 게스트 로그인으로 처리합니다.

      2. 기본적으로 Samba는 게스트 계정을 Red Hat Enterprise Linux의 nobody 계정에 매핑합니다. 선택적으로 다른 계정을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

        [global]
        	...
        	guest account = user_name

        이 매개 변수에 설정된 계정은 Samba 서버에 로컬로 존재해야 합니다. 보안상의 이유로 Red Hat은 유효한 쉘이 할당되지 않은 계정 사용을 권장합니다.

    2. [example] 섹션에 guest ok = yes 설정을 추가합니다.

      [example]
      	...
      	guest ok = yes
  2. /etc/samba/smb.conf 파일을 확인합니다.

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

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

    ~]# smbcontrol all reload-config

16.1.7. Samba 인쇄 서버 설정

Samba를 출력 서버로 설정하면 네트워크의 클라이언트가 Samba를 사용하여 출력할 수 있습니다. 또한 Windows 클라이언트가 구성된 경우 Samba 서버에서 드라이버를 다운로드할 수 있습니다.

프린터를 공유하려면 먼저 Samba를 설정합니다.

16.1.7.1. Samba 스풀sd 서비스

Samba 스풀sdsmbd 서비스에 통합된 서비스입니다. Samba 구성에서 spoolsd 를 활성화하여 작업 또는 프린터 수가 많은 인쇄 서버의 성능을 크게 높입니다.

spools d 없이 Samba는 smbd 프로세스를 분기하고 각 출력 작업의 printcap 캐시를 초기화합니다. 프린터가 많은 경우 캐시를 초기화하는 동안 smbd 서비스가 여러 초 동안 응답하지 않을 수 있습니다. spools d 서비스를 사용하면 지연 없이 출력 작업을 처리하는 미리 분기된 smbd 프로세스를 시작할 수 있습니다. 기본 spoolsd smbd 프로세스는 낮은 메모리를 사용하고 하위 프로세스를 포크하고 종료합니다.

스풀sd 서비스를 활성화하려면 다음을 수행합니다.

스풀sd 서비스 활성화

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

    1. 다음 매개변수를 추가합니다.

      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork
    2. 선택적으로 다음 매개변수를 설정할 수 있습니다.

      매개변수기본값설명

      spoolssd:prefork_min_children

      5

      최소 하위 프로세스 수

      spoolssd:prefork_max_children

      25

      최대 하위 프로세스 수

      spoolssd:prefork_spawn_rate

      5

      새 연결이 설정된 경우 Samba는 이 매개 변수에 설정된 새 하위 프로세스 수를 spools sd:prefork_max_children 에 설정된 값까지 분기합니다.

      spoolssd:prefork_max_allowed_clients

      100

      클라이언트 수, 자식 프로세스는

      spoolssd:prefork_child_min_life

      60

      하위 프로세스의 최소 수명(초)입니다. 60초는 최소값입니다.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  3. smb 서비스를 다시 시작하십시오.

    ~]# systemctl restart smb

서비스를 다시 시작한 후에는 Samba에서 smbd 하위 프로세스를 자동으로 시작합니다.

~]# ps axf
...
30903 smbd
30912 \_ smbd
30913   \_ smbd
30914   \_ smbd
30915   \_ smbd
...

16.1.7.2. Samba에서 출력 서버 지원 활성화

인쇄 서버 지원을 활성화하려면 다음을 수행합니다.

Samba에서 출력 서버 지원 활성화

  1. Samba 서버에서 CUPS를 설정하고 프린터를 CUPS 백엔드에 추가합니다. 자세한 내용은 16.3절. “설정 인쇄”의 내용을 참조하십시오.

    참고

    Samba는 CUPS가 Samba 출력 서버에 로컬로 설치된 경우에만 CUPS로 출력 작업을 전달할 수 있습니다.

  2. /etc/samba/smb.conf 파일을 편집합니다.

    1. spools d 서비스를 활성화하려면 [global] 섹션에 다음 매개변수를 추가합니다.

      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork

      자세한 내용은 16.1.7.1절. “Samba 스풀sd 서비스”의 내용을 참조하십시오.

    2. 출력 백엔드를 구성하려면 [printers] 섹션을 추가합니다.

      [printers]
      	comment = All Printers
      	path = /var/tmp/
      	printable = yes
      	create mask = 0600
      중요

      프린터 공유 이름은 하드 코딩되어 있으며 변경할 수 없습니다.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  4. 필요한 포트를 열고 firewall-cmd 유틸리티를 사용하여 방화벽 구성을 다시 로드합니다.

    ~]# firewall-cmd --permanent --add-service=samba
    ~]# firewall-cmd --reload
  5. smb 서비스를 다시 시작하십시오.

    ~]# systemctl restart smb

서비스를 다시 시작한 후 Samba는 CUPS 백엔드에 구성된 모든 프린터를 자동으로 공유합니다. 특정 프린터만 수동으로 공유하려면 16.1.7.3절. “특정 프린터 수동 공유”을 참조하십시오.

16.1.7.3. 특정 프린터 수동 공유

Samba를 출력 서버로 구성한 경우 기본적으로 Samba는 CUPS 백엔드에 구성된 모든 프린터를 공유합니다. 특정 프린터만 공유하려면 다음을 수행합니다.

특정 프린터 수동 공유

  1. /etc/samba/smb.conf 파일을 편집합니다.

    1. [global] 섹션에서 설정을 설정하여 자동 프린터 공유를 비활성화합니다.

      load printers = no
    2. 공유할 각 프린터에 대해 섹션을 추가합니다. 예를 들어 Samba 에서 CUPS 백엔드의 example 라는 프린터를 Example- printer로 공유하려면 다음 섹션을 추가합니다.

      [Example-Printer]
      	path = /var/tmp/
      	printable = yes
      	printer name = example

      각 프린터에 대해 개별 스풀 디렉토리가 필요하지 않습니다. [printers] 섹션에 설정한 것과 동일한 스풀 디렉토리를 프린터 매개변수에 설정할 수 있습니다.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

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

    ~]# smbcontrol all reload-config

16.1.7.4. Windows 클라이언트에 대한 자동 프린터 드라이버 다운로드 설정

Windows 클라이언트용 Samba 출력 서버를 실행하는 경우 드라이버 및 사전 설정 프린터를 업로드할 수 있습니다. 사용자가 프린터에 연결하면 Windows가 자동으로 드라이버를 다운로드하여 클라이언트에 로컬로 설치합니다. 사용자는 설치에 대한 로컬 관리자 권한이 필요하지 않습니다. 또한 Windows는 트레이 수와 같이 사전 구성된 드라이버 설정을 적용합니다.

참고

자동 프린터 드라이버 다운로드를 설정하기 전에 Samba를 인쇄 서버로 구성하고 프린터를 공유해야 합니다. 자세한 내용은 16.1.7절. “Samba 인쇄 서버 설정”의 내용을 참조하십시오.

16.1.7.4.1. 프린터 드라이버에 대한 기본 정보

이 섹션에서는 프린터 드라이버에 대한 일반적인 정보를 제공합니다.

지원되는 드라이버 모델 버전

Samba는 Windows 2000 이상 및 Windows Server 2000 이상에서 지원되는 프린터 드라이버 모델 버전 3만 지원합니다. Samba는 Windows 8 및 Windows Server 2012에 도입된 드라이버 모델 버전 4를 지원하지 않습니다. 그러나 이러한 버전과 이후 버전의 Windows 버전도 버전 3 드라이버를 지원합니다.

패키지 인식 드라이버

Samba는 패키지 인식 드라이버를 지원하지 않습니다.

업로드를 위한 printer 드라이버 준비

드라이버를 Samba 인쇄 서버에 업로드하려면 다음을 수행하십시오.

  • 압축된 형식으로 제공되는 경우 드라이버의 압축을 풉니다.
  • 일부 드라이버에서는 Windows 호스트에서 로컬로 드라이버를 설치하는 설정 애플리케이션을 시작해야 합니다. 특정 상황에서 설치 프로그램은 설치를 실행하는 동안 개별 파일을 운영 체제의 임시 폴더로 추출합니다. 드라이버 파일을 업로드에 사용하려면 다음을 수행합니다.

    1. 설치 프로그램을 시작합니다.
    2. 임시 폴더에서 새 위치로 파일을 복사합니다.
    3. 설치를 취소합니다.

프린터 제조업체에 인쇄 서버 업로드를 지원하는 드라이버를 요청합니다.

프린터에 대한 32비트 및 64비트 드라이버를 클라이언트에 제공

32비트 및 64비트 Windows 클라이언트 모두에 대해 프린터용 드라이버를 제공하려면 두 아키텍처에서 정확히 동일한 이름으로 드라이버를 업로드해야 합니다. 예를 들어 Example PostScript라는 32비트 드라이버와 Example PostScript (v1.0) 라는 64비트 드라이버를 업로드하는 경우 이름이 일치하지 않습니다. 따라서 프린터에 드라이버 중 하나만 할당할 수 있으며 두 아키텍처에서는 드라이버를 모두 사용할 수 없습니다.

16.1.7.4.2. 사용자가 드라이버 업로드 및 사전 설정 활성화

프린터 드라이버를 업로드하고 사전 구성할 수 있으려면 사용자 또는 그룹에 SeprintOperatorPrivilege 권한이 부여되어야 합니다. 사용자를 printadmin 그룹에 추가해야 합니다. Red Hat Enterprise Linux는 samba 패키지를 설치할 때 이 그룹을 자동으로 생성합니다. printadmin 그룹에는 1000보다 낮은 사용 가능한 가장 낮은 동적 시스템 GID가 할당됩니다.

SeprintOperatorPrivilege 권한을 printadmin 그룹에 부여하려면 다음을 수행합니다.

~]# net rpc rights grant "printadmin" SePrintOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
참고

도메인 환경에서 도메인 그룹에 Se printOperatorPrivilege 을 부여합니다. 이를 통해 사용자의 그룹 멤버십을 업데이트하여 권한을 중앙에서 관리할 수 있습니다.

SePrintOperatorPrivilege 이 부여된 모든 사용자 및 그룹을 나열하려면 다음을 수행하십시오.

~]# net rpc rights list privileges SePrintOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter administrator's password:
SePrintOperatorPrivilege:
 BUILTIN\Administrators
 DOMAIN\printadmin
16.1.7.4.3. print$ share 설정

Windows 운영 체제는 인쇄 서버에서 print$ 공유에서 프린터 드라이버를 다운로드합니다. 이 공유 이름은 Windows에서 하드 코딩되며 변경할 수 없습니다.

/var/lib/hiera/drivers/ 디렉터리를 print$ 로서 공유하고 로컬 printadmin 그룹의 멤버를 활성화하여 프린터 드라이버를 업로드할 수 있습니다.

print$ share 설정

  1. [print$] 섹션을 /etc/samba/smb.conf 파일에 추가합니다.

    [print$]
    	path = /var/lib/samba/drivers/
    	read only = no
    	write list = @printadmin
    	force group = @printadmin
    	create mask = 0664
    	directory mask = 2775

    다음 설정을 사용합니다.

    • printadmin 그룹의 구성원만 프린터 드라이버를 공유에 업로드할 수 있습니다.
    • 새로 생성된 파일과 디렉토리의 그룹이 printadmin으로 설정됩니다.
    • 새 파일의 권한은 664로 설정됩니다.
    • 새 디렉터리의 권한은 2775로 설정됩니다.
  2. 프린터에 대한 64비트 드라이버만 업로드하려면 /etc/hiera/hiera.conf 파일의 [global] 섹션에 이 설정을 포함합니다.

    spoolss: architecture = Windows x64

    이 설정이 없으면 Windows에는 최소 32비트 버전을 업로드한 드라이버만 표시됩니다.

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

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  4. Samba 구성 다시 로드

    ~]# smbcontrol all reload-config
  5. printadmin 그룹이 없는 경우 해당 그룹을 생성합니다.

    ~]# groupadd printadmin
  6. printadmin 그룹에 Se print OperatorPrivilege 권한을 부여합니다.

    ~]# net rpc rights grant "printadmin" SePrintOperatorPrivilege \
        -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.

    자세한 내용은 16.1.7.4.2절. “사용자가 드라이버 업로드 및 사전 설정 활성화”의 내용을 참조하십시오.

  7. enforcing 모드에서 SELinux를 실행하는 경우 디렉터리에 samba_share_t 컨텍스트를 설정합니다.

    ~]# semanage fcontext -a -t samba_share_t "/var/lib/samba/drivers(/.*)?"
    ~]# restorecon -Rv /var/lib/samba/drivers/
  8. /var/lib/samba/drivers/ 디렉터리에 대한 권한을 설정합니다.

    • POSIX ACL을 사용하는 경우 다음을 설정합니다.

      ~]# chgrp -R "printadmin" /var/lib/samba/drivers/
      ~]# chmod -R 2775 /var/lib/samba/drivers/
    • Windows ACL을 사용하는 경우 다음을 설정합니다.

      Principal액세스적용 대상

      CREATOR OWNER

      전체 제어

      하위 폴더 및 파일만

      Authenticated Users

      읽기 및 실행, 폴더 내용 나열, 읽기

      이 폴더, 하위 폴더 및 파일

      printadmin

      전체 제어

      이 폴더, 하위 폴더 및 파일

      Windows에서 ACL을 설정하는 방법에 대한 자세한 내용은 Windows 설명서를 참조하십시오.

16.1.7.4.4. 클라이언트가 Samba Print Server를 신뢰할 수 있도록Enable the connection to enable clients to trust the Samba Print Server

보안상의 이유로 최신 Windows 운영 체제는 클라이언트가 신뢰할 수 없는 서버에서 패키지 인식 프린터 드라이버를 다운로드하지 못하도록 합니다. 인쇄 서버가 AD의 멤버인 경우 도메인에 그룹 정책 오브젝트(GPO)를 만들어 Samba 서버를 신뢰할 수 있습니다.

grant를 만들려면 사용 중인 Windows 컴퓨터에는 Windows Remote Server Administration Tools (RSAT)가 설치되어 있어야 합니다. 자세한 내용은 Windows 설명서를 참조하십시오.

클라이언트가 Samba Print Server를 신뢰할 수 있도록Enable the connection to enable clients to trust the Samba Print Server

  1. AD 도메인 Administrator 사용자와 같은 그룹 정책을 편집할 수 있는 계정을 사용하여 Windows 컴퓨터에 로그인합니다.
  2. 그룹 정책 관리 콘솔을 엽니다.
  3. AD 도메인을 마우스 오른쪽 버튼으로 클릭하고 Create a rsh in this domain을 선택하고 여기에 Link를선택합니다.

    Samba에서 새 GPO 생성
  4. legacy 프린터 드라이버 정책과 같은 grant name을 입력하고 OK 를 클릭합니다. 새 GPO가 도메인 항목에 표시됩니다.
  5. 새로 생성된 Group Policy Management Editor 를 마우스 오른쪽 버튼으로 클릭하고 Edit 를 선택하여 그룹 정책 관리 편집기를 엽니다.
  6. Computer Configuration Policies Templates Printers(관리 템플릿 프린터) 로 이동합니다.

    Samba, 프린터 GPO 그룹 선택
  7. 창 오른쪽에서 Point and Print Restriction 을 두 번 클릭하여 정책을 편집합니다.

    1. 정책을 활성화하고 다음 옵션을 설정합니다.

      1. Users(사용자)는 이러한 서버를 가리키고 출력할 수 있으며 Samba 인쇄 서버의 FQDN(정규화된 도메인 이름)을 이 옵션 옆에 있는 필드에 입력합니다.
      2. Security Prompts (보안 프롬프트) 아래에 있는 두 확인란 모두에서 Do not show warning or elevation prompt(경고 또는 승격 프롬프트 표시 안 함)를 선택합니다.

        Samba GPO 포인트 및 인쇄
    2. OK를 클릭합니다.
  8. Package Point and Print - Approved servers 를 두 번 클릭하여 정책을 편집합니다.

    1. 정책을 활성화하고 Show (표시) 버튼을 클릭합니다.
    2. Samba 출력 서버의 FQDN을 입력합니다.

      Samba GPO 승인 서버
    3. OK 를 클릭하여 Show Contents 및 policy properties 창을 모두 닫습니다.
  9. 그룹 정책 관리 편집기 를 닫습니다.
  10. 그룹 정책 관리 콘솔을 닫습니다.

Windows 도메인 멤버가 그룹 정책을 적용한 후에는 사용자가 프린터에 연결하면 Samba 서버에서 프린터 드라이버를 자동으로 다운로드합니다.

그룹 정책 사용에 대한 자세한 내용은 Windows 설명서를 참조하십시오.

16.1.7.4.5. 드라이버 및 사전 설정 프린터 업로드

Windows 클라이언트에서 인쇄 관리 애플리케이션을 사용하여 Samba 인쇄 서버에 호스팅되는 드라이버 및 사전 구성 프린터를 업로드합니다. 자세한 내용은 Windows 설명서를 참조하십시오.

16.1.8. Samba 서버의 성능 튜닝

이 섹션에서는 특정 상황에서 Samba의 성능을 향상시킬 수 있는 설정과 성능에 부정적인 영향을 미칠 수 있는 설정에 대해 설명합니다.

16.1.8.1. SMB 프로토콜 버전 설정

각 새 SMB 버전은 기능을 추가하고 프로토콜의 성능을 향상시킵니다. 최신 Windows 및 Windows Server 운영 체제는 항상 최신 프로토콜 버전을 지원합니다. Samba도 최신 프로토콜 버전을 사용하는 경우 Samba에 연결하는 Windows 클라이언트는 성능 개선을 활용합니다. Samba에서 서버 max 프로토콜 의 기본값은 지원되는 최신 SMB 프로토콜 버전으로 설정됩니다.

안정적인 최신 SMB 프로토콜 버전을 항상 활성화하려면 server max protocol 매개 변수를 설정하지 마십시오. 매개 변수를 수동으로 설정한 경우 최신 프로토콜 버전을 활성화하려면 새 버전의 SMB 프로토콜로 설정을 수정해야 합니다.

설정을 해제하려면 /etc/hiera/hiera.conf 파일의 [global] 섹션에서 server max protocol 매개 변수를 제거합니다.

16.1.8.2. 많은 수의 파일을 포함하는 디렉터리와 공유 튜닝

100.000개 이상의 파일이 있는 디렉터리가 포함된 공유의 성능을 개선하려면 다음을 수행합니다.

많은 수의 파일을 포함하는 디렉터리와 공유 튜닝

  1. 공유의 모든 파일의 이름을 소문자로 바꿉니다.

    참고

    이 절차의 설정을 사용하면 소문자 이외의 이름이 있는 파일이 더 이상 표시되지 않습니다.

  2. 공유의 섹션에서 다음 매개변수를 설정합니다.

    case sensitive = true
    default case = lower
    preserve case = no
    short preserve case = no

    매개변수에 대한 자세한 내용은 xfs .conf(5) 도움말 페이지의 설명을 참조하십시오.

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

    ~]# smbcontrol all reload-config

이러한 설정을 적용한 후에는 이 공유에 새로 생성된 모든 파일의 이름이 소문자를 사용합니다. 이러한 설정으로 인해 Samba에서 더 이상 대문자 및 소문자로 디렉터리를 스캔할 필요가 없으므로 성능이 향상됩니다.

16.1.8.3. 심각한 성능 영향을 미칠 수 있는 설정

기본적으로 Red Hat Enterprise Linux의 커널은 고성능 네트워크 성능을 위해 조정됩니다. 예를 들어 커널은 버퍼 크기에 자동 튜닝 메커니즘을 사용합니다. /etc/samba/smb.conf 파일에서 socket options 매개 변수를 설정하면 이러한 커널 설정이 재정의됩니다. 결과적으로 이 매개 변수를 설정하면 대부분의 경우 Samba 네트워크 성능이 저하됩니다.

커널에서 최적화된 설정을 사용하려면 /etc/samba/smb.conf[global] 섹션에서 소켓 옵션 매개 변수를 제거합니다.

16.1.9. 자주 사용하는 Samba 명령줄 유틸리티

이 섹션에서는 Samba 서버를 사용할 때 자주 사용되는 명령에 대해 설명합니다.

16.1.9.1. 네트워크 유틸리티 사용

net 유틸리티를 사용하면 Samba 서버에서 여러 관리 작업을 수행할 수 있습니다. 이 섹션에서는 net 유틸리티의 가장 자주 사용되는 하위 명령을 설명합니다.

자세한 내용은 net(8) 매뉴얼 페이지를 참조하십시오.

16.1.9.1.1. net advertising join 및 net1.8.0 조인 사용하는 경우

net 유틸리티의 조인 하위 명령을 사용하여 Samba를 AD 또는 NT4 도메인에 연결할 수 있습니다. 도메인에 가입하려면 /etc/samba/smb.conf 파일을 수동으로 생성하고 PAM과 같은 추가 구성을 선택적으로 업데이트해야 합니다.

중요

Red Hat은 realm 유틸리티를 사용하여 도메인에 가입하는 것이 좋습니다. realm 유틸리티는 관련된 모든 구성 파일을 자동으로 업데이트합니다. 자세한 내용은 16.1.5.1절. “도메인 가입”의 내용을 참조하십시오.

net 명령을 사용하여 도메인에 참여하려면 다음을 수행합니다.

net 명령을 사용하여 도메인 가입

  1. 다음 설정으로 /etc/samba/smb.conf 파일을 수동으로 생성합니다.

    • AD 도메인 멤버의 경우:

      [global]
      workgroup = domain_name
      security = ads
      passdb backend = tdbsam
      realm = AD_REALM
    • NT4 도메인 멤버의 경우:

      [global]
      workgroup = domain_name
      security = user
      passdb backend = tdbsam
  2. * 기본 도메인의 ID 매핑 구성과 /etc/hiera/hiera.conf의 [global] 섹션에 참여하려는 도메인의 ID 매핑 구성을 추가합니다. 자세한 내용은 16.1.5.3절. “ID 매핑 이해”의 내용을 참조하십시오.
  3. /etc/samba/smb.conf 파일을 확인합니다.

    ~]# testparm

    자세한 내용은 16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”의 내용을 참조하십시오.

  4. 도메인에 도메인 관리자로 가입합니다.

    • AD 도메인에 가입하려면 다음을 수행합니다.

      ~]# net ads join -U "DOMAINpass:quotes[administrator]"
    • NT4 도메인에 가입하려면 다음을 수행합니다.

      ~]# net rpc join -U "DOMAINpass:quotes[administrator]"
  5. winbind 소스를 /etc/nsswitch.conf 파일의 passwd그룹 database 항목에 추가합니다.

    passwd:   files winbind
    group:   files winbind
  6. winbind 서비스를 활성화하고 시작합니다.

    ~]# systemctl enable winbind
    ~]# systemctl start winbind
  7. 선택적으로 authconf 유틸리티를 사용하여 PAM을 구성합니다.

    자세한 내용은 Red Hat System-Level Authentication Guide 의 Pluggable Authentication Modules (PAM) 섹션을 참조하십시오.

  8. AD 환경에 선택적으로 Kerberos 클라이언트를 구성합니다.

    자세한 내용은 Red Hat System-Level Authentication GuideKerberos Client 구성 섹션을 참조하십시오.

16.1.9.1.2. net1.8.0 rights 명령 사용

Windows에서는 공유 또는 업로드 프린터 드라이버에 ACL을 설정하는 등의 특수 작업을 수행할 수 있도록 계정과 그룹에 권한을 할당할 수 있습니다. Samba 서버에서는 net rpc rights 명령을 사용하여 권한을 관리할 수 있습니다.

권한 나열

사용 가능한 모든 권한 및 소유자를 나열하려면 net rpc rights list 명령을 사용합니다. 예를 들면 다음과 같습니다.

net rpc rights list -U "DOMAINpass:attributes[{blank}]administrator"
Enter DOMAINpass:attributes[{blank}]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 printOperatorPrivilege 권한을 부여합니다.

~]# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.

권한 취소

계정 또는 그룹에서 권한을 취소하려면 net1.8.0 권한을 사용합니다.

예를 들어 DOMAIN\printadmin 그룹에서 Seprint OperatorPrivilege 권한을 취소하려면 다음을 수행합니다.

~]# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
    -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
16.1.9.1.3. net RuntimeClass 공유 명령 사용

net rpc share 명령은 로컬 또는 원격 Samba 또는 Windows 서버에서 공유를 나열, 추가 및 제거하는 기능을 제공합니다.

공유 목록

SMB 서버의 공유를 나열하려면 netRegistryLogin share list 명령을 사용합니다. 선택적으로 -S server_name 매개 변수를 명령에 전달하여 원격 서버의 공유를 나열합니다. 예를 들면 다음과 같습니다.

~]# net rpc share list -U "DOMAIN\administrator" -S example
Enter DOMAIN\administrator's password:
IPC$
share_1
share_2
...
참고

/etc/samba/smb.conf 파일의 섹션에 browseable = no set이 있는 Samba 서버에서 호스팅되는 공유는 출력에 표시되지 않습니다.

공유 추가

net rpc share add 명령을 사용하면 SMB 서버에 공유를 추가할 수 있습니다.

예를 들어 C:\example\ 디렉터리를 공유하는 원격 Windows 서버에 예제 공유를 추가하려면 다음을 수행합니다.

~]# net rpc share add example="C:\example" -U "DOMAIN\administrator" -S server
참고

Windows 디렉토리 이름을 지정할 때 경로에서 후행 역슬래시를 생략해야 합니다.

명령을 사용하여 Samba 서버에 공유를 추가하려면 다음을 수행합니다.

  • -U 매개 변수에 지정된 사용자에게는 SeDiskOperatorPrivilege 권한이 부여되어 있어야 합니다.
  • /etc/samba/smb.conf 파일에 공유 섹션을 추가하고 Samba를 다시 로드하는 스크립트를 작성해야 합니다. 스크립트는 /etc/samba/smb.conf[global] 섹션에서 add share 명령 매개 변수에 설정해야 합니다. 자세한 내용은 xfs .conf(5) 도움말 페이지의 add share 명령 설명을 참조하십시오.

공유 제거

net rpc share delete 명령을 사용하면 SMB 서버에서 공유를 제거할 수 있습니다.

예를 들어 원격 Windows 서버에서 example 라는 공유를 제거하려면 다음을 수행합니다.

~]# net rpc share delete example -U "DOMAIN\administrator" -S server

명령을 사용하여 Samba 서버에서 공유를 제거하려면 다음을 수행합니다.

  • -U 매개 변수에 지정된 사용자에게는 SeDiskOperatorPrivilege 권한이 부여되어 있어야 합니다.
  • /etc/samba/smb.conf 파일에서 공유 섹션을 제거하고 Samba를 다시 로드하는 스크립트를 작성해야 합니다. 스크립트는 /etc/samba/smb.conf[global] 섹션에서 delete share 명령 매개 변수에 설정해야 합니다. 자세한 내용은 xfs .conf(5) 도움말 페이지의 delete share 명령 설명을 참조하십시오.
16.1.9.1.4. net user 명령 사용

net user 명령을 사용하면 AD DC 또는 NT4 PDC에서 다음 작업을 수행할 수 있습니다.

  • 모든 사용자 계정 나열
  • 사용자 추가
  • 사용자 제거
참고

AD 도메인용 광고 나 NT4 도메인용 rpc 와 같은 연결 방법을 지정하는 것은 도메인 사용자 계정을 나열하는 경우에만 필요합니다. 다른 사용자 관련 하위 명령은 연결 방법을 자동으로 감지할 수 있습니다.

-U user_name 매개 변수를 명령에 전달하여 요청된 작업을 수행할 수 있는 사용자를 지정합니다.

도메인 사용자 계정 나열

AD 도메인의 모든 사용자를 나열하려면 다음을 수행합니다.

~]# net ads user -U "DOMAIN\administrator"

NT4 도메인의 모든 사용자를 나열하려면 다음을 수행하십시오.

~]# net rpc user -U "DOMAIN\administrator"

도메인에 사용자 계정 추가

Samba 도메인 멤버에서 net user add 명령을 사용하여 사용자 계정을 도메인에 추가할 수 있습니다.

예를 들어 user 계정을 도메인에 추가합니다.

도메인에 사용자 계정 추가

  1. 계정을 추가합니다.

    ~]# net user add user password -U "DOMAIN\administrator"
    User user added
  2. 선택적으로, 원격 프로시저 호출(RPC) 쉘을 사용하여 AD DC 또는 NT4 PDC에서 계정을 활성화합니다. 예를 들면 다음과 같습니다.

    ~]# 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

도메인에서 사용자 계정 삭제

Samba 도메인 멤버에서는 net user delete 명령을 사용하여 도메인에서 사용자 계정을 제거할 수 있습니다.

예를 들어 도메인에서 user 계정을 제거하려면 다음을 수행합니다.

~]# net user delete user -U "DOMAIN\administrator"
User user deleted
16.1.9.1.5. net usershare 명령 사용

16.1.6.4절. “사용자가 Samba 서버에서 디렉터리 공유 활성화”을 참조하십시오.

16.1.9.2. RuntimeClass 클라이언트 유틸리티 사용

rpcclient 유틸리티를 사용하면 로컬 또는 원격 SMB 서버에서 클라이언트측 MS-RPC 기능을 수동으로 실행할 수 있습니다. 그러나 대부분의 기능은 Samba에서 제공하는 별도의 유틸리티로 통합됩니다. rpcclient 는 MS-PRC 함수를 테스트하는 경우에만 사용합니다.

예를 들어 유틸리티를 사용하여 다음을 수행할 수 있습니다.

  • 프린터 스풀 하위 시스템(SPOOLSS) 관리.

    예 16.9. 프린터에 드라이버 할당

    ~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" \
        -c 'setdriver "printer_name" "driver_name"'
    Enter DOMAINpass:quotes[administrator]s password:
    Successfully set printer_name to driver driver_name.
  • SMB 서버에 대한 정보를 검색합니다.

    예 16.10. 모든 파일 공유 및 공유 프린터 나열

    ~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'netshareenum'
    Enter DOMAINpass:quotes[administrator]s password:
    netname: Example_Share
    	remark:
    	path:  C:\srv\samba\example_share\
    	password:
    netname: Example_Printer
    	remark:
    	path:  C:\var\spool\samba\
    	password:
  • SCC(Security Account Manager Remote) 프로토콜을 사용하여 작업을 수행합니다.

    예 16.11. SMB 서버에 사용자 나열

    ~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'enumdomusers'
    Enter DOMAINpass:quotes[administrator]s password:
    user:[user1] rid:[0x3e8]
    user:[user2] rid:[0x3e9]

    독립 실행형 서버 또는 도메인 구성원에 대해 명령을 실행하면 로컬 데이터베이스의 사용자가 나열됩니다. AD DC 또는 NT4 PDC에 대해 명령을 실행하면 도메인 사용자가 나열됩니다.

지원되는 하위 명령의 전체 목록은 RuntimeClass client(1) 도움말 페이지의 COMMANDS 섹션을 참조하십시오.

16.1.9.3. samba-regedit 애플리케이션 사용

프린터 구성과 같은 특정 설정은 Samba 서버의 레지스트리에 저장됩니다. ncurses 기반 samba-regedit 애플리케이션을 사용하여 Samba 서버의 레지스트리를 편집할 수 있습니다.

Samba regedit

애플리케이션을 시작하려면 다음을 입력합니다.

~]# samba-regedit

다음 키를 사용합니다.

  • 커서가 이동한 후 커서가 삭제됩니다. 레지스트리 트리와 값을 탐색합니다.
  • Enter: 키를 열거나 값을 편집합니다.
  • : Key (키)와 Value(값 ) 창 사이를 전환합니다.
  • Ctrl+C: 애플리케이션을 닫습니다.

16.1.9.4. xfs cacls 유틸리티 사용

16.1.6.3절. “tekton cacls를 사용하여 SMB share에서 ACL 관리”을 참조하십시오.

16.1.9.5. KubeMacPool 클라이언트 유틸리티 사용

ClusterRole client 유틸리티를 사용하면 명령줄 FTP 클라이언트와 유사하게 SMB 서버의 파일 공유에 액세스할 수 있습니다. 예를 들어 이를 사용하여 공유에 파일을 업로드하고 다운로드할 수 있습니다.

예를 들어 DOMAIN\user 계정을 사용하여 서버에서 호스팅되는 예제 공유에 인증하려면 다음을 수행합니다.

~]# smbclient -U "DOMAIN\user" //server/example
Enter domain\user's password:
Domain=[SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \>

smbclient 가 공유에 성공적으로 연결되면 유틸리티는 대화형 모드로 전환되고 다음 프롬프트가 표시됩니다.

smb: \>

대화형 쉘에서 사용 가능한 모든 명령을 표시하려면 다음을 입력합니다.

smb: \> help

특정 명령에 대한 도움말을 표시하려면 다음을 입력합니다.

smb: \> help command_name

대화형 쉘에서 사용할 수 있는 명령에 대한 자세한 내용 및 설명은 tutorial client(1) 매뉴얼페이지를 참조하십시오.

16.1.9.5.1. tekton client 를 대화형 모드로 사용

smbclient-c 매개 변수 없이 사용하는 경우 유틸리티는 대화형 모드로 들어갑니다.

다음 절차에서는 SMB 공유에 연결하고 하위 디렉터리에서 파일을 다운로드하는 방법을 보여줍니다.

xfs client를 사용하여 SMB 공유에서 파일 다운로드

  1. 공유에 연결합니다.

    ~]# smbclient -U "DOMAINpass:quotes[user_name]" //server_name/share_name
  2. /example/ 디렉터리로 변경합니다.

    smb: \> cd /example/
  3. 디렉터리에 파일을 나열합니다.

    smb: \example\> ls
     .          D     0 Mon Sep 1 10:00:00 2017
     ..          D     0 Mon Sep 1 10:00:00 2017
     example.txt     N  1048576 Mon Sep 1 10:00:00 2017
    
         9950208 blocks of size 1024. 8247144 blocks available
  4. example.txt 파일을 다운로드합니다.

    smb: \example\> get example.txt
    getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)
  5. 공유에서 연결을 끊습니다.

    smb: \example\> exit
16.1.9.5.2. 스크립트 모드에서 ClusterRoleclient 사용

-c command 매개변수를 ClusterRole client 에 전달하면 원격 SMB 공유에서 명령을 자동으로 실행할 수 있습니다. 이를 통해 스크립트에서 smbclient를 사용할 수 있습니다.

다음 명령은 SMB 공유에 연결하고 하위 디렉터리에서 파일을 다운로드하는 방법을 보여줍니다.

~]# smbclient -U DOMAINpass:quotes[user_name] //server_name/share_name \
    -c "cd /example/ ; get example.txt ; exit"

16.1.9.6. redhat control utility 사용

smbcontrol 유틸리티를 사용하면 smbd,nmbd,winbindd 또는 모든 서비스에 명령 메시지를 보낼 수 있습니다. 이러한 제어 메시지는 서비스(예:)에서 구성을 다시 로드하도록 지시합니다.

예 16.12. ClusterRoled ,nmbd , winbindd 서비스의 구성 다시 로드

예를 들어 ClusterRoled의 구성을 다시 로드하려면nmbd,winbindd, reload-config message-type을 모든 대상으로 보냅니다.

~]# smbcontrol all reload-config

자세한 내용과 사용 가능한 명령 메시지 유형 목록은 bookinfo control (1)도움말 페이지를 참조하십시오.

16.1.9.7. redhatpasswd utility 사용

smbpasswd 유틸리티는 로컬 Samba 데이터베이스에서 사용자 계정과 암호를 관리합니다.

명령을 사용자로 실행하는 경우 사용자 Samba 암호가 변경됩니다. 예를 들면 다음과 같습니다.

[user@server ~]$ smbpasswd
New SMB password:
Retype new SMB password:

root 사용자로 smbpasswd를 실행하는 경우 유틸리티를 사용하여 다음을 수행할 수 있습니다.

  • 새 사용자를 생성합니다.

    [root@server ~]# smbpasswd -a user_name
    New SMB password:
    Retype new SMB password:
    Added user user_name.
    참고

    사용자를 Samba 데이터베이스에 추가하려면 로컬 운영 체제에서 계정을 만들어야 합니다. 보기 4.3.1절. “새 사용자 추가”

  • Samba 사용자를 활성화합니다.

    [root@server ~]# smbpasswd -e user_name
    Enabled user user_name.
  • Samba 사용자를 비활성화합니다.

    [root@server ~]# smbpasswd -x user_name
    Disabled user user_name.
  • 사용자를 삭제합니다.

    [root@server ~]# smbpasswd -x user_name
    Deleted user user_name.

자세한 내용은 gRPCpasswd(8) 매뉴얼페이지를 참조하십시오.

16.1.9.8. ClusterRole status utility 사용

smbstatus 유틸리티는 다음에 대해 보고합니다.

  • smbd 데몬의 PID당 Samba 서버에 대한 연결. 이 보고서에는 사용자 이름, 기본 그룹, SMB 프로토콜 버전, 암호화 및 서명 정보가 포함됩니다.
  • Samba 공유별 연결. 이 보고서에는 smbd 데몬의 PID, 연결 시스템의 IP, 연결이 설정된 타임스탬프, 암호화 및 서명 정보가 포함됩니다.
  • 잠긴 파일 목록. 보고서 항목에는 opportunistic 잠금 (oplock) 유형과 같은 추가 세부 정보가 포함됩니다.

예 16.13. ClusterRole status utility 의 출력

~]# smbstatus

Samba version 4.6.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 Mo Sep 1 10:00:00 2017 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 Mon Sep 1 10:00:00 2017

자세한 내용은 KubeMacPool status (1)도움말 페이지를 참조하십시오.

16.1.9.9. xfs tar 유틸리티 사용

smbtar 유틸리티는 SMB 공유 또는 하위 디렉터리의 콘텐츠를 백업하고 tar 아카이브에 콘텐츠를 저장합니다. 또는 테이프 장치에 콘텐츠를 작성할 수 있습니다.

예를 들어, //server/example/ 공유에 있는 demo 디렉터리의 콘텐츠를 백업하고 해당 콘텐츠를 /root/example.tar 아카이브에 저장하려면 다음을 실행합니다.

~]# smbtar -s server -x example -u user_name -p password -t /root/example.tar

자세한 내용은 tutorial tar (1)도움말 페이지를 참조하십시오.

16.1.9.10. testparm utility 사용

16.1.2절. “testparm utility 를 사용하여 gRPC.conf 파일 확인”을 참조하십시오.

16.1.9.11. wbinfo utilities 사용

wbinfo 유틸리티는 winbindd 서비스에서 생성 및 사용하는 정보를 쿼리하고 반환합니다.

참고

wbinfo 를 사용하려면 winbindd 서비스를 구성하고 실행해야 합니다.

예를 들어 wbinfo를 사용하여 다음을 수행할 수 있습니다.

  • 도메인 사용자를 나열합니다.

    ~]# wbinfo -u
    AD\administrator
    AD\guest
    ...
  • 도메인 그룹을 나열합니다.

    ~]# wbinfo -g
    AD\domain computers
    AD\domain admins
    AD\domain users
    ...
  • 사용자의 SID를 표시합니다.

    ~]# wbinfo --name-to-sid="AD\administrator"
    S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
  • 도메인 및 신뢰에 대한 정보를 표시합니다.

    ~]# 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

자세한 내용은 wbinfo(1) 도움말 페이지를 참조하십시오.

16.1.10. 추가 리소스

  • Red Hat Samba 패키지에는 패키지가 설치하는 모든 Samba 명령 및 구성 파일에 대한 도움말 페이지가 포함되어 있습니다. 예를 들어 이 파일에서 설정할 수 있는 모든 구성 매개변수를 설명하는 /etc/samba/smb.conf 파일의 도움말 페이지를 표시하려면 다음을 수행합니다.

    ~]# man 5 smb.conf
  • /usr/share/docs/samba-version/: Samba 프로젝트에서 제공하는 일반 문서, 예제 스크립트 및 LDAP 스키마 파일을 포함합니다.
  • Red Hat Cluster Storage 관리 가이드: GlusterFS 볼륨에 저장된 디렉터리를 공유하도록 Samba 및 CDTB(Clustered Trivial Database)를 설정하는 방법에 대한 정보를 제공합니다.
  • Red Hat Enterprise Linux High Availability Add-on Administration 가이드의 Red Hat High Availability Cluster의 활성/활성 Samba Server 는 Samba 고가용성 설치를 구성하는 방법을 설명합니다.
  • Red Hat Enterprise Linux에 SMB 공유 마운트에 대한 자세한 내용은 Red Hat Storage 관리 가이드 의 해당 섹션을 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.