메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

Linux 학습, 302(혼합된 환경): Trivial Database 파일

Samba의 Trivial Database 파일과 문제점 해결 방법

Sean Walberg, 네트워크 엔지니어, .
Sean Walberg
Sean Walberg는 네트워크 엔지니어이자 네트워킹에 관한 두 권의 책을 집필한 저자이기도 하다. 그는 의료 및 매체를 포함한 여러 산업 분야에서 일한 경력이 있다.

요약:  Samba는 Trivial Database 파일을 사용하여 지속적 및 임시 데이터를 모두 작업 통합 파일의 일부로 저장하고 Linux와 Windows 간에 공유하여 인쇄한다. Linux Professional Institute Certification 시험 LPI-302를 준비하기 위해, Samba에서 정보를 저장하기 위해 사용하는 Samba Trivial Database(TDB) 형식, TDB 파일의 내용을 보는 방법, 이를 백업하는 방법에 관한 모든 내용을 학습하자.

이 연재 자세히 보기

기사 게재일:  2012 년 2 월 06 일
난이도: 고급 원문:  보기 PDF:  A4 and Letter (52KB | 14 pages)Get Adobe® Reader®
페이지뷰:  1761 회
의견:  


이 시리즈의 정보

본 기사 시리즈를 통해 Linux 시스템 관리 태스크를 배울 수 있다. 기사의 자료를 이용해 Linux Professional Institute Certification 레벨 3(LPIC-3) 시험에 대비할 수도 있다.

본 시리즈의 각 기사에 대한 설명과 링크는 developerWorks road map for LPIC-3을 참조한다. 이 로드맵은 진행 중이며 LPIC-3 시험의 현재 목표(2010년 11월)를 반영하고 있다. 각 기사의 작성이 완료되면 로드맵에 해당 기사가 추가된다.

개요

이 기사에서는 다음 개념에 대해 학습한다.

  • Samba Trivial Database(TDB) 파일 백업
  • TDB 파일 복원
  • TDB 파일 손상 식별
  • TDB 파일 컨텐츠 편집/나열

이 기사는 LPI의 혼합된 환경 전문 시험(302)의 Topic 310에 있는 Objective 310.3을 대비하는 데 도움이 된다. 이 objective의 가중치는 1이다.

선수조건

본 시리즈에 수록된 기사를 최대한 활용하려면 Linux에 대한 고급 수준의 지식과 이 기사에서 다루는 명령을 실습할 수 있는 Linux 시스템이 있어야 한다. 특히, 본 기사에서는 독자가 Linux 명령행 기능에 대한 실무 지식을 가지고 있고 최소한 "Linux 학습, 302(혼합된 환경): 개념"에서 다룬 Samba의 목적에 대해 대략적으로 이해하고 있는 것으로 가정한다. 본 기사에서 설명하는 조치를 수행하려면 Samba 소프트웨어가 설치되어 있어야 한다. 어떤 조치의 경우, 작업 환경에서 마음대로 사용할 수 있는 SMB(Server Message Block)/CIFS(Common Internet File System) 네트워크가 있어야 한다.


TDB 파일의 이해

선택 과목인 LPI-302 시험 정보

LPIC(Linux Professional Institute Certification)는 다양한 레벨로 치러지고 각 레벨을 통과하려면 이전 레벨보다 많은 지식과 경험이 요구된다는 점에서 수많은 다른 인증 시험과 같다. LPI-302 시험은 LPIC 계층 구조의 세 번째 레벨에 속하는 선택적 전문 시험으로서, 높은 레벨의 Linux 시스템 관리 지식이 요구된다.

LPIC-3(LPIC 레벨 3) 인증을 획득하려면 첫 번째 레벨의 두 시험(101 및 102), 두 번째 레벨의 두 시험(201 및 202) 그리고 LPIC-3 핵심 시험(301)에 합격해야 한다. 이 레벨을 달성한 후 LPI-302와 같은 선택적 전문 시험을 치를 수 있다.

