본문 바로가기
시스템운영

[Linux ] samba

by inkul 2016. 1. 5.

[삼바]

SMB(Server Message Block) 프로토콜을 이용해 다른 OS간에 파일이나 프린터의 공유를 가능하게 해주는 패키지이다.

즉, 리눅스의 자원을 윈도우에서 사용할 수 있고, 반대로 윈도우의 자원을 리눅스에서 사용할 수 있도록 해준다.

http://www.samba.org/

[01] 삼바 yum으로 설치

# yum install samba* --skip-broken

[주의] 위에 samba를 yum으로 설치할때 " * "(아스타리크) 기호를 넣어준다!

Dependencies Resolved

=======================================================

Package             Arch     Version               Repository Size

=======================================================

Installing:

samba               i386     3.0.33-3.7.el5_3.1    updates    16 M

samba-swat          i386     3.0.33-3.7.el5_3.1    updates   8.2 M

Updating:

samba-client        i386     3.0.33-3.7.el5_3.1    updates   5.7 M

samba-common        i386     3.0.33-3.7.el5_3.1    updates   8.7 M

Installing for dependencies:

perl-Convert-ASN1   noarch   0.20-1.1              base       42 k

Transaction Summary

=======================================================

Install   3 Package(s)

Update    2 Package(s)

Remove    0 Package(s)

Total download size: 39 M

Is this ok [y/N]: y

Downloading Packages:

(1/5): perl-Convert-ASN1-0.20-1.1.noarch.rpm                   |  42 kB 00:00

(2/5): samba-client-3.0.33-3.7.el5_3.1.i386.rpm                | 5.7 MB 00:00

(3/5): samba-swat-3.0.33-3.7.el5_3.1.i386.rpm                  | 8.2 MB 00:00

(4/5): samba-common-3.0.33-3.7.el5_3.1.i386.rpm                | 8.7 MB 00:00

(5/5): samba-3.0.33-3.7.el5_3.1.i386.rpm                       |  16 MB 00:01

-------------------------------------------------------


[02] 설치된 패키지 확인

# rpm -qa | grep samba

samba-common-3.0.33-3.7.el5_3.1

samba-client-3.0.33-3.7.el5_3.1

samba-3.0.33-3.7.el5_3.1

samba-swat-3.0.33-3.7.el5_3.1


[03] 삼바 서비스 시작(데몬명 : smb)

# service smb start

SMB서비스를 시작 중:                                    [  OK  ]

NMB서비스를 시작 중:                                    [  OK  ]


[04] 환경 설정

# cd /etc/samba/

# ls

lmhosts  passdb.tdb  secrets.tdb  smb.conf  smbusers

# cp smb.conf smb.conf_old /* 삼바 메일설정파일 백업 */

# ls -al

-rw-r--r--   1 root root 20  7월 14 18:56 lmhosts

-rw-------   1 root root  4096  9월 28 10:32 passdb.tdb

-rw-------   1 root root  8192  9월 28 10:32 secrets.tdb

-rw-r--r--   1 root root  9733  7월 14 18:56 smb.conf

-rw-r--r--   1 root root  9733  9월 28 10:33 smb.conf_old

-rw-r--r--   1 root root 97  7월 14 18:56 smbusers

# vi smb.conf

--------------------------------------------------

/* 74 Line 이동 */

# workgroup = MYGROUP

  workgroup = WORKGROUP

/* 101 Line 이동 */

# security = user

  security = share

--------------------------------------------------

/* 각 라인별로 이동해서 동일하게 작업( # 은 주석문) */


[05] 삼바 설정을 다시 했으니 서비스 재시작

# service smb restart

SMB 서비스를 종료 중:                                   [  OK  ]

NMB 서비스를 종료 중:                                   [  OK  ]

SMB서비스를 시작 중:                                    [  OK  ]

NMB서비스를 시작 중:                                    [  OK  ]


[06] 테스트 두 가지 방법(첫번째로 확인하세요!)

# ifconfig eth0

