삼바, 윈95,  NT,  HP Jetdirect 프린터서버

글쓴이 :  Eugene Blanchard
번역 : 배철수 / 리눅스월드 발행인

 

     

    역자 주]  이 글은 리눅스가제트 48호 기사입니다.

    나는 전용장비에 라우팅 원리를 가르치는 연구소를 운영하고 있다. 피시 9 대, 서버 1 대, HP Jetdirect 프린터 서버 카드가 장착된 HP 레이저젯 4050N 프린터 등이 있고 18개의 좌석이 있다.

    서버는 커널 2.2.6을 사용하는 슬랙웨어 4.0 리눅스이고, 피시 중 8 대는 NT 4.0, 1 대는 윈95이다.

    내가 리눅스 서버에 필요로 하는 기능은 아래와 같다.

      1. 주 도메인 콘트롤러가 아닌 워크그룹 서버
      2. 마스터 웹브라우저
      3. 각 사용자의 홈디렉토리 공유
      4. public 디렉토리를 사용자 간에 공유
      5. 서버의 시디롬 드라이브 공유
      6. HP 레이저젯 프린터 공유

    두 가지의 선택이 가능한데 NFS를 사용하고 각 클라이언트를 리눅스 서버에 연결하도록 구성하는 것과 삼바를 사용하고 단지 리눅스 서버만 셋업하는 것이었다.

    연구소 운영 중에는 클라이언트는 정기적으로 재 구성 되고 리부팅 후 재 설정한다. SAMBA 를 사용하면 리눅스 서버는 윈도우 클라이언트에 투명하고 클라이언트 설정도 간편하다는 결론에 도달했다.

    이 글은 아래의 경우를 설명한다.

      1. 슬랙웨어에서 삼바 셋업
      2. 윈95로부터 연결 및 로그온
      3. 암호화된 패스워드를 사용하는 NT로부터의 연결 및 로그온
      4. 리눅스를 HP Jetdirect 프린터서버에 연결하는 방법
      5. 삼바를 사용하여 리눅스 프린터를 공유하는 법

    주▶  이 글은 HOWTO 형식의 글이 아니고 실제 작동하는 구성 예이며 삼바를 구성하는
            과정이다.

 

삼바 설치

    설치 과정은 배포본에 따라 다르다. 슬랙웨어라면 리눅스 설치 과정에서 선택하든지 기존 시스템에서는 pkgtool 프로그램을 사용하라.

    슬랙웨어에서는 “/etc/rc.d/rc.samba” 파일에서 삼바를 시작한다.
     

    #
    # rc.samba: Start the samba server
    #
    if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd ]; then
       echo “Starting Samba...”
       /usr/sbin/smbd -D
       /usr/sbin/nmbd -D
    fi

     

    smbd 프로그램은 클라이언트에게  SMB/CIFS 서비스를 제공한다.
    SMB (Server Message Block) 는 윈95 나 NT 클라이언트가 네트워킹을 하는데 사용되는 서비스이다. SMB의 새 이름은 Common Internet File System (CIFS) 이다.

    nmbd 프로그램은 클라이언트에게 IP 네트워크에서 NETBIOS 네임서비스를 허용하는 NETBIOS 네임서버이다.

    “ps  -aux” 명령으로 실행 중인 프로세스를 볼 수 있으므로 smbd 와 nmbd 실행 여부를 확인 할 수 있다.

    아래는 실행 결과다.
     

 USER   PID  %CPU  %MEM   VSZ   RSS  TTY  STAT   START   TIME   COMMAND
root      1       0.0       0.2      220    128    ?      S       Oct21    0:02        init  
root      2       0.0       0.0       0       0       ?     SW     Oct21    0:00    [kflushd]
root      3       0.0       0.0       0       0       ?     SW     Oct21    0:00    [kpiod]
root      4       0.0       0.0       0       0       ?     SW     Oct21    0:00    [kswapd]

root    101      0.0      0.5    1544    380     ?      S      Oct21    0:00   /usr/sbin/smbd -D
root    103      0.0      0.9    1196    584     ?      S      Oct21    0:03   /usr/sbin/nmbd -D

root    8113    0.4       0.9   1164     616   ttyp0  S     11:14      0:00     -bash
root    8120    0.0       1.1   2272     744   ttyp0  R     11:14      0:00     ps -aux

     

삼바 구성 파일

    삼바 구성파일은 /etc/smb.conf 이다. /usr/doc/samba-2.0.3/examples 에 많은 구성 파일 예가 있다.

    /etc/smb.conf 는 3개의 일반 섹션(section)으로 나뉜다.

         . Global
         . Shares
         . Printers

    Global section 은 workgroup이름 , netbios이름, 사용되는 IP 인터페이스와  같은 글로벌 파라메터를 다룬다.

    예를 들면
     