Samba는 로컬 비밀번호에서 그 정보를 청취할 수 있을 것으로 예상되는 클라이언트의 목록까지, 수많은 정보를 런타임에 저장한다. 이 데이터 중 일부는 수명이 짧아 Samba가 다시 시작될 때 버려질 수 있지만, 일부 데이터는 영구적인 데이터로서 손실되면 안 된다. 이런 데이터를 메모리에 보관하기에는 너무 크거나 액세스되는 일이 별로 없을 수 있다. 또는 Samba가 다시 시작될 때 영구적으로 보존되어야 한다. 이런 요구사항을 충족시키기 위해 Samba 개발팀에서는 Trivial Database를 작성했다. 이 데이터베이스는 사실상 키 값 저장소이며, 이는 곧 데이터가 고유 키를 통해 저장 및 검색되고 관계형 데이터베이스에서처럼 테이블의 결합이 없다는 뜻이다. 키 값 저장소(특히 TDB)는 빠르게 데이터를 디스크에 저장하고 다시 가져오기 위한 수단으로 사용된다.

키 값 저장소

GDBM(GNU Database Manager)과 같이 TDB를 대체하는 솔루션은 많이 있지만, Samba 프로젝트에서는 데이터베이스에 다중 프로세스를 작성하는 동시에 내부 데이터 조각 잠금 기능을 지원할 특별한 필요성이 있었다. 따라서 Samba 개발팀은 고유의 데이터베이스 관리자를 빌드했으며, 이를 Trivial Database Manager라 불렀다. TDB는 CTDB(Clustered TDB) 프로젝트를 통해 클러스터된 조작을 지원하도록 확장되었고, 다른 프로젝트에서도 TDB를 사용할 수 있다.

고유의 피드 빌드

IBM에서 기사를 새로 추가하거나 컨텐츠를 업데이트할 때 알림 메시지를 받도록 사용자 정의 RSS, Atom 또는 HTML 피드를 빌드할 수 있다. 맞춤 컨텐츠 설정으로 이동한다. 영역에서는 리눅스, 유형에서는 기술자료를 선택하고 키워드에는 Linux Professional Institute를 입력한다. 그런 다음 원하는 피드 유형을 선택한다.

IBM DB2, MySQL 또는 PostgreSQL과 같은 관계형 데이터베이스에 익숙하다면 비교하여 키 값 저장소의 원형을 찾을 수 있을 것이다. 관계형 데이터베이스에는 여러 개의 열을 가진 테이블이 있을 수 있지만, 키 값 저장소에는 사실상 두 개의 열, 즉 키 열과 값 열이 있다. 관계형 데이터베이스에서는 SQL(Structured Query Language)을 사용하여 다중 테이블 및 열에서 정보를 가져오지만, 키 값 저장소는 키 열에 대한 조작으로 제한된다.

그 단순성 때문에, 키 값 저장소는 작은 작업 세트에 유용하지만 그런 작업을 매우 빠르게 수행할 수 있다. 키 값 저장소는 기본적으로 디스크 상의 해시 테이블이므로, 인덱스를 참조할 필요 없이 데이터 조각의 위치를 추측할 수 있다.

특히 TDB는 다수의 동시 라이터와 내부 데이터 구조와 같은 2진 데이터를 처리하도록 작성되었다. 따라서 이 데이터를 가장 빠르게 저장하고 검색하는 방법은 2진 형식으로 저장 및 검색하는 것이다. 2진 데이터로 저장한다는 것은 데이터베이스 파일의 크기가 작을 수 있고, 따라서 데이터베이스 안팎으로 데이터가 이동할 때 다른 형식 간에 데이터를 변환할 필요가 없다는 뜻이다.

Samba에 사용되는 TDB 파일

Samba는 몇몇 다른 장소에 TDB 파일을 저장한다. 이런 파일을 찾는 가장 쉬운 방법은 목록 1에 표시되어 있는 smbd -b의 출력을 살펴보는 것이다.


목록 1. smbd 빌드 정보 표시
	