eth0   Link encap:Ethernet  HWaddr 00:0C:29:F5:FC:40

      inet addr:192.168.10.XXX  Bcast:192.168.10.255  Mask:255.255.255.0

(첫번째) WinXP: [시작] -> [실행] -> \\리눅스아이피(eth0 IP)\

-> 접속해서 "프린터 및 팩스"가 나오면 정상이다!

(두번째) 내 네트워크 환경(더블 클릭) -> 전체 네트워크 ->

Microsoft Windows 네트워크 -> Workgroup ->

Samba Server Version (Localhost) = 확인!!!

[참고]

Samba Server Version (Localhost) 더블클릭하면 "사용 권한"에 대해서 나온다!


[07] WinXP에서 리눅스에 있는 /bin 디렉토리 공유 설정

# cd /etc/samba/

[root@localhost /]# vi /etc/samba/smb.conf

/* 문서 제일 마지막에 추가하자! */

----------------------------------------

# 2009-09-28 by leesangchul

[my_linux_bin_dir]

   comment = itclass samba server

   path = /bin

   public = yes

   writable = yes

   printable = no

----------------------------------------

■ 새로운 설정을 했으니 smb 서비스 재 시작

# service smb restart

SMB 서비스를 종료 중:                                   [  OK  ]

NMB 서비스를 종료 중:                                   [  OK  ]

SMB서비스를 시작 중:                                    [  OK  ]

NMB서비스를 시작 중:                                    [  OK  ]


[08] 설정한 공유 디렉토리 확인 : [my_linux_bin_dir]

WinXP: [시작] -> [실행] -> \\리눅스아이피(eth0 IP)\

■ 일반 유저는 /bin 디렉토리에 읽기와 실행은 가능하지만 쓰기 권한은 없다.

# ls -ld /bin

drwxr-xr-x 2 root root 4096  4월  8 04:43 /bin


[08] 실습

■ 리눅스 /samba_test/ 디렉토리를 공유한다.

WinXP에서 쓰기 권한을 준다.

***************************************************************************

리눅스 프로그램 삭제

(예)ossec가 설치 되어 있다는 가정

1.ossec 중지

2.ossec 프로그램이 rpm 버전인지 또는 소스버전인지 각각 삭제하는 방법이 다릅니다.

02-1. rpm일 경우

#rpm -e 프로그램이름

