Gentoo-WiKi

본문 바로가기
사이트 내 전체검색


Gentoo Linux >> System Administration for Gentoo Linux
[목차]
제6장 Server Administration

    6. Samba3/CUPS/ClamAV 설치하기

6.1. 설치단계에 대한 소개


여기에선 다음 주제에 대해서 다룹니다.:

On the Samba server:

ClamAV 설치와 설정

Samba 설치와 설정

CUPS 설치와 설정

CUPS에 프린터의 추가

Windows clients를 위한 PS 드라이버 추가

On the Unix clients:

CUPS의 설치와 설정

디폴트 프린터 설정

Windows 나 Samba 공유의 마운팅


요구사항은 다음과 같습니다.

net-fs/samba

app-antivirus/clamav

net-print/cups

net-print/foomatic

net-print/hpijs (만약 HP 프린터를 사용한다면)

커널 (2.4.24+ 나 2.6.x 권장)

프린터(PS 혹은 non-PS)

컴퓨터가 하나 이상으로 구성된 네트워크


  주 패키지로 우리는 net-fs/samba를 사용하나 samba나 윈도우의 공유에 접근하기 위해 smbfs를 지원하는 커널 또한 필요합니다. CUPS 또한 설치가 되어있지 않으면 자동으로 설치될 것이며 바이러스 엔진으로 app-antivirus/clamav를 사용하게 될것입니다. 다른 바이러스 엔진을 사용할 수 도 있는데 이유는 Gentoo samba의 ebuild가 다른 바이러스 엔진 또한 지원을 하게 만들어 졌기 때문입니다.


6.2. Samba와 친해지기


The USE Flags


  설치하기 전에 Samba에서 사용가능한 USE 플레그를은 다음과 같습니다.

USE="kerberos mysql xml acl cups ldap pam readline python oav libclamav"


  네트워크 토폴로지와 특정 서버의 필요 사항들이 아래에 정의 되어 있는데 설치(emerge)시 추가 시키거나 뺄수 있습니다.


USE flag 설명


- kerberos : Kerberos 지원하게합니다. Domain이나 Active Directory에 가입하고자 할 때 사용하는 플래그이다.

- mysql : 패스워드 인증을 MySQL을 통하여 사용하게 하기 위한 플래그입니다. 이것은 데이터베이스안에 ACLs, usernames, passwords, 기타 들을 넣게됩니다.

- xml : xml USE 옵션은 패스워드 데이터베이스를 XML파일안에 저장하게 하는 플래그입니다.

- acl : Access Control Lists을 활성화 하는 플래그입니다. 

- cups : Common Unix Printing System을 지원하도록 하는 플래그입니다. 이것은 로컬 프린터를 네트워크를 통해서 공유를 할 수 있도록 해줍니다.

- ldap : Lightweight Directory Access Protocol (LDAP)를 지원하게 해주는 플래그입니다. 만일 Samba가 Active Directory를 사용하도록 한다면 이 옵션을 반드시 사용해야만 합니다. 그래야만 Domain/Active Directory 서버에서 로그인 될 수 있기 때문입니다.

- pam : Pluggable authentication modules (PAM)을 사용하게 해주는 플래그입니다. 

- readline : Samba가 libreadline을 사용하도록 해주는 플래그로, 이 옵션은 꼭 해주기 바랍니다.

- python : Python을 사용할 수 있도록 해주는 플래그입니다. 

- oav : Samba 공유를 바이러스 엔진을 통해서 검사하게 해주는 플래그로 생각하면 되겠습니다. 지원되는 바이러스 엔진은 FRISK F-Prot Daemon, Kaspersky AntiVirus, OpenAntiVirus.org ScannerDaemon, Sophos Sweep (SAVI), Symantec CarrierScan, Trend Micro (VSAPI)입니다. 

- libclamav : clamd daemon 대신 ClamAV library 를 사용하게 해주는 플래그입니다. 



6.3. 서버 소프트웨서 설치


Samba 설치하기


  먼저 호스트네임이 정확한지 확인 하도록 한다. 만일 맞지 않다면 가끔 cupsaddsmb가 잘못된 곳으로 가리켜 공격으로 오인 받을 수 있기 때문입니다.


  다음 명령으로 Samba에서 사용할 플래그를 설정합니다.