# smbd -b
...
Paths:
   SBINDIR: /usr/sbin
   BINDIR: /usr/bin
   SWATDIR: /usr/share/swat
   CONFIGFILE: /etc/samba/smb.conf
   LOGFILEBASE: /var/log/samba
   LMHOSTSFILE: /etc/samba/lmhosts
   LIBDIR: /usr/lib
   MODULESDIR: /usr/lib/samba
   SHLIBE1T: so
   LOCKDIR: /var/lib/samba
   STATEDIR: /var/lib/samba
   CACHEDIR: /var/lib/samba
   PIDDIR: /var/run
   SMB_PASSWD_FILE: /var/lib/samba/private/smbpasswd
   PRIVATE_DIR: /var/lib/samba/private

목록 1에 있는 경로 중 여러 개의 경로가 TDB 파일이 있는 위치를 가리킨다. 다행히도, 많은 경로가 동일하므로 살펴봐야 할 장소의 개수가 줄어든다. 예를 들어, LOCKDIR, STATEDIRCACHEDIR은 모두 /var/lib/samba를 가리키고, PRIVATE_DIRprivate라는 서브디렉토리에 있다. 그런 디렉토리로 이동하여 스스로 파일을 찾아볼 수 있다.

TDB 파일은 지속적인 파일과 임시적인 파일의 두 그룹으로 크게 분류할 수 있다. 표 1은 지속적 파일의 이름과 기능을 나타낸 것이다.


표 1. 지속적 TDB 파일
파일 이름용도
account_policy.tdb잠금 임계값 및 비밀번호 길이와 같은 계정 정책 저장
group_mapping.tdbWindows NT 사용자 ID(SID)와 UNIX® userid 사이의 관계 저장
ntdrivers.tdb프린터 드라이버에 대한 정보 저장
ntforms.tdb인쇄 큐의 양식(예: 용지 크기)에 대한 정보 저장
ntprinters.tdb프린터의 초기화 설정에 대한 정보 저장
passdb.tdb일부 보안 모드에서 인증 신임 정보를 저장하는 데만 사용됨
registry.tdb다른 Windows 시스템에서 액세스할 수 있는 기본 폼 레지스트리
secrets.tdb워크스테이션의 머신 키와 같은 로컬 시크릿과 LDAP(Lightweight Directory Access Protocol) 비밀번호와 같은 신임 정보 저장
share_info.tdb각 로컬 공유에 대한 액세스 제어 목록(ACL) 정보 저장
winbindd_idmap.tdbwinbind를 사용 중인 경우 Windows NT SID와 동적으로 작성된 사용자 사이의 맵핑 정보 저장

표 1에 표시된 TDB 파일을 백업해야 한다. 백업을 위한 절차는 기사 후반부에서 설명한다.

그 밖에도, 상태 정보와 캐시된 데이터를 저장하는 많은 임시 TDB 파일이 있다. Samba가 시작될 때 이런 파일은 다시 빌드되기 때문에, 이런 파일을 백업할 필요는 없다.


TDB 파일 사용

Samba에는 TDB 파일을 조작하기 위한 다음 세 가지 도구가 있다.

  • tdbdump: TDB 파일의 컨텐츠를 인쇄한다.
  • tdbbackup: TDB 파일을 백업하고 유효성 검증한다.
  • tdbtool: TDB 파일을 작성하고 보고 수정한다.

TDB 파일의 컨텐츠 엿보기

TDB 파일에 있는 컨텐츠를 보는 가장 빠른 방법은 tdbdump 명령으로 파일을 덤프하는 것이다. 목록 2는 ntprinters.tdb 파일을 덤프한 것을 나타낸 것이다.


목록 2. TDB 파일에서 tdbdump 사용
	
[root@bob ~]# tdbdump /var/lib/samba/ntprinters.tdb 
{
key(21) = "GLOBALS/c_setprinter\00"
data(4) = "\00\00\00\00"
}
{
key(13) = "SECDESC/test\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
...
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00"
}
{
key(17) = "SECDESC/cups-pdf\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
...
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00"
}

목록 2의 출력에서 데이터베이스에 3개의 키가 있는 것을 볼 수 있다. 첫 번째 키는 길이가 21바이트이고(바이트 길이는 소괄호[()] 안에 표시됨) GLOBALS/c_setprinter라고 하며 그 뒤에 ASCII 값으로 0인 NULL이 뒤따른다. 인쇄 불가능한 문자는 백슬래시 뒤에 2개의 16진 문자가 나오는 16진 형식으로 표시된다. 첫 번째 키의 값은 길이가 4바이트이고 전체가 NULL이다.