02-2. 소스(ossec.tar.gz.파일 형식일 경우

(01)ossec 데몬 중지

#ps -ed | grep ossec

#service ossec stop

or #/var/ossec/bin/ossec-control stop

(02)런레벨 등록 확인

#chkconfig --list |grep ossec

#chkconfig --del ossec

(03)디렉토리 삭제

rm -rf /var/ossec/

***************************************************************************

[01] 특정 유저에게만 공유

이제 security를 user로 설정하고 삼바유저에게만 디렉토리를 공유해 보자!

# cd /etc/samba/

# ls

lmhosts  passdb.tdb  secrets.tdb  smb.conf  smb.conf_old  smbusers


# vi smb.conf /* 101 Line 이동 */

--------------------------------------------------

# security = share

  security = user

--------------------------------------------------

/* security = user 변경한다. */

/* :wq! 저정하고 나온다. */


<리눅스 설정>

삼바 서버로 접속할 수 있는 사용자를 추가해 줘야 한다.

삼바 유저는 smbpasswd 명령어를 이용하여 리눅스 시스템에 등록된 유저만 추가할 수 있다.


<명령어위치> : /usr/bin/smbpasswd

<사용형식> :

smbpasswd [-a] [-c <config file>] [-x] [-d] [-e] [-D debuglevel] [-n]

    [-r <remote machine>] [-R <name resolve order>] [-m]

    [-U username[%password]] [-h] [-s] [-w pass] [-W] [-i] [-L] [username]


[root@localhost /]# smbpasswd -a doom

New SMB password: itclass

Retype new SMB password: itclass

Added user doom.

■ smbpasswd의 주요 옵션

-d : 삼바유저 사용정지

-e : 삼바유저 다시 사용

-n : 비밀번호를 설정하지 않음

-x : 유저 삭제

--------------------------------------------------

When run by root:

smbpasswd [options] [username]

otherwise:

smbpasswd [options]

options:

 -L           local mode (must be first option)

 -h          print this usage message

 -s               use stdin for password prompt

 -c smb.conf file    Use the given path to the smb.conf file

 -D LEVEL            debug level

 -r MACHINE        remote machine

 -U USER             remote username

extra options when run by root or in local mode:

 -a                     add user

 -d                     disable user

 -e                     enable user

 -i                      interdomain trust account

 -m                    machine trust account

 -n                     set no password

 -W                    use stdin ldap admin password

 -w PASSWORD     ldap admin password

 -x                     delete user

 -R ORDER           name resolve order

--------------------------------------------------

■ 리눅스에서 새로운 "공유 디렉토리"를 추가한다.

/share_dir 디렉토리를 만들고 이 디렉토리를 로그인한 사용자(doom 계정)에게 공유한다.

# mkdir /share_dir

# cd /share_dir/

# pwd

/share_dir

# touch 111.txt

# chmod 777 /share_dir/

# ls -ld /share_dir/

drwxrwxrwx 2 root root 4096  9월 28 11:16 /share_dir/


■ smb.conf 파일 제일 마지막에 새롭게 공유할 부분을 추가한다.

[root@localhost share_dir]# vi /etc/samba/smb.conf

----------------------------------------

# 2009-09-28 by lee_sang_chul

[이상철-samba-server]

  comment = leesangchul-samba-server

  path = /share_dir

  browseable =  yes

  writable = yes

----------------------------------------


■ 새로운 /share_dir 확인해보자!

(01) WinXP: [시작] -> [실행] -> \\리눅스아이피(eth0 IP)\

(02) [이상철-samba-server] 보이는지 확인!

(03) 보이지 않고, Error 메시지가 보이면, 설정값과 아래 XP 설정을 보기 바란다.


[문제해결] WIN XP -> [시작] -> [설정] -> [제어판] -> [보안 센터] 더블 클릭 후

"Windows 방화벽 - 사용 안함"으로 설정한다!

[문제해결] WIN XP -> [시작] -> [설정] -> [제어판] -> [사용자 계정] 더블 클릭 후

"Guest 계정을 사용"으로 설정한다!

[문제해결] 또는 Guest 계정에 "사용함"으로 설정하고, 암호(itclass)를 넣어주면 된다!


[02] 리눅스에서 윈도우의 공유폴더(c:\samba 디렉토리) 접속

smbclient 명령어를 이용해서 리눅스에서 윈도우의 공유 디렉토리에 접속해 보자!

(01) c:\samba 디렉토리를 만든다.

디렉토리 속성창을 열어 디렉토리를 "공유" 설정을 한다.

(02) 이제 sbmclient를 이용하여 리눅스에서 윈도우의 공유 디렉토리로 접속해 보자.

<명령어위치> : /usr/bin/smbclient

<사용형식> :

사용법: smbclient [-?] [-?EgV] [-?EgV] [-?EgVNkP] [-?|--help] [--usage]

    [-R|--name-resolve NAME-RESOLVE-ORDER] [-M|--message HOST]

    [-I|--ip-address IP] [-E|--stderr] [-L|--list HOST] [-t|--terminal CODE]

    [-m|--max-protocol LEVEL] [-T|--tar <c|x>IXFqgbNan] [-D|--directory DIR]

    [-c|--command 문자열(STRING)] [-b|--send-buffer BYTES] [-p|--port PORT]

    [-g|--grepable] [-d|--debuglevel DEBUGLEVEL]

    [-s|--configfile CONFIGFILE] [-l|--log-basename LOGFILEBASE]

    [-V|--version] [-O|--socket-options SOCKETOPTIONS]

    [-n|--netbiosname NETBIOSNAME] [-W|--workgroup WORKGROUP]

    [-i|--scope SCOPE] [-U|--user USERNAME] [-N|--no-pass] [-k|--kerberos]

    [-A|--authentication-file FILE] [-S|--signing on|off|required]

    [-P|--machine-pass] service <password>

[참고] WinXP 에서 "Guest 계정을 사용함"으로 설정하고 암호를 지정해줘야 한다.

"Guest 계정 사용함"

"암호" : itclass


[예제.01] 암호 입력시

# smbclient //윈도우로컬아이피/samba

Password: itclass

session setup failed: NT_STATUS_LOGON_FAILURE

/* Error 화면 */

[예제.02] 암호 입력 없이 [Enter] 했을 경우

# smbclient //윈도우로컬아이피/samba

Anonymous login successful

Domain=[IT2] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

tree connect failed: NT_STATUS_ACCESS_DENIED

/* Error 화면 */

[예제.03] 암호 입력하고 정상적인 접속 화면

Domain=[IT2-TEACHER] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

smb: \> ls

NT_STATUS_ACCESS_DENIED listing \*

            49999 blocks of size 2097152. 37206 blocks available

smb: \> quit

/* Error 화면 */

[예제.04] doom 계정으로 접속하면 정상적으로 된다!

# smbclient //121.166.120.XXX/samba -U doom

Password:

Domain=[IT2-TEACHER] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

smb: \> ls

 .                                D     0  Mon Sep 28 11:53:12 2009

 ..                               D     0  Mon Sep 28 11:53:12 2009

 새 텍스트 문서.txt         A     0  Mon Sep 28 11:53:12 2009

            49999 blocks of size 2097152. 37205 blocks available

smb: \> quit


* 비밀번호를 입력하여 정상적으로 접속되면 smb: \> 프롬프트가 나타난다.

* 비밀번호가 없다면 입력하지 않아도 된다.

* 만약, 특정 사용자의 인증이 필요하다면 아래와 같이 -U 옵션을 추가해 준다.


(03) smbstatus 명령어(삼바 접속자 보기)

[root@localhost ~] # smbstatus

Samba version 3.0.23a-1.fc4.1

PID Username   Group      Machine

-------------------------------------------------------------------

Service   pid machine    Connected at

-------------------------------------------------------

No locked files

[root@localhost ~] #


(04) testparm 명령어(삼바 설정파일 점검 확인)

# testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[printers]"

Processing section "[my_linux_bin_dir]"

Processing section "[이상철-samba-server]"

Loaded services file OK.

WARNING: You have some share names that are longer than 12 characters.

These may not be accessible to some older clients.

(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

[global]

    server string = Samba Server Version %v

    passdb backend = tdbsam

    cups options = raw

[homes]

    comment = Home Directories

    read only = No

    browseable = No

[printers]

    comment = All Printers

    path = /var/spool/samba

    printable = Yes

    browseable = No

[my_linux_bin_dir]

    comment = itclass samba share

    path = /bin

    read only = No

    guest ok = Yes

[이상철-samba-server]

    comment = leesangchul-samba-server

    path = /share_dir

    read only = No


(05) 삼바 접속후 사용가능한 명령어

smb: \> help

?           altname     archive     blocksize   cancel

case_sensitive cd          chmod       chown       del

dir         du          exit        get         getfacl

hardlink    help        history     lcd         link

lowercase   ls          mask        md          mget

mkdir       more        mput        newer       open

print       prompt      put         pwd         q

queue       quit        rd          recurse     reget

rename      reput       rm          rmdir       setmode

stat        symlink     tar         tarmode     translate

volume      vuid        logon       listconnect showconnect

!

smb: \>

==========================================================================

testparm

잘못된 부분이 있으면, 스스로 테스트 해서 확인된 부부이 나온다.

===========================================================================


'시스템운영' 카테고리의 다른 글

[ UNIX/LINUX ] Shutdown  (0) 2016.07.12
[ Mac ] 맥 OS 에서 root 계정 관리 하기  (0) 2016.01.05
[Linux ] samba  (0) 2016.01.05
Linux 보안일반사항  (0) 2016.01.05
[UNIX] Shared Memory 설정  (0) 2016.01.05
[ solaris ] crontab  (0) 2016.01.05

댓글0