# echo "net-fs/samba oav readline cups pam" >> /etc/portage/package.use

# emerge net-fs/samba


  이렇게 하면 Samba 와 CUPS를 설치 할 것입니다.


ClamAV 설치하기


  oav USE 플래그는 단지 바이러스 스캐닝을 접근하는 인터페이만 생성시키기 때문에 실제로 바이러스 스캐너를 반드시 설치해야 합니다. 여기에서는 Clam AV를 사용하도록 하겠습니다.

# emerge -av app-antivirus/clamav



foomatic 설치하기


# emerge -av net-print/foomatic



프린트 드라이버 설치하기


  자신의 프린터가 HP이면 다음과 같이 설치하도록 합니다.

# emerge net-print/hpijs



6.4. Server Configuration


Samba 설정하기


  주 Samba 설정파일은 /etc/samba/smb.conf입니다. 이것은 [sectionname]으로 구분 되어있는데, 주석은 # 나 ;으로 되어있습니다. 처음 설치를 했다면 샘플 smb.conf.example이 포함되어있는데 주석이 달려있는 것은 변경을 권장하는 것이다. 만일 더 많은 설명이 필요하다면 smb.conf 맨페이지를 참조하거나 웹사이트를 참조하기 바랍니다.


[global]

# MYWORKGROUPNAME 를 자신의 작업그룹이나 도메인으로 변경한다.

workgroup = MYWORKGROUPNAME

 

# 다른 사람들이 이 서버는 윈도우가 아니다는 것을 알려주기 위해 서버 정보를 달아준다.

server string = Samba Server %v

 

# cups를 사용하겠다고 명시

printcap name = cups

printing = cups

load printers = yes

# 로그를 남기기위한 설정으로 여기서는 /var/log/samba 디렉토리에 log.분 형식으로 로그를 남기고

# 로그 사이즈가 50kb를 넘기지 않게 하기 위해 크기를 설정했다.

log file = /var/log/samba/log.%m

max log size = 50

 

# 인터페이스에 약간의 설정을 해주었다.

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

 

# Samba서버가 어떤 네트웍 인터페이스 카드에 붙을 것인지 지정해주는 것인데

# 여기서는 로컬(lo)과 eth0 네트웍카드에만 바이딩이 되게 하였다.

interfaces = lo eth0

bind interfaces only = yes

 

# 특정 클라이언트의 접근과 비접근을 설정하는 옵션으로

# 여기에 들어가는 해당 클라이언트는 암호를 사용하지 않고도 안심하고 사용하겠다는 의미와 같다.

hosts allow = 127.0.0.1 192.168.1.0/24

hosts deny = 0.0.0.0/0

 

# 다른 옵션으로 USER, DOMAIN, ADS, SERVER가 있는데 디폴트는 user이다

security = share

 

# 암호가 없는 손님계정을 사용하겠다고 선언.

guest account = samba

guest ok = yes

 

 

# 바이러스 스케너를 작동 시키는 옵션인데 만일 이 란을 [Global] 섹션에 놓게되면

# 바이러스 스케너는 모든 공유 자원을 검사하게 된다. 만일 특정 공유만을 검사하기

# 원한다면 특정 공유 항목에 놓을 수도 있다

# ClamAV의 활성화 (Samba 3.x.이상에서 가능)

vfs object = vscan-clamav

vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

 

# 프린터 드라이버 정보 설정

[print$]

comment = Printer Drivers

path = /etc/samba/printer # 이 디렉토리는 드라이버 구조(structure)를 담고있다.

guest ok = yes

browseable = yes

read only = yes

# 만일 root 혼자만 프린터 관리자로 하고 싶지 않다면 "username,root" 이렇게 바꾸면 된다.

write list = root



# 공유를 위한 프린터 설정인데 name은 마음대로 정한다.(이것은 아래에서 CUPS에서 프린터 설치시# 사용하므로 기억하기 바랍니다.

[HPDeskJet930C]

comment = HP DeskJet 930C Network Printer

printable = yes

path = /var/spool/samba

public = yes

guest ok = yes

# 만일 root 혼자만 프린터 관리자로 하고 싶지 않다면 "username,root" 이렇게 바꾸면 됩니다.

printer admin = root

 