다음 2개의 키를 SECDESC/testSECDESC/cups-pdf라고 하고 둘 다 NULL로 끝난다. 데이터가 완전히 2진 형식으로서 인쇄할 수 없으므로, 16진 형식으로 된 인쇄 불가능한 문자로 인쇄 출력되었다.

TDB 파일 백업 및 복원

표 1에서 다시 부팅을 해도 유지되고 백업해야 하는 여러 가지 TDB 파일을 보여주었다. 대부분의 데이터베이스와 마찬가지로, 사본이 손상될 수 있으므로 파일을 그냥 복사할 수만은 없다. 파일에 데이터를 쓰는 중에 파일을 복사할 때 백업 손상이 발생하여 원본 파일과 일치하지 않는 상태의 백업 사본을 가지게 된다. 한 가지 대안은 Samba 디먼을 종료한 다음 파일을 복사하는 방법이다.

TDB 파일을 가장 쉽게 백업하는 방법은 Samba와 함께 제공되는 tdbbackup 유틸리티를 사용하는 것이다. 이 유틸리티를 사용하면 파일에 데이터를 쓰는 중이더라도 TDB 파일을 안전하게 복사할 수 있다. tdbbackup의 또 다른 유용한 기능은 TDB 파일에 손상이 없는지 확인하고 손상된 부분을 찾은 경우 백업 파일을 자동으로 되돌릴 수 있는 기능이다. 목록 3은 백업 중인 TDB 파일을 나타낸 것이다.


목록 3. TDB 파일 백업
	
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root 8192 Apr  7  2008 account_policy.tdb
[root@bob samba]# tdbbackup account_policy.tdb 
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root  8192 Apr  7  2008 account_policy.tdb
-rw------- 1 root root 36864 Dec  8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778  -
[root@bob samba]# tdbdump account_policy.tdb.bak | md5sum
53ea608f0d93061480549c511756b778  -

목록 3의 첫 번째 명령은 단순히 account_policy로 시작하는 모든 파일을 나열하여 사본이 하나만 있는지 확인하기 위한 것이다. 그 다음, tdbbackup account_policy.tdb를 실행하여 계정 정책 데이터베이스를 백업한다. 세 번째 명령은 account_policy로 시작하는 파일을 찾아보고 .bak 확장자를 가진 파일이 새로 작성되었음을 표시한다. 파일의 크기가 원본과는 다르지만, 각 파일을 덤프하고 MD5 해시를 계산하면 체크섬이 동일한 것으로 표시된다. 따라서 각각의 키-값 쌍의 컨텐츠가 같을 때는 파일 크기가 더 크더라도 문제가 될 것이 없다.

불완전한 시스템 종료 중일 때와 같이, 어떤 이유로 원본 account_policy.tdb 파일이 손상된 경우 백업에서 이전 파일을 복원할 수 있다. 목록 4에 이 프로시저가 표시되어 있다.


목록 4. TDB 파일 확인 및 복원
	
[root@bob samba]# ls -l account_policy.tdb
-rw------- 1 root root 1213 Dec  8 21:49 account_policy.tdb
[root@bob samba]# tdbbackup -v account_policy.tdb
tdb_oob len 1256 beyond eof at 1213
restoring account_policy.tdb
[root@bob samba]# ls -l account_policy.tdb*
-rw------- 1 root root 36864 Dec  8 21:49 account_policy.tdb
-rw------- 1 root root 36864 Dec  8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbbackup -v account_policy.tdb
account_policy.tdb : 17 records
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778  -

목록 4의 첫 번째 명령은 파일 크기가 상당히 줄었음을 보여준다. tdbbackup 명령이 다시 실행되지만, TDB 파일을 확인하는 -v 플래그가 포함된다. 파일이 손상된 경우 오류 요약과 파일이 복원되었다는 메모를 볼 수 있다. ls 명령으로 파일 크기를 비교해보면, 현재 데이터베이스를 바꾸기 위해 백업이 사용된 것을 알 수 있다.

