리눅스 팁 & 테크

조회 수 17830 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
앞서 초급 섹션에서 기본적인 samba 서버 설치/설정 및 구동에 대해서 알아보았으며,
이제는 세부적인 설정을 통해 samba 서버를 좀 더 고급지게(?) 사용하는 방법에 대해 알아보겠습니다.

먼저 samba 설정파일인 smb.conf를 열어봅니다.
$ sudo vi /etc/samba/smb.conf
※ vi 에디터에 익숙치 않은 사용자라면, pluma 에디터를 추천합니다.
$ sudo pluma /etc/samba/smb.conf

samba_04.png



※ 설정 내용에서 샾(#) 또는 세미콜론(;)으로 시작하는 문장은 "주석" 문장입니다.
  서비스 구동 시 OS에서 해당 문장은 해석하지 않고 넘어 가기에, 메모나 설명 등을 정리하는 용도로 많이 사용됩니다.

samba는 크게 3개의 파트로 구성되어 있습니다. (대괄호로 묶여 있는 부분을 유심히 살펴보면 됩니다.)
  + [global] : 전반적인 samba 설정을 다룹니다. (접속 권한, 인증 방법, 로그 설정 등)
  + [homes] : 사용자 계정의 기본 공유 디렉터리 입니다. (접속 유저별 자신의 공유 공간)
  + [public] : 관리자가 별도로 정의해서 사용하는 공유 디렉터리 입니다. (명칭 및 권한 등 자유롭게 설정)

#################################################################
먼저 [global] 설정에 대해 알아봅니다.

① Browsing/Identification
# workgroup는 네트워크 공유 그룹 이름입니다.
# 기업이나 단체에서는 단일 네트워크 내에 여러 PC가 있기에 group을 지정합니다만,
# 개인용으로 사용하시는 거라면 group이 별 의미가 없습니다. 그냥 그대로 둡니다.
workgroup = WORKGROUP

# 서버 이름을 표시합니다. Windows에서 네트워크로 검색해보면 나오는 PC 이름에 해당합니다.
# 기본으로는 호스트명(%h)을 표시하도록 되어 있습니다. 본인이 원하는 이름으로 바꾸셔도 됩니다.
# (예)  server string = HamoniKR Samba server
server string = %h server (Samba, Linux Mint)

# samba 서버에 접속할때, ID 계정을 확인하여 접속 유무를 허용한다면 "user"로 설정하고,
# ID 계정 없이 누구나 접속하게 하려면 "share"로 설정합니다.
# 여기서는 보안상 계정 확인이 안전하므로, user 상태 그대로 두겠습니다.
# 기본 설정 파일에는 아래 항목이 없을 수도 있습니다. default가 user 이므로 설정이 없어도 무방합니다.
security = user

# Windows 기반의 Name 서비스를 사용하는 경우...
# nmbd 데몬이 wins server 역할을 하고, 등록되지 않은 NetBIOS 이름을 찾아줄때,
# DNS server를 이용하여 NetBIOS 이름을 찾아줄 것인지를 지정하는 옵션입니다.
# wins server를 사용하지 않는 경우라면, 이 값들을 수정할 필요가 없습니다. (주석 그대로 유지)
  # wins support = no
  # wins server = w.x.y.z
  # wins proxy = yes
dns proxy = no

② Networking
# 여러개의 네트워크 장치(랜카드)를 사용 중이면서, 특정 네트워크 장치로 samba 서비스를 제한해야 하는 경우
# 사용할 네트워크 장치를 정의할 수 있습니다.
# 일반적인 경우에는 수정할 필요가 없으므로 주석 그대로 남겨둡니다.
;   interfaces = 127.0.0.0/8 eth0
;   bind interfaces only = yes

# 특정 IP 또는 대역폭에서의 접근만을 허용하고 싶은 경우...
# 아래의 유형들 중 하나를 선택하여 내용을 추가합니다.
# 접속 IP 단위로 접근을 허용
hosts allow = 192.168.0.100 192.168.0.101
# 대역폭 단위로 지정. 마지막에 점(.)으로 끝남에 유의
hosts allow = 192.168.0. 10.10.10.
# 192.168.0.0 네트워크 대역에 속한 접속은 허용하되, 100번 101번은 제외
hosts allow = 192.168.0. except 192.168.0.100 192.168.0.101
# 호스트명 단위로 접근 설정
hosts allow = hamonikr01 hamonikr02 hamonikrweb hamonikrdb

③ Debugging/Accounting
# 로그 파일의 경로를 지정합니다.
# samba에 접속하는 호스트 별로 개별적인 로그 파일을 만들도록 설정되어 있습니다.
# 기본값 그대로 두어도 무방합니다.
log file = /var/log/samba/log.%m

# 로그 파일의 최대 사이즈를 지정합니다. (kb 단위)
# 로그 파일의 용량이 지정된 사이즈를 초과하는 경우,
# loglotate를 통해서 넘버링을 하고 새로운 로그파일로 저장됩니다.
max log size = 1000

# samba를 통한 파일 오퍼레이션(operation)에 있어 로그를 남기도록 하는 설정입니다.
# 파일 오퍼레이션 : read pread write pwrite chmod rmdir unlink mkdir rename 등
# syslog 서비스가 같이 구동되어야 합니다. 기본값은 no
  # syslog only = no
syslog = 0

# samba 서버가 강제종료(crash)되는 등의 이슈 발생 시, admin 계정으로 메일 통지를 보내는 설정입니다.
# 기본 설정 그대로 둡니다.
panic action = /usr/share/samba/panic-action %d

④ Authentication
# samba의 역할을 정의합니다.
# samba를 도메인 컨트롤러로 사용하지 않는 이상 단일서버(standaloneserver)로 사용합니다.
server role = standalone server

# 사용자 패스워드를 어떻게 관리할지를 결정합니다.
# 일반적으로 smbpasswd를 사용합니다.
# 계정 수가 많아져도 부하가 적어 빠른 성능을 보여주는 tdbsam으로 변경할 수 있습니다. (기본값 smbpasswd)
; passdb backend = tdbsam

# PAM 인증 방식을 준수한다는 설정입니다. 기본값 그대로 둡니다.
obey pam restrictions = yes

# samba 계정의 패스워드 변경 시, 해당 리눅스 계정도 같이 동기화할 수 있도록하는 옵션입니다.
# 이를 위해 encrypt password, smb passwd file 두 옵션을 반드시 사용해야 합니다.
# passwd chat에서 패스워드 변경 시 사용자에게 보여지는 메세지 설정이 가능합니다.
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# 패스워드 변경 요청 시 PAM을 사용하여 변경하도록하는 설정입니다. 기본값 그대로 둡니다.
pam password change = yes

# 클라이언트에서 samba 접근 시, 로그인에 실패한 사용자들을 어떻게 취급할지를 결정합니다.
# 기본값은 bad user는 guest로 취급하는 것입니다.
map to guest = bad user

⑤ 기타
# 사용자 공유에 guest 접근을 허용합니다.
usershare allow guests = yes

# samba 계정과 리눅스 계정을 다르게 사용할 경우 매칭 테이블 파일을 지정합니다.
username map = /etc/samba/smbusers

#################################################################
다음으로 [homes] 설정에 대해 알아봅니다.
여기서부터는 사용 형태에 따라 임의로 설정해주어야 합니다.

[homes] 설정은, 접속하는 samba 계정별로 가지는 자신만의 공유 경로로서,
본인만이 사용하고 읽기/쓰기 권한을 모두 가지는게 일반적입니다.
이점을 고려하여 아래와 같이 설정을 해보도록 합니다.

[homes]

  comment = Home Directories        # 설명
  valid users = %S                  # 본인만 사용
  writeable = yes                   # 쓰기 허용
  browseable = no                   # 숨김
※ 자신의 경로로 자동 지정되므로, path 옵션을 사용할 필요가 없습니다.

#################################################################
다음은 프린터 설정입니다.
현재 시스템에 프린터가 설치되어 있다면, 자동으로 공유프린터로 보여지도록 설정되어 있습니다.
기본값 그대로 사용하면 됩니다.
[printers]
  comment = All Printers
  browseable = no
  path = /var/spool/samba
  printable = yes
; guest ok = no
; read only = yes

  create mask = 0700 

#################################################################
이제 필요한 공유 디렉터리를 입맛대로 만들어 보도록 합니다.
각 옵션별 의미를 파악하면 이들을 잘 조합하여 공유 폴더를 만들 수 있습니다.

먼저 공개(public) 항목을 만들어 보겠습니다.
공개 디렉터리이기에 누구나 접근할 수 있어야 하며, 보안상 읽기전용으로 설정하기도 합니다.
[public]
  comment = Public Directories
  path = /var/public                # 시스템 상의 접속 경로 지정
  public = yes                      # public 권한
  writable = no                     # 쓰기 불가 (읽기 전용)
  write list = @staff               # 읽기 전용이지만, staff 그룹 사용자는 쓰기 허용
  force user = admin                # 파일/폴더 생성 시, 지정되는 user 계정

  force group = staff               # 파일/폴더 생성 시, 지정되는 group 계정 

#################################################################
특정 사용자들에 한해 읽기/쓰기가 가능한 공유 디렉터리를 만들어 보겠습니다.
[data]
  comment = Data Directories
  path = /var/data                  # 시스템 상의 접속 경로 지정
  read only = no                    # 읽기만 가능하게 할지를 지정
  writable = yes                    # 쓰기 허용
  valid user = user1 user2 user3    # 사용 가능한 사용자를 지정
  public = no                       # guest는 이용할 수 없고 개인 사용자만 사용
  browseable = no
  create mask = 0777                # 파일 생성 mask
  directory mask = 0777             # 디렉터리 생성 mask

  follow symlinks = no              # 심볼릭 링크로 이동 제한

※ 공유 디렉터리를 사용할 user가 많은 경우, 그룹으로 간단히 명시할 수도 있습니다.
   그룹 표시문자(@)를 사용 (예: valid user = @groupname)
※ mask는 파일/디렉터리 생성시 적용되는 퍼미션(사용권한)을 말합니다.
   첫째 자리는 시스템 구분 비트이므로 제외하고, 두번째 자리부터 "사용자(user), 그룹(group), 기타(other)" 입니다.
   숫자값은 "읽기(read)/쓰기(write)/실행(exec)"을 뜻하며, 각 자리의 값은 읽기(4), 쓰기(2), 실행(1) 입니다.
   즉, 숫자가 6이면 읽기/쓰기(r+w), 7이면 읽기/쓰기/실행(r+w+x), 5이면 읽기/실행(r+x) 입니다.
   위 예에서와 같이 0777 이면, 사용자/그룹/기타 모두에게 읽기/쓰기/실행 권한을 주겠다는 뜻이 됩니다.
   필요에 따라 0755, 0644 등과 같이 적절한 퍼미션 값을 지정하면 됩니다.
#################################################################

samba 설정에 대해 대략 살펴보았는데요.
설정 설명 위주다보니 제가 봐도 따분하게 느껴지네요.
초급편에서 samba 구동까지 마치셨다면, 중급편에서 필요한 부분만 뽑아 사용하면 무난히 설정할 수 있으리라 보여집니다.

다음 고급편에서는 samba 트러블 슈팅과 속도 튜닝에 대해서 짧게 다뤄보도록 하겠습니다.
그럼 즐거운 리눅스 하세요. ^^

  • profile
    행복한펭귄 2016.04.07 09:13

    알차게 핵심을 꼭 집어서 잘 정리해 주셨네요.


    내용 잘 참고하겠습니다.


    감사합니다.


    msn034.gifmsn034.gifmsn034.gif


List of Articles
번호 제목 추천 수 글쓴이 날짜 조회 수
공지 유튜브 프리미엄 우회 결제 - 우크라이나 file 1 Kevin 2023.12.17 4023
공지 리눅스에서 자기 노트북의 모델명이 무엇인지 궁금할때는 dmidecode file 1 Kevin 2023.12.17 300
공지 하드웨어 호환성을 확인하고 싶을 때는 linux-hardware.org 를 사용해보세요 file 0 Kevin 2023.11.23 657
공지 하모니카 7.0 카카오톡 hidpi 설정하기 1 file 0 Kevin 2023.11.22 426
공지 리브레오피스에서 hwp 사용하기 4 file 0 타조 2023.10.11 943
921 리눅스 사용기 및 팁엔테크 게시판 사용 도움말 0 관리자 2014.11.03 57851
920 League of Legends를 하모니카에 설치하기. 1 0 onting 2015.04.26 29521
919 리눅스에서 egg 포멧 파일 압축해체 하는 방법 2 file 0 onting 2015.02.23 27127
918 우분투 16.04에서 각종 유틸 및 그래픽 드라이버 설치하기 6 0 string 2016.04.21 26237
917 리눅스 하드디스크 배드섹터 검사 및 치료 방법 6 0 행복한펭귄 2016.08.04 25523
916 윈도우 10에서 우분투 Bash 기능과 데스크탑 설치 후 GUI 사용하기 15 0 휘베스드님로인 2017.05.31 24468
915 zip 압축풀때 한글파일명 오류 해결방법 4 file 0 legoboss 2016.03.03 23239
914 만자로를 쓰다가 3 0 꼬꼬댁 2018.04.28 23061
913 마인드맵 프로그램 XMind 추천합니다 10 file 0 윙혼 2016.02.01 22591
912 국내, 해외 잡지를 무료로 읽고 싶다면?! 2 0 식혜고양이 2017.10.25 20835
911 윈도우즈와 리눅스의 TXT 호환 문제, 압축파일 한글깨짐 문제 1 0 Ohnine 2015.03.21 20566
910 김프(GIMP)를 사용하고 싶으신 분께... 17 file 0 행복한펭귄 2016.02.25 18769
909 음악파일(MP3 등)의 한글 정보(Tag)가 깨질경우 조치 방법 file 0 remo 2014.12.06 18144
» [개인 서버 구축 가이드] ④ 파일 공유 서버 (samba-중급) 1 file 0 legoboss 2016.04.06 17830
907 문명5 한글화 하는법 10 0 가벼운게최고 2020.01.04 17694
906 리눅스에서 fan 속도 조절하기 7 file 0 kalin 2017.01.20 16770
905 우분투 18.04 LTS Bionic Beaver를 써보았습니다! 18 0 la_Nube 2018.04.28 16573
904 데비안 9.2 firmware 설치 문제입니다. 12 0 krhamoni 2017.12.02 15794
903 Linux Mint 에서 software를 install 하는 방법들 1 0 codemaker 2015.02.11 15757
902 리눅스에서 HTS 사용은 언제쯤 가능할까? 3 file 0 행복한펭귄 2016.02.01 14982
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 47 Next
/ 47
CLOSE