역자 주] 이 글은 리눅스가제트
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 |
[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 |
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
|