네트워크 서비스 : samba

SMB : 마이크로소프트가 개발한 로컬 네트워크 관리용 프로토콜

samba : SMB프로토콜을 유닉스/리눅스에서 사용할 수 있도록 하는 프로그램


패키지

samba : SMB 서비스 네트워크 데몬 및 기본 유틸리티를 포함

samba-common : samba 설정 파일이나 설정 유틸리티, 맨 페이지를 포함

samba-client : SMB를 이용하여 접속하는 데 사용하는 클라이언트 유틸

samba-winbind : winbind 기능 및 NSS 라이브러리, PAM 보안 모듈을 제공


설정파일

/etc/samba

smb.conf : samba 서버 주 설정 파일

smbusers : samba 유저 별칭 정보를 담고 있는 파일

imhosts : 공유 네트워크 내에 있는 서버 리스트를 보여줌


samba와 SELinux

SELinux를 permissive 모드로 바꾸기


1. 임시 설정

#setenforce 0  // Enforcing/Permissive 모드 토글 유틸 (0:Permissive,1:Enforcing)

#getenforce

Permissive


2. 고정 설정

/etc/sysconfig/selinux 

"SELINUX=Permissive" 로 수정


Enforcing 모드에서 samba 허용

#setsebool -P samba_domain_controller on

#setsebool -P samba_enable_home_dirs on

#setsebool -P samba_export_all_rw on


smb.conf의 전역 설정

네트워크 설정

workgroup = 문자열 // 작업 그룹

server string = 문자열 // 컴퓨터 설명, (%v:samba 버전 변수)

netbios name = 문자열 // 컴퓨터 이름

hosts allow = 주소 // 접속 허용 주소

interfaces = <주소|장치명> // 사용할 인터페이스

bind interfaces only = yes/no // 지정된 주소만 LISTEN 사용여부


로그 관련 설정

log file = 로그 파일 경로

max log size = 최대 크기


%m : 클라이언트 변수, 클라이언트 별로 로그 기록 사용

ex) /var/log/samba/%m.log


보안 설정

security = <user|domain|ads> // user : 윈도우 사용자와 동일한 사용자 인증(패스워드 별도)

passdb backend = <smbpasswd|tdbsam|ldapsam> // 패스워드 저장 방식


ex)  security = user

passdb backend = tdbsam:/etc/samba/passdb.tdb 

passdb backend = smbpasswd:/etc/samba/smbpasswd - 구 버전 사용


프린터 관련 설정

load printers = <yes|no>

cups options = "CUPS 옵션"


ex)  load printers = no

cups options = raw


문자 셋 설정

dos charset = 문자 셋

unix charset = 문자 셋


ex)  dos charset = CP949

unix charset = UTP-8


smb.conf 의 공유 설정

comment = Home Directories  // 해당 공유의 설명문

path = /var/spool/samba // 공유할 디렉터리 경로

browseable = yes|no // yes:유저들에게 보임, no:유저들에게 안보임, 접근은 가능

public = yes|no // yes:모든 유저에게 접근 허용

valid users = test1 test2 // 접근 허용 유저 목록

read only = yes|no // 읽기전용 사용여부

writable = yes|no // 쓰기 사용여부, read only 지시자와 사용 불가

create mask = 640 // 해당 공유에서 생성되는 파일 권한 지정

write list = @staff // 접근이 허용 되는 그룹 목록, staff그룹 허용


smb.conf 검사 명령어

#testparm -v


몇몇 전역 설정을 일부에만 적용하고 싶을 때

include = /etc/samba/smb.conf.%m


ex)  컴퓨터 이름이 test1일 때

include = /etc/samba/smb.conf.test1  //  smb.conf.test1 파일별도 생성 및 설정


samba 패스워드 작성 : TDB 데이터베이스

samba의 TDB SAM 파일이 저장되는 기본 위치

#smbd -b | grep PRIVATE_DIR


passdb.tdb 파일에 유저명과 패스워드 기록

#pdbedit -a -u test1 // pdbedit 유틸을 이용한 test1 계정 추가

#pdbedit -L             // TDB SAM 유저 리스트

#smbpasswd         // 패스워드 변경


클라이언트 프로그램 : smbclient

#smbclient -L //192.168.0.100 -N // 192.168.0.100 서버에 접속 가능한 서비스 리스트(-N:암호를 묻지 않음)

#smbclient -L //192.168.0.100/homes -U study01     // study01 유저로 homes 접속


접속 뒤, 명령어

cd : 원격지 디렉터리 이동

lcd : 로컬 디렉터리 이동

put, mput : 파일 전송

get, mget : 파일 수신

prompt : 다중 파일 전송 시 yes/no 토글


SMB 자원의 mount : 공유 드라이브 연결

#mount.cifs <service> <mount-point> [-o options]


ex) mount.cifs //192.168.0.10/c$ /media/smb -o user=administrator,pass=qwe123!@#


다음과 같이 fstab에 등록 가능

//192.168.0.10/c$ /media/smb cifs noauto,user=administrator,pass=qwe123!@#,dir_mod=0755,file_mode=0644,noexec 0 0


유저 맵의 사용

유저 맵 : 접속 시, 시스템의 계정명과 동일한 유저ID만 사용 가능 했지만, 유저ID를 다르게 할 수 있음.


smb.conf 환경 설정의 전역 설정 추가 필요

username map = /etc/samba/smbusers


ex)  /etc/samba/smbusers 파일 편집

//smb계정 = smb별칭1 smb별칭2 ..


samba 관리

1) smbstatus

- 현재 samba의 서비스 상태


2) smbcontrol

- smbd, nmbd, winbindd 를 제어하기 위한 명령어


smbcontrol [option] <destination> <message-type> <parameters>


message-type

reload-config : 환경 설정을 다시 읽어 들임

close-share : 파라미터로 사용을 금지할 공유 이름(destination이 smbd만 가능)


es) smbcontrol smbd close-share guest01


#pdbedit -c "[D ]" -u guest01 // guest01 계정 정지

#pdbedit -c "[!D ]" -u guest01 // guest01 계정 해제


3) SWAT(Samba Web Administration Tool)

- 웹관리자 설정 기능

- 패키지명 : samba-swat

- inet방식 동작 : /etc/xinetd.d/swat -> disable = yes 수정 후, xinetd restart

- 901포트 사용


+ Recent posts