# Global parameters

workgroup = E328                          # workgroup name
netbios name = E328-00                # Linux server’s netbios name
server string = %h - Linux Samba server   # comment shown in Win’s Network
                                                                Neighborhood detail view
interfaces = 192.168.1.3/24            # NICs + subnet mask (24 = 255.255.255.0)
encrypt passwords = Yes               # Required for NT (Win95 will  work with encrypted or not)
null passwords = No                      # Must have a password
log file = /var/log/samba.              # location of samba log files (many!)
max log size = 50                         # maximum size of each log file
socket options = TCP_NODELAY    # Speeds up convergence of netbios
os level = 33                                # Gives a higher browse master “priority”
preferred master = Yes                  # This server is the browsemaster
guest acco

unt = pcguest                              # guest account name
hosts allow = 192.168.1. 127.        # networks allowed to access this server using SMB

     

    Shares section 은 파일 디렉토리의  공유를 설정한다.

    예]
     

[homes]
comment = Home Directories       # comment shown in Win’s  Network
                                                    Neighborhood detail view
path = %H                                  # automatically display user’s home
                                                    directory as SMB share
valid users = %S             # Only user is allowed to access this directory
read only = No                # can read/write
create mask = 0750         # permissions given when creating new files
browseable = No             # only show user’s home directory not “homes” folder

[public]
comment = Public Files    # comment shown in Win’s Network Neighborhood detail view
path = /home/ftp/pub      # path to public directory
guest ok = Yes                # anyone can access this directory

[cdrom]
comment = Cdrom on E328-00     # comment shown in Win’s  Network Neighborhood
                                                     detail view
path = /cdrom                 # path to cdrom drive
guest ok = Yes                # anyone can access cdrom drive, public share

     

    Printers section 은 프린터 공유를 지정한다.

    예를 들면
     

    [lp]
    comment = E328-Laser            # comment shown in Win’s Network
                                                     Neighborhood detail view
    path = /var/spool/samba          # path to spool directory
    print ok = Yes                          # allowed to open, write to and submit to
                                                     spool directory

     

    각 항목이 무엇을 의미하는지 안다면 /etc/smb.conf 파일을 직접 만들 수도 있고, 웹 화면에서 SWAT (SAMBA Web Administration Tool)을 이용해서도 가능하다.

    SWAT을 사용하는 또 하나의 이점은 가능한 선택을 설명하는 온라인 핼프(help)이다.
    SWAT는 삼바 2.0 이후에서는 자동으로 설치된다.

    SWAT 실행

    아래 설명은  /usr/doc/samba-2.0.3/swat/README 파일에서 가져왔다.
     

    inetd 에서 실행하기

    SWAT이 inetd 에서 실행되려면 /etc/inetd.conf와 etc/services 파일을 수정해야 한다.
    /etc/services에 아래 라인을 추가한다.

     swat    901/tcp

    포트(port) 번호는 중요하지 않다. 단지 1024 보다 적고 현재 사용 중이 아니어야 한다. (1024 보다 큰 숫자를 사용하는 것은 inetd 데몬의 설정에 따라 보안에서의 문제를 일으킬 수 있다)

    /etc/inetd.conf 에 아래 라인을 추가한다.

    swat stream tcp nowait.400 root    /usr/local/samba/bin/swat swat

    수정했으면 inetd에  HUP 신호를 보내야 한다. 많은 경우 “killall -1 inetd” 명령으로 가능하다.
    다른 경우는 “kill -1 PID” 을 실행한다. PID 는 inetd 데몬의 ID 이다.

     