tdbbackup 명령을 여러 차례 실행해도 된다. 목록 4의 penultimate 명령과 같이 유효한 데이터베이스 파일에서 이 명령을 실행하면 파일에 있는 레코드 개수가 출력된다. 또한, MD5 합계는 손상되기 전에 보았던 합계와 일치한다.

참고: tdbbackup 명령은 와일드카드를 허용하므로, 동시에 여러 파일을 백업하고 확인할 수 있다.

TDB 파일 변경

tdbtool 유틸리티를 사용하여 TDB 파일 내부의 데이터를 변경할 수 있다. 이 유틸리티를 사용하면 전체 파일을 덤프하고 출력을 정렬할 필요 없이 파일 내에 있는 개별 키와 값을 검사할 수도 있다.

주의

Samba를 사용할 때는 TDB 파일 내부의 데이터를 변경해야 하는 경우가 많지 않다. 파일에 내부 데이터 구조가 있거나 그 작업을 수행하는 데 더 나은 도구가 있다. 하지만, 이 섹션은 시험 목적이므로 테스트하기에 좋은 목표가 된다.

tdbtool은 명령행에서 명령을 실행할 수도 있고, 사용자가 대화식 콘솔을 열 수도 있다. 명령행에서 태스크를 수행하려면 tdbtool example.tdb command options를 실행하는데, 여기서 example.tdb는 파일 이름이고 command는 명령이며, 명령에 대한 옵션은 끝으로 이동한다. tdb 쉘을 사용하려면 tdbtool만 실행하거나 명령행에서 파일의 이름을 전달한다.

데이터베이스를 작성하려면 tdbtool만 실행하고 create test.tdb를 입력한다. 그렇게 하면 test.tdb라는 디스크에 데이터베이스가 작성되고 작성된 데이터베이스를 열어 이 세션에서 변경하는 내용이 그 파일에 포함된다. 기존 TDB 파일이 있는 경우 명령행에서 그 이름을 지정하거나 open 명령을 사용할 수 있다. 기묘하게도, 명령행에서 직접 TDB 파일을 작성하는 유일한 방법은 tdbtool test.tdb create test.tdb와 같이 이름을 두 번 지정하는 것이다. 이는 오류를 리턴하지만 데이터베이스를 성공적으로 작성한다.

데이터베이스를 작성하거나 기존 데이터베이스를 열었을 때는 다음 옵션을 사용할 수 있다.

  • dump: tdbdump와 똑같이 데이터베이스에 있는 것을 모두 표시한다.
  • keys: ASCII 형식의 키만 표시하거나, hexkeys 명령으로 키를 16진 형식으로 표시한다.
  • erase: 삭제를 알리는 메시지를 표시하지 않고 데이터베이스에 있는 모든 것을 삭제한다.
  • info: 데이터베이스에서 사용하는 키와 바이트의 수에 대한 요약 정보를 표시한다.
  • check: 데이터베이스가 유효한지 확인한다.
  • speed: 데이터베이스와의 사이에서 데이터를 얼마나 빠르게 읽고 쓸 수 있는지 알아보기 위한 테스트를 수행한다.
  • show key: 키와 함께 저장되는 값을 인쇄한다.
  • delete key: 키와 값을 삭제한다.

데이터를 추가하고 조작하려면 insertstore 명령을 사용하면 된다. 각각의 명령은 키와 값(값은 선택적으로 가짐)에 대해 매개변수를 허용한다. 값을 지정하지 않으면 0바이트의 데이터를 가진 키가 값에 저장될 것이다.

레코드 삽입은 레코드를 새로 작성하는 것을 의미하는 반면, 레코드 저장은 기존 항목을 겹쳐쓸 수 있다는 의미다. 목록 5는 두 명령 간의 차이를 나타낸 것이다.


목록 5. 레코드 저장과 삽입
	
tdb> insert mykey myvalue
tdb> insert mykey newvalue
insert failed
tdb> store mykey newvalue
Storing key:

key 5 bytes
mykey
data 8 bytes
[000] 6E 65 77 76 61 6C 75 65                           newvalue
tdb> store newkey someothervalue
Storing key:

