2011. 11. 28. 19:36 Log/Linux

samba 서비스


마이크로소프트와 인텔은 윈도우시스템이 다른 시스템의 디스크나 프린터 자원을 공유할 수 있도록
SMB(Server Message Block) 프로토콜을 개발하였는데 삼바란 이 SMB 를 이용하여 윈도우와 다른 시스템간의 프린터및 자료를 공유할 수 있도록 해주는 서비스

현재 마이크로소프트에서는 SMB 라는 이름대신 좀 더 범위가 큰 CIFS(Common Internet Filesystem)
이라는 프로토콜로 부른다. 이프로토콜은 SMB 프로토콜에 LanManager 와 NetBios 프로토콜까지
포함한다.

삼바구성
samba 서비스는 두개의 데몬을 구성된다.
1. smbd : 파일 및 프린터 공유, 사용자 확인 및 권한부여
2. nmbd : 클라이언트를 위해 NetBios nameserver를 지원하고 서비스를 알린다.

서비스구동

/etc/init.d/smb start 또는 service smb start

삼바서비스를 위한 패키지
[root@centos2 samba]# rpm -qa | grep samba
samba-swat-3.0.33-3.28.el5 ; GUI 환경에서의 삼바설정툴
system-config-samba-1.2.41-3.el5 ; GUI 환경에서의 삼바 설정툴
samba-common-3.0.33-3.28.el5 ; 삼바 설정파일, 유틸리티, 메뉴얼 페이지
samba-3.0.33-3.28.el5 ; 삼바 서버
samba-client-3.0.33-3.28.el5 ; 삼바 클라이언트
[root@centos1 samba]#