가 동 (Launching)

    SWAT을 가동하려면 웹브라우저에서 http://localh-
    ost:901 을 실행한다. SWAT 을 다른 IP 주소를 갖는 호스트에서도 가동할 수 있지만 원격호스트로부터 연결하면 패스워드가 네트워크를 통해 보내지므로 패스워드 누설이 일어날 수 있다. 연결하면 계정명과 패스워드를 묻는다. root 계정과 패스워드를 넣어야 한다.

    SWAT 이 가동하면 아래 화면을 볼 수 있을 것이다.
    메뉴 버튼은 글자 그대로이다. 도움말(help)도 잘 갖추어져 있다. 메뉴를 간단히 설명하면

        Home      : 메인 페이지로 간다.
        Globals    : 글로벌 파라메터를 구성하게 해준다.
        Shares     : 디렉토리 공유를 설정한다.
        Printers    : /etc/printcap 파일에서 프린터 설정을 해준다.
        Status      : smbd 와 nmbd 를 시작하고 멈추게 해주며 상태도 표시한다.
        View        : /etc/smb.conf 파일을 보여 준다.
        Password : 서버의 패스워드와 계정을 변경하게 한다.

    섹션의 구성을 변경했으면 해당 페이지에서 commit 버튼/아이콘을 눌러야 변경이 적용된다. 그렇지 않으면 /etc/smb 파일은 변경되지 않는다.

    변경이 이루어 졌으면 smbd 와 nmbd 서버가 재 실행되어야 한다. Status 메뉴에 서버를 중단 및 재 실행하는 옵션이 있다.
    진행과정을 알 수 있는 가장 좋은 방법은 수정을 하고서 SWAT 의 View 버튼으로 /etc/smb.conf 파일의 내용을 보는 것이었다.

     

계정 명

    리눅스와 윈도우 환경 양 쪽 다 같은 계정명과 패스워드를 사용하는 것이 중요하다. 리눅스의 패스워드와 SMB의 암호화된 패스워드의 연동은 /usr/lib/sam-ba/private 디렉토리의 mksmbpasswd.sh 쉘스크립트를 사용하여 이루어진다. 슬랙웨어에서 삼바의 디렉토리는 일반적으로 사용되는 /usr/local 이 아니라 /usr/lib 이다.

    아래 정보는 /usr/doc/samba-2.0.3/docs/textdocs/E-NCRYPTION.txt 파일에서 가져 왔다.
     

    smbpasswd 파일

    삼바가 위의 프로토콜에 참여하기 위해서는 그 사용자 이름에 주어진 16 바이트의 해쉬 값을 찾을 수 있어야 한다. 아쉽게도 유닉스의 패스워드 값도 일방 해쉬 기능이므로(즉 주어진 유닉스의 해쉬 값에서 사용자 패스워드 텍스트를 추출하는 것은 불가능하다.) 이 16 바이트 값을 갖는 별도의 패스워드 파일이 만들어져야 한다. 두 개의 패스워드 파일로 인한 문제를 최소화하기 위해 즉 유닉스의 /etc/passwd 파일과 smbpass-wd 파일이 불일치하는 것을 막기 위해 유닉스의 /etc/passwd 로부터 smbpasswd 파일을 만드는 mksmbpasswd.sh 유틸리티가 제공된다.

    /etc/passwd 파일에서 smbpasswd 파일을 만들기 위해 아래 명령을 사용하라.

    cat /etc/passwd | mksmbpasswd.sh  >/usr/local/samba/private/smbpasswd

     

    이 단계에서의 문제는 나는 쉐도우 패스워드를 인식해서 자동으로 smbpasswd 파일에 넣어 줄 걸로 기대 했는데 그렇지 않았다. 그래서 나는 smbpasswd 명령을 사용해서 수동으로 패스워드를 넣어야 했다. 다행히 나는 오직 10 개의 패스워드만 넣으면 되었지만  이것을 자동으로 하는 방법이 있을 것이다. 하지만 나는 알지 못한다.

    완성되었을 때 윈도우의  네트워크 환경에서 리눅스를 연결해 계정과 패스워드 없이 공유 리눅스 디렉토리 사용이 가능해 졌다.

     

    리눅스로 HP JetDirect 카드 설정하기.

    리눅스와  HP JetDirect 카드를 상호 연계하는 것은 매우 쉽다. JetDirect는 HP 4050N 프린터에 장착된 프린터 서버카드이다.( 2100TN 모델에도 있고 독립된 3 포트 짜리도 있다) 표준 인스톨 디스크에서는 리눅스를 지원하지 않지만
    HP 웹사이트;http://www.h- p.com/support/net_printing 에서 다운 받을 수 있는 WebAdmin 도구가 있다. 나는 telnet 으로 JetDirect 카드의 내장된 웹서버를 가동해 수동으로 설정하는 방법을 선택했다.

     