key 6 bytes
newkey
data 14 bytes
[000] 73 6F 6D 65 6F 74 68 65  72 76 61 6C 75 65        someothe rvalue

목록 5에서 이벤트의 시퀀스는 다음과 같다.

  1. myvalue 값을 가진 mykey라는 키를 삽입한다. 이 조작에 성공한다.
  2. 이름은 이전과 같지만 새 값을 가진 키를 삽입한다. 그 키가 이미 있으므로 이 조작은 실패한다.
  3. 키를 삽입하는 대신 저장한다. 이 조작은 성공하며 더 자세한 결과가 출력된다.
  4. 새 값을 가진 새 키를 저장한다. 키가 존재하지 않더라도 이 조작은 성공한다.

tdb 쉘에서 트랜잭션을 사용하여 일련의 명령을 실행하도록 허용하고 이런 명령을 그룹으로 적용하거나 그룹으로 취소할 수 있다. 목록 6은 두 가지 트랜잭션을 나타낸 것이다.


목록 6. 트랜잭션 사용
	
tdb> transaction_start
tdb> insert somekey somevalue
tdb> show somekey

key 7 bytes
somekey
data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75  65                       somevalu e
tdb> transaction_cancel
tdb> show somekey
fetch failed
tdb> transaction_start
tdb> insert somekey somevalue
tdb> transaction_commit
tdb> show somekey

key 7 bytes
somekey
data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75  65                       somevalu e

트랜잭션은 먼저 transaction_start 명령으로 시작된다. 그 다음, 키가 삽입된다. 다른 프로세스에서 데이터베이스를 읽으려고 한 경우, 이 키가 커미트되지 않았기 때문에 이 키를 보지 못했을 것이다. 트랜잭션이 열린 프로세스에서 이 키를 본다. 그러면 해당 트랜잭션이 transaction_cancel로 취소된다. 키가 더 이상 나타나지 않는다.

그런 다음 프로세스가 다시 실행되지만, 트랜잭션은 transaction_commit로 커미트된다. 그러면 키가 모든 리더에 대해 존재하게 된다.

어떤 트랜잭션을 진행 중인 경우 다른 리더가 차단될 수도 있는데, 이는 트랜잭션이 완료될 때까지 다른 리더는 중단될 것이라는 의미다. 따라서 프로덕션 데이터베이스에서 트랜잭션을 사용할 때는 주의하자! 훌륭한 안전 기능이긴 하지만, 과용할 경우 성능에 나쁜 영향을 미칠 가능성이 있다.


TDB를 넘어

구성에 따라 다양한 장소에 사용자 계정을 저장할 수 있고, 두 가지 도구가 명령행 인터페이스를 제공하는 동시에 백엔드 통신도 관리한다. 예를 들어, 사용자 데이터가 TDB 파일이 아니라 LDAP에 저장되어 있는 경우 같은 명령을 사용할 수 있다.

smbpasswd 사용

smbpasswd 유틸리티는 사용자 또는 머신 계정을 추가 및 삭제하고 비밀번호를 변경할 수 있다. 이 유틸리티는 현재 사용자의 비밀번호를 변경하거나 루트 권한으로 다른 사용자의 비밀번호를 변경하기 위해 비밀번호 변경 태스크를 수행하는 데 가장 널리 사용된다.

이후의 기사에서 다른 비밀번호 백엔드에 관해 더 깊이 학습하겠지만, 상위 레벨에서는 Samba의 성숙도와 어떤 시스템과 통합할 것인지에 따라 여러 가지 다른 방법으로 Samba 비밀번호를 저장할 수 있다. smbpasswdpdbedit(다음에 설명함)는 둘 다 백엔드가 TDB가 아니더라도 그에 대한 조치를 수행할 수 있다.

Microsoft 클라이언트는 평문이나 UNIX 비밀번호 해시가 아니라 Microsoft의 특정한 해시로 네트워크를 통해 비밀번호를 전달한다. 이는 Microsoft 비밀번호 해시를 선택하여 비밀번호가 UNIX 비밀번호 데이터베이스에 저장된 비밀번호와 같은지 판별하는 것이 불가능하다는 의미다. 따라서 Samba는 Microsoft 해시에 대해 별개의 비밀번호 데이터베이스를 유지해야 하며, 이를 비밀번호 백엔드라 한다.