# 프린터의 공유 설정. 이것은 반드시 browseable, printable, public이어야 합니다.

[printers]  

comment = All Printers

browseable = no

printable = yes  

writable = no

public = yes  

guest ok = yes

path = /var/spool/samba

# 만일 root 혼자만 프린터 관리자로 하고 싶지 않다면 "username,root" 이렇게 바꾸면 됩니다.

printer admin = root

 

# 누구나 읽고 쓸수 있는 공유 생성, 이것은 공동의 임시 저장소의 일종으로 생각 할 수 있씁니다.

[public]

comment = Public Files

browseable = yes

public = yes

create mode = 0766

guest ok = yes

path = /home/samba/public


[주의] 만일 윈도우로부터 접속한 Guest사용자로 프린팅 작업을 할 수 있게 하려고 생각중이라면 [global] 섹션란에 guest only를 yes 로 설정하지말기 바랍니다. Cupsaddsmb가 실행중일때 윈도우 컴퓨터로부터 접속을 시도할 경우 Guest계정은 가끔 문제를 발생시킬 소지가 있기 때문입니다.

Warning: [global] 색션안에 ClamAV를 작동시키게 되면 당신의 Samba 서버의 속도가 눈에 띄도록 느려질 수 있다.

  설치된 프린터를 네트워크를 통해 공유하기 위한 디렉토리들을 만듭니다.

# mkdir /etc/samba/printer

# mkdir /var/spool/samba

# mkdir /home/samba/public


  프린터 드라이버를 설치하고 연결할 수 있게 하기 위해선 최소한 한명의 Samba 사용자가 필요합니다. 그리고 그 계정은 smb.conf에서 security를 share로 설정하였기 때문에 반드시 /etc/passwd파일에 존재하는 계정이어야만 합니다.


# smbpasswd -a root

다른 사용자가 프린터관리자라면 다른아이디를 추가합니다.

# smbpasswd -a username


  다음은 /etc/nsswitch.conf 를 편집 하여 NETBIOS를 사용하는 윈도우 시스템을 쉽게 찾을 수 있도록 해줍니다.

# nano -w /etc/nsswitch.conf

(Edit the hosts: line)

hosts: files dns wins


ClamAV 설정하기


  현재 설정은 smb.conf 파일에서/etc/samba/vscan-clamav.conf를 사용하도록 설정 되어있는데 설정중 감염된 파일에 대한 행동이 기본으로 아무런 일을 하지 않게 되어있는데 이부분을 수정하여 줍니다.

[samba-vscan]

; run-time configuration for vscan-samba using

; clamd

; all options are set to default values

 

; do not scan files larger than X bytes. If set to 0 (default),

; this feature is disable (i.e. all files are scanned)

max file size = 0

 

; log all file access (yes/no). If set to yes, every access will

; be logged. If set to no (default), only access to infected files

; will be logged

verbose file logging = no

 

; if set to yes (default), a file will be scanned while opening

scan on open = yes

; if set to yes, a file will be scanned while closing (default is yes)

scan on close = yes

; if communication to clamd fails, should access to file denied?

; (default: yes)

deny access on error = yes

 

; if daemon fails with a minor error (corruption, etc.),

; should access to file denied?

; (default: yes)

deny access on minor error = yes

 

; send a warning message via Windows Messenger service

; when virus is found?

; (default: yes)

send warning message = yes

 

; what to do with an infected file

; quarantine: try to move to quantine directory; delete it if moving fails

; delete:     delete infected file

; nothing:    do nothing

infected file action = delete

 

; where to put infected files - you really want to change this!

; it has to be on the same physical device as the share!

quarantine directory  = /tmp

; prefix for files in quarantine

quarantine prefix = vir-

 

; as Windows tries to open a file multiple time in a (very) short time

; of period, samba-vscan use a last recently used file mechanism to avoid

; multiple scans of a file. This setting specified the maximum number of

; elements of the last recently used file list. (default: 100)

max lru files entries = 100

 

; an entry is invalidated after lru file entry lifetime (in seconds).

; (Default: 5)

lru file entry lifetime = 5

 

; socket name of clamd (default: /var/run/clamd)

clamd socket name = /tmp/clamd

 

; port number the ScannerDaemon listens on