samba 설정파일
[root@centos1 samba]# ls
lmhosts passdb.tdb secrets.tdb smb.conf smb.conf_orig smbusers
[root@centos1 samba

삼바서비스 주요설정

주석은 '#' 또는 ';' 이다.


[global]

# ----------------------- Network Related Options -------------------------
#
workgroup = MYGROUP
server string = Samba Server Version %v

; netbios name = MYSERVER

; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.

# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
#
# Max Log Size let you specify the max size log files should reach

# logs split per machine
; log file = /var/log/samba/%m.log
# max 50KB per log file, then rotate
; max log size = 50

# ----------------------- Standalone Server Options ------------------------
#
# Security can be set to user, share(deprecated) or server(deprecated)
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.

security = user ( user 대신 사용할 수 있는것은 share/server/domain/ads 가 있다)
passdb backend = tdbsam

*. 과거버전의 smbpasswd 를 사용하는 경우에는
passdb backend = smbpasswd:/etc/samba/smbpasswd 로 설정.

#============================ Share Definitions ==============================

[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S

[homes]는 공유이름.
browseable : 공유자원을 보이게 하거나 숨길 수 있다.
writable : 공유자원에 대한 쓰기권한 설정
valid users : 공유자원에 대해서 access 가능한 사용자
두명이상이면 스페이스문자를 구분자로 하고 계정을 적는다.




[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

# A publicly accessible directory, but read only, except for people in
# the "staff" group
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
; printable = no
write list = +staff
[public] 공유이름
public : yes 로 설정될 경우 모든 사용자에게 공유자원 access를 허용
write list : 쓰기 가능한 사용자 리스트. +staff 는 그룹사용자를 의미한다.




[public22]
comment = Public Stuff
path = /home/samba1
public = yes
writable = yes
; printable = no
write list = +staff

[share2]
comment = Public Stuff
path = /home/samba2
public = yes
writable = yes
; printable = no
write list = +staff

*. magic cookies: 삼바의 smb.conf에서도 아래의 magic cookies를 사용할 수 있다.
%u : 현재 사용중인 유저
%g : 현재 사용중인 유저 그룹
%m : 클라이언트의 NetBIOS이름
%v : 버전
%h : 호스트이름
%p : 서버의 홈디렉토리 경로
%d : 서버의 프로세서ID
%S : 현재 사용되는 서비스 이름
%P : 현재 사용되는 서비스의 루트 디렉토리
%U : 세션의 유저
%G : 셔션의 유저그룹
%H : %u로 주어진 유저의 홈디렉토리
%L : 서버의 NetBIOS이름
%M : 클라이언트 머신 이름
%N : NIS 홈디렉토리 서버의 이름
%I : 클라이언트 머신 IP
%T : 날짜와 시간


TDB (Trivial DB)

passdb.tdb 파일에 삼바 사용자 계정과 패스워드가 기록된다.
이 파일을 보거나 설정하기위해서는 pdbedit 툴이 필요하다.

계정생성
[root@centos1 samba]# pdbedit -a -u sysuser2
new password:
retype new password:
Unix username: sysuser2
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1841115434-4086067128-1488843553-1000
Primary Group SID: S-1-5-21-1841115434-4086067128-1488843553-513
Full Name:
Home Directory: \\centos1\sysuser2
HomeDir Drive:
Logon Script:
Profile Path: \\centos1\sysuser2\profile
Domain: CENTOS1
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: 토, 26 6월 2010 13:56:54 KST
Password can change: 토, 26 6월 2010 13:56:54 KST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@centos1 samba]#

*. 삼바 계정을 추가할 경우 /etc/passwd 에 등록되어 있는 계정이라야 한다.

[root@centos1 samba]# pdbedit -L ; 계정정보보기
user2:1012:
suser1:1009:
user1:500:
smuser1:1011:
sysuser2:1016:
[root@centos1 samba]#
[root@centos1 samba]# pdbedit -x sysuser2 ; 삼바계정 삭제
[root@centos1 samba]# pdbedit -L sysuser2
Username not found!
[root@centos1 samba]#

암호를 변경하는 경우에는 smbpasswd 명령어로 한다.
계정 생성 및 삭제 변경은 smbpasswd 로도 할수 있다.
[root@centos1 samba]# smbpasswd -a sysuser4
New SMB password:
Retype new SMB password:
Added user sysuser4.
[root@centos1 samba]#

삼바계정 삭제하기.
[root@centos1 samba]# smbpasswd -x sysuser4
Deleted user sysuser4.
[root@centos1 samba]#

삼바계정 disable 하기
[root@centos1 samba]# smbpasswd -d sysuser3
Disabled user sysuser3.
[root@centos1 samba]#

disable 상태의 삼바계정 enable 상태로 설정하기
[root@centos1 samba]# smbpasswd -e sysuser3
Enabled user sysuser3.
[root@centos1 samba]#

mswindows 공유자원 보기

[root@centos1 ~]# smbclient -L //192.168.203.1 -U lee
Password:
Domain=[UNIXUNIX-LEE] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename Type Comment
--------- ---- -------
ms_share Disk
E$ Disk Default share
IPC$ IPC Remote IPC
D$ Disk Default share
I$ Disk Default share
G$ Disk Default share
F$ Disk Default share
ADMIN$ Disk Remote Admin
H$ Disk Default share
C$ Disk Default share
J$ Disk Default share
session request to 192.168.203.1 failed (Called name not present)
session request to 192 failed (Called name not present)
Domain=[UNIXUNIX-LEE] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Server Comment
--------- -------

Workgroup Master
--------- -------
[root@centos1 ~]#


[root@centos1 ~]# smbclient //192.168.203.1/ms_share -U lee
Password:
Domain=[UNIXUNIX-LEE] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \>

명령어 리스트는 help 로 볼수 있다.
smb: \> help
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!
smb: \> help pwd
HELP pwd:
show current remote directory (same as 'cd' with no args)

smb: \>

* ftp 명령어와 비슷한것이 많다.
cd ; remote 디렉토리 이동
lcd : local 디렉토리 이동
put,mput : 파일 upload
get,mget : 파일 download
prompt : 파일전송시 interactive mode on/off

/tmp 디렉토리에 파일을 다운 받는 예.
smb: \> ! pwd
/root
smb: \> lcd /tmp
smb: \> ! pwd
/tmp
smb: \> get abc.txt
getting file \abc.txt of size 7 as abc.txt (0.6 kb/s) (average 0.6 kb/s)
smb: \>

삼바공유자원 mount

mount.cifs

[root@centos1 ~]# mount.cifs //192.168.203.1/ms_share /mnt/mswin1 -o user=lee
Password:
[root@centos1 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 4956284 4394240 306212 94% /
/dev/sda5 497829 10544 461583 3% /data
/dev/sda2 1649488 684620 879724 44% /home
tmpfs 257720 0 257720 0% /dev/shm
//192.168.203.1/ms_share
81923432 78173908 3749524 96% /mnt/mswin1
[root@centos1 ~]#

부팅할때 자동으로 마운트되게 하거나 마운트할때 마다 옵션을 사용하기 싫으면
/etc/fstab 파일에 아래처럼 등록한다.

[root@centos1 mswin1]# tail -1 /etc/fstab
//192.168.203.1/ms_share /mnt/mswin1 cifs noauto,user=lee,pass=1234,dir_mode=0755,file_mode=0644,noexec 0 0
[root@centos1 mswin1]#
noauto 옵션은 부팅할때 자동 마운트 하지 않는다.
dir_mode 및 file_mode 는 윈도우 자원을 마운트 했을때 퍼미션이 비정상적으로 표시될 수 있는데
그것을 제대로 설정하기 위한것이다.
ex)
[root@centos1 mswin1]# ls -l
합계 2
-rwxrwSrwx 1 root root 5 6월 26 11:23 2.txt
-rwxrwSrwx 1 root root 7 6월 26 12:26 abc.txt
-rwxrwSrwx 1 root root 26 6월 26 11:07 testfile.txt

*. 연결 상태는 linux 에서는 smbstatus 그리고 mswindows cmd 에서는 net use 로 확인할 수 있다.

[root@centos1 home]#
[root@centos1 mswin1]# mount.cifs //192.168.203.1/d$/ms_share /mnt/mswin1 -o user=lee,pass=xxxx
[root@centos1 mswin1]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 4956284 4530284 170168 97% /
/dev/sda5 497829 10544 461583 3% /data
/dev/sda2 1649488 684416 879928 44% /home
tmpfs 257720 0 257720 0% /dev/shm
//192.168.203.1/d$/ms_share
81923432 73597756 8325676 90% /mnt/mswin1
[root@centos1 mswin1]#

[root@centos1 mnt]# mount.cifs //192.168.203.1/d$/ms_share /mnt/mswin1 -o user=lee
Password:

root@centos1 home]# smbstatus
[root@centos1 samba]# smbstatus

Samba version 3.0.33-3.28.el5
PID Username Group Machine
-------------------------------------------------------------------

Service pid machine Connected at
-------------------------------------------------------
share2 3522 unixunix-lee Fri Jun 25 20:24:30 2010
public 3522 unixunix-lee Fri Jun 25 20:11:42 2010
public22 3522 unixunix-lee Fri Jun 25 20:24:31 2010
IPC$ 3522 unixunix-lee Fri Jun 25 20:12:40 2010

Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
------------------------------------------------------------------------------------------------------------------------------------
3522 99 DENY_NONE 0x100001 RDONLY NONE /home/samba . Fri Jun 25 20:16:18 2010


C:\Documents and Settings\lee>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크

-------------------------------------------------------------------------------
OK \\Centos1\public Microsoft Windows 네트워크
OK \\CENTOS1\PUBLIC22 Microsoft Windows 네트워크
OK \\CENTOS1\SHARE2 Microsoft Windows 네트워크
명령을 잘 실행했습니다.


C:\Documents and Settings\lee>
C:\Documents and Settings\lee>net use \\Centos1\public22
로컬 이름
원격 이름 \\Centos1\public22
리소스 유형 Disk
상태 OK
열린 수 1
연결 수 12
명령을 잘 실행했습니다.


C:\Documents and Settings\lee>net use \\Centos1\public
로컬 이름
원격 이름 \\Centos1\public
리소스 유형 Disk
상태 OK
열린 수 1
연결 수 12
명령을 잘 실행했습니다.

* 연결을 끊는경우
C:\Documents and Settings\lee>net use \\Centos1\public /del

* 연결을 전부 끊는경우
C:\Documents and Settings\lee>net use * /del
새 연결 정보가 저장됩니다.

*. pdbedit 로 삼바 계정을 관리할 수 있다.
[root@centos1 mswin1]# pdbedit -L
user2:1012:
suser1:1009:
user1:500:
smuser1:1011:
[root@centos1 mswin1]#

*. windows 에서 삼바서버 접속시 한글파일명이 깨져서 보이는 경우에는
다음과 같이 smb.conf 파일에 문자셋 설정을 하여야 한다.
# ----------------------- Network Related Options -------------------------
dos charset=euckr
unix charset=UTF-8

*. MSwindos 에서 웹페이지를 작성하여 /usr/local/apache/htdocs 디렉토리에 저장하는 경우
에는 아래처럼 하면 된다.
htdocs 에 파일을 저장할 수 있는 권한을 smbuser1 이라는 삼바계정으로 하고자 한다면
[root /etc/samba]# chown -R smbuser1 /usr/local/apache/htdocs
그리고 smbuser1의 계정으로 자신의 홈디렉토리에 htodcs 디렉토리를 심볼릭 링크 걸면된다.
[smbuser1@centos1 ~]$ ln -s /usr/local/apache/htdocs htdocs
여기까지 작업이 끝나면 mswindows 에서 쉽게 리눅스의 htdocs 에 파일을 저장할 수 있다.

*. iptables 을 사용하는 경우 remote에서 삼바서버에 접속하기 위해서 삼바서버포트를
열어둬야 한다.
[root@centhost ~]# vi /etc/sysconfig/iptables
아래 내용 추가

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

'Log > Linux' 카테고리의 다른 글

ACL (Access Control List)  (0) 2011.11.28
메일서비스(sendmail)  (0) 2011.11.28
IDS - snort 1  (0) 2011.11.28
tcpdump - packet capture / 분석  (0) 2011.11.28
포트스캔 및 차단  (0) 2011.11.28
Posted by logwatch

블로그 이미지
내가 나에게 확인 하는 블로그
logwatch

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함