pdbedit 사용

pdbedit는 Samba 사용자 데이터베이스와 계정 정책을 관리한다. 이 명령은 smbpasswd가 수행할 수 있는 작업은 어떤 것이든 수행할 수 있고, 그 밖에 다른 백엔드 사이에서 정책을 관리하고 계정을 마이그레이션할 수 있다.

데이터베이스에 있는 모든 사용자를 표시하려면 pdbedit -L을 실행한다. 목록 7에 표시된 것처럼, -v 플래그를 전달하여 사용자에 대해 훨씬 많은 상세 정보를 얻을 수 있다.


목록 7. 자세한 사용자 목록
	
[root@bob tmp]# pdbedit -L -v
---------------
Unix username:        sean
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2287037134-1443008385-640796334-1001
Primary Group SID:    S-1-5-21-2287037134-1443008385-640796334-513
Full Name:            Sean
Home Directory:       \\bob\sean
HomeDir Drive:
Logon Script:
Profile Path:         \\bob\sean\profile
Domain:               BOB
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Mon, 24 May 2010 21:28:49 CDT
Password can change:  Mon, 24 May 2010 21:28:49 CDT
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

pdbedit 명령을 올바로 실행하려면 루트 사용자로 로그인되어 있어야 한다. Microsoft 유틸리티를 사용하는 것처럼 마지막 로그인 시간, 비밀번호 변경 및 홈 디렉토리와 같은 다양한 사용자 설정을 편집할 수 있다.

각 사용자 매개변수에는 고유의 명령행 옵션이 있으므로, 구체적인 내용은 pdbedit(8) 매뉴얼 페이지를 참조한다.

Samba는 머신 계정과 사용자 계정을 비슷한 방식으로 취급한다는 점도 유의해야 할 중요한 사항이다. 목록 8은 도메인 제어기로 구성된 Samba 서버의 비밀번호 데이터베이스를 나타낸 것이다.


목록 8. 머신 계정을 포함한 비밀번호 데이터베이스
	
[root@sergeant ~]# pdbedit -L
root:0:root
mythupstairs$:4294967295:MYTHUPSTAIRS
BOB$:1043:Machine
sean:1002:Sean,,,
sergeant$:4294967295:Machine

달러 기호($)로 끝나는 이름이 머신 계정이며, 도메인에 대해 머신을 인증하는 데 사용된다. 해당 시크릿은 원격 서버에서는 secrets.tdb에, 도메인 제어기에서는 passdb.tdb에 저장된다.


앞으로 나아가기

이것으로 개념, 아키텍처 및 설계 주제를 끝맺는다. 다음 기사에서는 Samba 소스 코드를 다운로드하고 컴파일하는 방법을 학습하는 것으로 Topic 311을 시작하도록 하겠다.


참고자료

교육

제품 및 기술

  • Samba를 다운로드하고 소프트웨어의 최신 개발 소식을 꿰뚫고 있자.

  • 프로젝트에서 TDB를 사용해보고 싶다면 TDB 소스 코드를 다운로드하자.

  • 그래픽 인터페이스가 필요하거나 다른 환경과 더 나은 방식으로 통합해야 하는 경우 Samba용 account-management tools를 살펴보자.

  • 자신에게 가장한 적합한 방법으로 IBM 제품을 평가해 보자. 시험판 제품을 다운로드하거나, 온라인으로 제품을 사용해 보거나, 클라우드 환경에서 제품을 사용하거나, SOA Sandbox에서 SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.

토론

  • developerWorks community에 참여한다. 개발자가 운영하고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.

필자소개

Sean Walberg

Sean Walberg는 네트워크 엔지니어이자 네트워킹에 관한 두 권의 책을 집필한 저자이기도 하다. 그는 의료 및 매체를 포함한 여러 산업 분야에서 일한 경력이 있다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=리눅스
ArticleID=791627
ArticleTitle=Linux 학습, 302(혼합된 환경): Trivial Database 파일
publish-date=02062012

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.