JetDirect 카드로의 telnet

    JetDirect 카드로 telnet 하려면 프린터에 IP 주소를 부여해야 한다.
    디폴트 주소는 192.0.0.192 이지만 아마 당신의 네트워크에서는 사용 않는 주소 일 것이다.
    HP 4050N 프린터는 프린터의 패널에서 IP 주소를 설정할 수 있다. 메뉴버튼에서 “JetDirect Menu” 를 선택해라. 네트워크를 셋업하는데 지시대로 따르면 된다. IP 주소가 지정되면 서브네트마스크도 넣어야 한다.

    -------------------------------------------------------------------
    역자 주]

    프린터 패널이 없는 Jetdirect 카드를 갖는 레이저프린터(2100TN)를 초기에 설정하려면 우선 윈95의 IP 주소를 192.0.0.? 으로 맞추고 프린터를 켠 후 초기 IP 주소(192.0.0.192)로 telnet 한다. 여기에서 “?” 키를 누르면 셋팅하는 방법이 나온다.

    아래는 리눅스 월드 사무실에 설치된 HP 2100N 프린터에 장착된 Jetdirect 카드로 리눅스에서 telnet한 결과다.
    IP 주소가 192.168.1.8 이다.
     

    [bae@linux bae]$ telnet 192.168.1.8
    Trying 192.168.1.8...
    Connected to 192.168.1.8.
    Escape character is ‘^]’.

    HP JetDirect

    Please type “?” for HELP, or “/” for current settings
    >


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

    telnet 으로 프린터로 들어가면 두 가지 옵션이 있다. “/” 키를 눌러 현재의 셋팅을 볼 수 있고 “?” 키를 눌러 도움 메뉴를 볼 수 있다.
     

    Please type “?” for HELP, or “/” for current settings
    >/
       ===JetDirect Telnet Configuration===
            Firmware Rev.   : G.07.20
            MAC Address    : 00:10:83:1b:41:c7
            Config By         : USER SPECIFIED
     
            IP Address         : 192.168.1.10
            Subnet Mask      : 255.255.255.0
            Default Gateway : 192.168.1.1
            Syslog Server     : Not Specified
            Idle Timeout       : 120 Seconds
            Set Cmnty Name : notachance
            Host Name         : E328-LASER
     
            DHCP Config     : Disabled
            Passwd             : Enabled
            IPX/SPX            : Disabled
            DLC/LLC           : Enabled
            Ethertalk            : Disabled
            Banner page      : Disabled   

      >?
            To Change/Configure Parameters Enter:
            Parameter-name: value  
     
            Parameter-name  Type of value
            ip:                      IP-address in dotted notation
            subnet-mask:      address in dotted notation
            default-gw:         address in dotted notation
            syslog-svr:          address in dotted notation
            idle-timeout:        seconds in integers
            set-cmnty-name: alpha-numeric string (32 chars max)
            host-name:         alpha-numeric string (upper case only, 32 chars max)
            dhcp-config:       0 to disable, 1 to enable
            ipx/spx:              0 to disable, 1 to enable
            dlc/llc:                0 to disable, 1 to enable
            ethertalk:             0 to disable, 1 to enable
            banner:               0 to disable, 1 to enable

            Type passwd to change the password.

    Type “?” for HELP, “/” for current settings or “quit” to save- and-exit.
    Or type “exit” to exit without saving configuration parameter entries

 

    첫 번 작업은 passwd 를 입력해서 관리자 패스워드를 넣는 것이다. 다음에 디폴트게이트웨이와 호스트네임을 넣어라. 나머지는 프린터의 내장 웹서버를 사용해 구성한다.

     

HP JetDirect 웹툴(Webtool)

    HP JetDirect 웹툴은 6 개의 메뉴탭(맨 위에 있음)을 갖고 있다.

    1. Status Tab

    현재의 프린터 상태 및 네트워크 상태를 표시한다.

    2.  Identity

    현재의 소프트웨어, 하드웨어 버전 및 호스트네임,  IP 주소를 보여 준다.

    3. Configuration

     TCP/IP (디폴트 protocol), IPX/SPX, DLC/LLC, Ethertalk, SNMP 구성을 지정한다..

    4.  Security

     관리자 패스워드 및 SNMP community name 구성을 지정한다.

    5.  Diagnostics

     TCP/IP, IPX/SPX, DLC/LLC, Ethertalk, 프린터,  Jetdirect 의 정보 및 통계를 보여 준다.

    6.  Support

    HP 지원 웹사이트로 안내한다.

    리눅스에서  JetDirect로 인쇄하기

    리눅스에서 Jetdirect 프린터서버로 인쇄하기 위해서는 /etc/printcap 파일을 수정해야 한다. 나는 새로운 /usr/spool/lj4050n 이라는 spool 디렉토리를 만들었다. 그러나 기존의 /usr/spool/lpd 디렉토리도 사용할 수 있다. /usr/spool 은 /var/spool 디렉토리의 소프트링크이다.

    아래는 HP JetDirect 프린터 서버를 위한 /etc/print-cap 파일 내용이다.
     

    # HP Laserjet 4050n

    lp|lj4050n:\
           :lp=/dev/null:sh:\
           :mx#0:\
           :sd=/usr/spool/lj4050n:\
           :rm=e328-laser.domainname.com:rp=text:

     

    각각을 설명하면

      1. lp|lj4050n:\
          디폴트 프린터 “lp” 를 lj4050n 이란 별명이나 주석으로 지정한다.
          별명 내에 공백이 있으면 주석으로 인식한다.

      2. :lp=/dev/null:sh:\
          프린터가 물리적인 포트(즉 lpt 포트)에 연결되어 있지 않음을 표시한다.

      3. :mx#0:\
          프린터로 보내는 파일 크기에 제한이 없음을 표시한다.

      4. :sd=/usr/spool/lj4050n:\
          spool 디렉토리(프린터에 인쇄될 파일의 임시 저장 디렉토리)를 표시해 준다.

      5. :rm=e328-laser.domainname.com:rp=text:
           프린트 작업을 보낼 프린터의 도메인네임(FQDN)과 파일 포맷을 지정한다.
           HP 에서는 text와 raw 중 하나다. 그러나 프린터가 자동으로 텍스트 파일,
           포스트스크립트 파일(postscript), PCL파일을 구별해 주었다.

    역자 주▶  /etc/hosts 파일에 프린터의 ip address와 도메인네임(FQDN)을 넣어야 한다.
                  또는 DNS의 호스트 파일에 넣어도 된다.

    예]
    192.168.1.10   e328-laser.domainname.com

 