oav port = 8127


  이제 바이러스 스케너를 기본(default) runlevel에 추가 시키고 clamd 서비스를 시작시키겠습니다. 서비스는 두가지 프로세스들을 가지는데 하나는 freshclam로 바이러스 정의 데이터베이스를 업데이트 시켜주는 것이고 다른 하나는 clamd 로 실제 안티바이러스 데몬입니다.


  여기서 설정파일을 수정하여 여러분의 필요에 따라 로그파일의 위치를 변경할 수도 있습니다.

# vim /etc/clamd.conf

(Check the line "LogFile /var/log/clamd.log")

# vim /etc/freshclam.conf

(Check the line "UpdateLogFile /var/log/freshclam.log")

# vim /etc/conf.d/clamd

(Set "START_CLAMD=yes" and "START_FRESHCLAM=yes")


  자 이제 바이러스 스케너를 작동시키기 위해 기본 런레벨에 clamd 추가 및 시작하겠습니다.

# rc-update add clamd default

# /etc/init.d/clamd start


CUPS 설정하기


  이것은 좀더 복잡한데 CUPS의 주 설정파일은 /etc/cups/cupsd.conf입니다. 이것은 아파치의 httpd.conf파일과 유사한 형식을 하고 있는데 아마 유사점을 찾을 수 있을 것입니다.


  이 예제의 아웃라인은 변경되어야 할 지시자들입니다.

ServerName PrintServer          # 프린터서버의 이름

ServerAdmin root@PrintServer    # 프린터서버 관리자 주소

 

AccessLog /var/log/cups/access_log # 아마 변경할 필요가 없을 것이다.

ErrorLog  /var/log/cups/error_log  # 역시 이것도 변경할 필요가 없다.

 

LogLevel  debug # 이것은 단지 설치와 테스팅 목적으로만 사용하고, 나중에는 'info'로 바꿔준다.

 

MaxClients 100 # 최대 접속 클라이언트 수

 

BrowseAddress @IF(eth0) 

 

Order Deny,Allow

Deny From All

Allow From 192.168.1.* 

 

AuthType Basic

AuthClass System

Allow From 192.168.1.* 

                        

Order Deny,Allow

Deny From All


  /etc/cups/mime.convs 를 편집하여 다음 라인의 주석을 없애도록 합니다. 이것은 CUPS가 Microsoft Office 문서들을 인쇄할 수 있도록 해주는 옵션입니다.

(다음 라인을 거의 마지막 줄에서 발견할 수 있다. 주석을 없앤다)

application/octet-stream        application/vnd.cups-raw        0      


  /etc/cups/mime.types 를 편집하여 다음 라인의 주석을 없애도록 합니다.

(다음 라인을 거의 마지막 줄에서 발견할 수 있다. 주석을 없앤다)

application/octet-stream 


  CUPS 를 부팅할 때 시작 시키기 위해 기본 런레벨에 넣어주고 시작시킵니다.

(CUPS 부팅시 시작시키기)

# rc-update add cupsd default

(CUPS 시작시키기)

# /etc/init.d/cupsd start


Installing a printer for and with CUPS


  먼저 LinuxPrinting.Org 에 가서 자신의 프린터에 맞는 PPD 파일을 다운로드합니다. 받으려면 먼저 왼쪽의 Printer LIsting을 클릭하고 프린터 제조사를 선택합니다 그리고 풀다운 메뉴에서 프린터 모델을 선택합니다.


  받은 PPD파일을 CUPS에서 사용하기 위해 /usr/share/cups/model에 파일을 위치시킵니다. 이제 프린터를 설치해야하는데 다음 커맨트를 사용해서 설치하도록 합니다.


  만일 웹환경으로 작업하기 원한다면 http://PrintServer:631 로 하면 들어갈 수 있습니다.


  프린터 설치명령은 다음과 같습니다.

# lpadmin -p HPDeskJet930C -E -v usb:/dev/ultp0 -m HP-DeskJet_930C-hpijs.ppd


  여기서 기억해야할 점은 Samba 설정에서 사용했던 이름을 여기서 사용해야하는 것입니다. 그리고 프린터가 사용하는 인터페이스 (USB, LPT)를 맞게 넣어야한다는 점 잊지 말기 바랍니다.

형식은 usb:/dev/usb/blah, parallel:/dev/blah 입니다.


  이제 프린터를 웹 인터페이스를 통해서 테스트 페이지를 프린트 할 수 있을 것입니다.


윈도우 프린터 드라이버 설치하기


  윈도우 클라이언트에서도 프린터 드라이버가 동작하도록 설치할 차례입니다. 이제 윈도우즈의 네트워크 환경에서 공유 프린터가 보일텐데 마우스 오른쪽 버튼을 눌러 "연결"을 선택합니다. 그러면 자동으로 드라이버를 다운로드 하게 됩니다.


드라이버는 두가지 종류가 있는데, 하나는 Adobe PS(PostScript) 드라이버이고, 다른 드라이버는 CUPS PS드라이버입니다. CUPS드라이버는 현재 CUPS홈페이지에서 제공되지 않아 이곳 에서 다운로드를 받았습니다.


  다음은 윈도우용 CUPS 드라이버 설치의 예입니다.

# wget http://ftp.easysw.com/pub/cups/windows/cups-samba-5.0rc3.tar.gz

# tar -xzf cups-samba-5.0rc3.tar.gz

# ./cups-samba.install


  아마도 /usr/share/cups/drivers아래에 설치되었을 것입니다. cups-samba.ss 는 cups5.hlp, cupsdrvr5.dll , cupsui5.dll 를 담고 있는 TAR파일인데 이것들이 실제 드라이버 파일입니다.


  자 이제 CUPS에서 제공하는 cupsaddsmb 스크립트를 사용해보겠습니다..

# cupsaddsmb -H PrintServer -U root -h PrintServer -v HPDeskJet930C

(HPDeskJet930C 대신 "-a"를 사용할 수 있는데 이것은 가지고 있는 모든 프린터들을 불러온다.)

# cupsaddsmb -H PrintServer -U root -h PrintServer -a


  스크립트는 드라이버를 다음 /etc/samba/printer 디렉토리 하위에 인스톨하게 될 것입니다.

(예 /etc/samba/printer/W32X86/2/).


설치 마무리


  마지막으로 디렉토리를 설정하도록 하겠습니다.

# mkdir /home/samba

# mkdir /home/samba/public

# chmod 755 /home/samba

# chmod 755 /home/samba/public



Samba 설정 테스팅


  Samba 설정 테스트을 위해 testparm을 실행합니다.

(기본으로  testparm은  /etc/samba/smb.conf를 체크한다.)

# /usr/bin/testparm

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

Processing section "[printers]"

Global parameter guest account found in service section!

Processing section "[public]"

Global parameter guest account found in service section!

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

 ...

 ...


Samba 서비스의 시작


# rc-update add samba default

# /etc/init.d/samba start


삼바서버의 서비스 체크


  다음 명령으로 서비스(공유)를 확인할 수 있습니다.

# smbclient -L localhost

Password:



6.5. 클라이언트 설정


*nix 기반의 클라이언트 프린터 설정


# emerge cups

# nano -w /etc/cups/client.conf

ServerName PrintServer      # your printserver name


  다음 옵션으로 기본 프린터를 설정할 수 있습니다.

# lpstat -a

 

HPDeskJet930C accepting requests since Jan 01 00:00

laser accepting requests since Jan 01 00:00

 

# lpoptions -d HPDeskJet930C


Windows 나 Samba 공유 마운트 하기


  이 기능을 사용하기 위해서는 커널에서 Samba FileSystem을 지원해야합니다.

만일 체크하여 지원하지 않는다면 이 기능을 꼭 넣고 다시 컴파일 하기 바랍니다.


  관련 커널 옵션은 다음과 같습니다.

CONFIG_SMB_FS=m

CONFIG_SMB_UNIX=y


  커널 모듈을 로딩하는 방법은 다음과 같습니다.

# modprobe smbfs


  Windows/Samba 공유 마운트은 다음과 같은 형식으로 합니다.

# mount -t smbfs [-o username=xxx,password=xxx] //server/share /mnt/point


  만일 암호를 사용하지 않거나 필요없을 경우는 다음과 같습니다.

# mount -t smbfs //PrintServer/public /mnt/public


  암호를 필요로 할 경우는 다음과 같습니다.

# mount -t smbfs -o username=USERNAME,password=PASSWORD //PrintServer/public  \ /mnt/public


[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.