윈도우에서 리눅스 프린터 공유 설정하기

    네트워크환경에서 리눅스 서버의 공유프린터 아이콘을 더블 클릭하라. 윈도우는 그 프린터를 구성할 것을 요청한다. 나는 리눅스 박스에서 프린터의 설치 CD를 공유하고 있으므로 INF 파일을 찾기 위해 디스크 1 폴더로 갔다. 프린터 설치 화면에서 2 번 디스크를 찾을 수 없다는 메시지가 나오면 2 번 디스크 폴더로 간다. 설치가 확실한지를 알기 위해 테스트페이지를 인쇄한다.

    정상 설치 과정은 CD로 부터 셋업 유틸리티를 실행하는 것이다. 이는 클라이언트에 수 메가의 파일을 설치하는 데 나는 이것을 원하지 않았다. 나는 오직 프린터 드라이버만을 원했고 위의 방법이 내게 빠르고 깨끗하고 간편한 프린터 설치를 해 주었다.

     

요 약    

    삼바를 구성해서 연구소의 목적에 맞추는 것은 무척 쉬웠다. 삼바를 띄우고 윈95와 연결하는 것은 10분이면 족했다. 나는 그전에 삼바에 대해 전혀 몰랐으므로 놀랍다.

    연구소의 환경을 맞추는데서 나는 몇 가지 문제에 부딪혔다. 몇몇은 까다롭고 몇몇은 얼마간의 일을 필요로 했으나 모두 해결되었다. 까다로운 문제의 하나는 [homes] 폴더가 클라이언트의 공유로 나타나게 하는 것이었다. 이는 클라이언트의 홈과 동일했다. /etc/smb.conf 에서 Global 섹션에서 “Browseable = No” 를 선택함으로서 그 문제를 해결했다.

    가장 어려웠던 문제는 smbpasswd 파일이 쉐도우 패스워드 파일에서 패스워드를 자동으로 변환해 주지 못하는 것이었다. 나는 네트워크 공유로 연결할 때마다 계정명과 패스워드 입력을 요구 받았다. 모든 문서는 내가 모든 것을 정확히 설정했다고 알려 줬다. 수작업으로 smbpasswd 명령을 써서 각 사용자의 계정명과 패스워드를 입력해 이 문제를 해결했다. 나는 이 문제를 자동으로 해결하는 방법이 있을거라 본다. 만약 사용자가 많다면 이 방법은 사용하기 힘들터이니까.

    결론으로 나는 NT를 쓸 때 보다  더 쉽고 빠르게 네트워크를 구성했다. 그리고 사용자들에게는 리눅스 서버는 전혀 투명하다. (즉, 전혀 리눅스 서버가 있음을 감지하지 못한다. 리눅스 서버는 단지 또 다른 윈도우 시스템으로 보인다.)

    정말 재미있는 사실은 이 글을 쓰는 것이 위의 모든 네트워크를 구성하는 것 보다 더 오래 걸렸다는 것이다.

    Copyright (c) 1999, Eugene Blanchard
    Published in Issue 48 of Linux Gazette, December 1999




▲ top

home으로...