레드햇의 경우…
/etc/redhat-release 파일을 확인하면 된다.
레드햇의 경우…
/etc/redhat-release 파일을 확인하면 된다.
리눅스에 직접 연결된 프린터(HP LaserJet 1320) 를 cups 프린터 서버로
설정하는 것과 클라이언트인 리눅스와 윈도우에서 연결하는 방법에
대한 팁입니다. 서버에는 X가 깔려 있지 않기때문에 커맨드라인을
사용해서 설정하고 우분투에서 작업을 하였습니다
인스톨할 패키지는 다음과 같습니다
$ sudo apt-get install cupsys cupsys-client cupsys-bsd
(cupsys-bsd는 옵션으로 bsd스타일의 print명령에 익숙해 있는
사용자를 위해 설치하는게 좋습니다)
다음의 사이트에 가셔서 프린터 기종에 맞는 manufacturer-supplied PPD파일을 받아 옵니다
http://www.linuxprinting.org/printer_list.cgi
root유저로 작업을 수행합니다
$sudo -s
#lpinfo -v
를 해보면 사용할 수 있는 로컬디바이스및 네트워크프로토콜을 보여줍니다(smb가 빠져 있는데 삼바프린터 서버도 됩니다.)
프린터가 패러럴포트에 연결 되어 있으면
#lpadmin -p ps -v parallel:/dev/lp0 -P HP_LaserJet_1320_Series.ppd -E
p옵션 다음의 ps는 queue이름입니다
이렇게 하면 ps라는 queue의 프린터가 설정되는데, 기본적으로 로컬머신에서만 접근할 수 있기때문에 외부의 머신이 접속할 수 있도록
cupsd.conf파일을 수정합니다
#vi /etc/cups/cupsd.conf
Listen 127.0.0.1:631
…
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
에서
#Listen 127.0.0.1:631
Port 631
…
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.0.*
</Location>
그리고 드라이버로 ppd파일을 사용하였기때문에 기본적으로
postscript 프린터가 되는데, 외부의 윈도우계열같은 경우에 PCL
드라이버를 사용할 수 있도록 하기 위해서는 /etc/cupsys밑에
있는 mime.types과 mime.convs에서
“#application/octet-stream” 라인의 “#”을 제거해 줍니다
그리고 나서 cups을 다시 시작합니다
# /etc/init.d/cupsys restart
이제 클라이언트쪽 설정에 대해 설명하겠습니다
리눅스에서는 서버와 동일한 패키지를 설치하시고
root에서
#lpadmin -p ps -v ipp://192.168.0.1/printers/ps -P HP_LaserJet_1320_Series.ppd -E
(192.168.0.1은 서버 아이피입니다)
이제 유저에서 사용할때는
$lpoptions -p ps -l
로 프린터 옵션을 확인할 수 있습니다
Duplex/Duplex: *None DuplexNoTumble DuplexTumble
PageSize/Media Size: *Letter LetterSmall Executive Legal LegalSmall A4
A4Small A5 A6 B6 ISOB5 B5 Postcard DoublePostcard w558h774 Env10
EnvMonarch EnvDL EnvC5 EnvISOB5 Custom
……
ppd파일에서 기본적으로 duplex off와 Letter 용지로 되어 있는데
양면인쇄와 A4를 사용하고 싶다면
$lpoptions -p ps -o “PageSize=A4 Duplex=DuplexNoTumble”
(~/.lpoptions에 설정내용이 저장됩니다. 또 시스템 wide한 설정을 하고 싶으면 root에서 실행하시면 되고 /etc/cupsys/lpoptions에
설정내용이 저장됩니다)
또 프린트할때 프린터옵션을 주면 기본설정을 override 할 수 있습니다
$lp -o Duplex=None test2.ps
자 이제 윈도우(XP)에서 프린터 설정입니다.
프린터 추가에서 네트웍프린트를 설정하고 URL: 에 서버및 큐를 쓰면 되는데…
주의할 것은 서버주소를 ip로 하면 안된다는 것입니다 반드시 호스트네임이어야 합니다
그래서 192.168.0.1라는 주소를 hostname으로 인식하도록 하기 위해서는 C:WINDOWSSYSTEM32DRIVERSETCHOSTS에
192.168.0.1 chep
처럼 ip에 호스트네임을 할당합니다
그리고 나서 URL에 http://chep:631/printers/ps라고 적어줍니다
드라이버는 PS나 PCL이든 어떤 것이든 상관 없습니다
두 명 이상이
참여하는 프로젝트를 진행하고 있다면, 소스 파일의 변경 사항을 적절히 관리하여 변경 사항이 충돌하는 것을 방지하고 지금까지의
변경 사항을 추적하는 것이 중요하다. 소스 파일을 관리하는 데 널리 사용되는 세 가지 시스템은 RCS(Revision
Control System), CVS(Current Version System), SCCS(Source Code Control
System)이다.
여기에서는 RCS에 관해 간략하게 설명한다.
1.1.1. RCS
RCS는 소스 파일을 관리하는 여러 명령으로 구성되어 있다. 한 파일의 변경 사항을 하나의 파일로 관리하는 방식으로 소스 파일의 변경을 사항을 추적한다.
1.1.1.1. rcs 명령
rsc -i <filename>의 형식으로 명령을 내리면, 파일을 관리하기 위한 초기화
작업이 수행된다. 관리 파일이 생성되는데 원 파일 명 뒤에 ,v가 추가된 형태이다. RCS라는 하위 디렉터리를 만들어두면 관리
파일은 자동으로 이 디렉터리에 저장된다.
1.1.1.2. ci 명령
현재 버전을 저장하는 ci 명령을 사용해 파일을 Check In 할 수 있다. ci
<filename>의 형식으로 명령을 내리면 원래 파일은 지워지고 모든 내용과 제어 정보가 RCS파일인
“filename,v” 파일에 들어가게 된다.
1.1.1.3. co 명령
파일을 변경하려면 파일을 Check Out 해야 한다. co -l <filename>을
호출하면 디렉터리에 filename파일이 생기며 CVS 파일은 잠기게 된다. 따라서 다른 사용자가 동시에 파일을 수정하는 것을
방지한다. 수정 후에는 ci를 이용해 다시 Check In 해야 한다. ci -l <filename>의 형식으로
호출하면, 파일을 CVS에 넣고 자동으로 체크아웃 되면서 CVS가 잠긴다. 즉, co -l <filename>을
호출하는 것과 같은 효과가 있다.
1.1.1.4. rolg 명령
rolg <filename> 명령으로
파일의 변경 내역을 볼 수 있다. 파일의 첫 번째 버전으로 돌아가고 싶다면 co -r.1.1 <filename>을
사용할 수 있다. 파일의 버전을 강제로 지정하려면 ci -r2 <filename>과 같은 방법을 사용할 수 있다.
1.1.1.5. rcsdiff 명령
rcsdiff -r1.1 -r1.2 <filename>과 같은 형식으로 두 버전의 차이점을 알아볼 수 있다.
1.1.1.6. 버전 식별
소스 파일에 특수한 매크로를 사용하여 Check In 하면 매크로가 확장되어 내용으로 대체된다. $RCSfile$ 매크로는 파일의 이름으로 확장되고, $Id$ 매크로는 버전을 식별하는 문자열로 확장된다.
1.1.1.7. ident 명령
ident 명령을 사용해 $Id$ 문자열을 포함하는 파일의 버전을 찾을 수 있다. ident <filename>을 입력하면 파일에서 $Id$에 해당하는 문자열 부분을 찾아 출력한다.
1. ProFTPd 의 모든 설정은 이 파일에서 하게 됨.
– proftpd.conf 설정예.
–
proftpd.conf 파일의 전체적인 구성을 보면 모든 ftp 서비스에 대한 설정을 하는 Global 설정 부분이 있으며 그
다음에 anonymous 접근에 관한 설정이 있고 그 다음에 가상 ftp 호스트를 설정하는 부분이 있음. proftpd.conf
파일 설정시에 주의해야 할 것은 설정 지시자와 설정내용 사이에는 반드시 [TAB] 키로 띄워야 함.
– ServerName 지시자
ServerName “pchero21.com;s ftp service”
: ServerName 는 ftp 서버의 이름을 설정함. 대부분 ftp 사이트의 도메인명을 입력하거나 아니면 서비스명등을 입력하게 됨.
– ServerType 지시자
ServerType standalone
:
ServerType 설정에서는 ftp 서버데몬을 xinetd 모드로 할 것인가 아니면 standalone 모드로 운영을 할
것인가에 대한 설정을 하는 것임. 위의 설정을 standalone 모드로 운영할 경우의 설정이며 만약 xinetd 모드로 운영할
경우에는 다음과 같이 설정하면 됨.
ServerType inetd
– DefaultServer 지시자
DefaultServer on
:
한대의 리눅스서버에서 여러 개의 ftp 서비스를 가상 ftp 서버로 설정하여 운용할 경우에 기본적으로 운용할 서버설정을 하는
것임. 하나의 proftpd 를 이용하여 여러 개의 가상 ftp 서버를 운용할 경우에 기본서버로 응답하게 하려면 on 을
설정하고 기본서버로 응답하지 않게 하려면 off 로 설정하면 됨.
– DefaultRoot 지시자
DefaultRoot ~ !wheel
: DefaultRoot 지시자는 ftp 사용자들이 자기의 홈디렉토리 상위로 이동하지 못하도록 설정하는 지시자임.
위의 설정은 wheel 그룹에 등록된 사용자들을 제외한 나머지 모든 사용자들에게 대한 자기자신의 홈디렉토리를 최상위 디렉토리로
인식하도록 함. 따라서 wheel 그룹에 등록된 사용자들을 제외한 나머지 모든 ftp 사용자들은 자기 자신의 홈디렉토리
상위디렉토리로 이동할 수 없음. 참고로 서버관리자는 대부분 wheel 그룹에 등록해서 사용함. 따라서 관리자에 속하는 사용자들을
wheel 그룹에 등록해 두고 이 설정을 사용한다면 관리자들은 제한없이 상위 디렉토리로 이동이 가능하면서 일반사용자들은 자기의
홈디렉토리를 벗어나지 못하므로 효율적인 설정이 됨.
– Port 지시자
Port 8021
:
ftp 서비스의 기본 사용포트를 지정한 것임. /etc/services 파일에 ftp 서비스의 포트설정이 되어 있어야만 정상적인
ftp 서비스가 가능함. 이 설정은 ftp 가 standalone 모드로 운영이 될 경우에만 유효한 것으로 만약 ftp 를
xinetd 환경에서 서비스를 한다면 /etc/xinetd.d/proftpd 파일에서 사용포트를 지정해 주면 됨.
– Umask 지시자
Umask 022 022
: Umask 설정은 ftp 로 접속한 사용자들이 파일 업로드시에 생성되는 파일퍼미션과 디렉토리퍼미션을 설정하는 것임.
022 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 644 가 되며 생성되는 디렉토리의 퍼미션은 755 가 됨.
002 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 664 가 되며 생성되는 디렉토리의 퍼미션은 775 가 됨.
007 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 660 이 되며 생성되는 디렉토리의 퍼미션은 770 이 됨.
070 으로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 604 가 되며 생성되는 디렉토리의 퍼미션은 705 가 됨.
Umask 의 설정을 파일과 디렉토리의 보안정책을 어떤식으로 가져갈 것인가에 따라서 달리 설정하면 됨.
– MaxInstance 지시자
MaxInstance 30
:
ftp 서비스 요청이 있을 경우에 ProFTPd 는 자식프로세스를 생성하여 개별 ftp 서비스 요구에 응답을 하게 됨. 이때
생성될 수 있는 ftp 자식프로세스의 최대수를 지정해 둔 것임. 즉, 동시에 서비스가능한 ftp접속수라고 이해 하면 됨. 또한
이 설정은 ProFTPd 서버 실행을 standalone 으로 했을 때에만 적용이 되는 것임. xinetd 로 서비스될 경우에는
적용되지 않음. 그리고 ftp 보안이라는 관점에서 이 설정이 갖는 중요한 의미는 DoS (Denal of Service)
공격방어를 어느정도 할 수 있다는 것임. DoS 공격은 수많은 서비스요구를 동시다발적으로 하여 ftp 서비스를 다운시키는
공격임. 여기서 설정된 기본 30개 이상의 ProFTPd 의 자식프로세스가 생성되지 않으므로 30개 넘게 요구가 있을 경우에는
DoS 공격이라고 판단하여 응답을 하지 않게 됨.
– User, Group 지시자
User proftpd
Group nogroup
:
ProFTPd 의 실행시에 여기서 설정된 계정 (User) 과 그룹 (Group) 으로 실행이 됨. 어떤 이름으로 해도
상관없으나 반드시 실제 존재하는 계정으로 설정이 되어야 함. 즉 /etc/passwd 내에 존재하는 실제 계정 중 하나로 설정이
되어 있어야 한다는 것임. 다만 주의해야 할 것은 시스템에 특별한 권한이 있는 계정으로 설정을 해서는 안됨. 또한 앞서 소스를
컴파일하여 설치한 후에 proftpd 의 초기 실행시에 에러가 발생했던 것은 여기서 설정하는 Group 지시자 값이
nogroup으로 설정되어 있었기 때문임.
– RootLogin 지시자
RootLogin off
:
이 설정은 시스템의 root 계정으로 ProFTPd 접속을 혀용할 것인가를 설정하는 것임. 위의 설정이 off 로 되어있는
것처럼 ProFTPd 의 초기 설정에는 root 계정으로 ftp 접속이 되지 않음. 만약 root 계정으로 ftp 접속을
허용하려면 on 으로 설정하면 됨. 하지만 서버 보안을 위해서 가능한 기본설정인 off 로 해두고 root 원격접속은 막아두는
것이 현명한 것임.
– RateReadBPS 지시자, RateWriteBPS 지시자
: RateReadBPS
지시자는 파일을 서버에서 클라이언트로 다운로드할 때의 사용가능 대력포글 설정해 둔 것이며, RateWriteBPS 는 파일을
클라이언트에서 서버로 업로드 할 경우에 사용가능한 대역폭을 설정해 둔 것임. BPS 는 bit per second 의 약어로서
초당 전송가능한 bit 수를 의미함. 이 설정을 융통성있게 설정하면 ftp 를 효율적으로 운용할 수 있음. 즉 한명의 ftp
사용자가 모든 대역폭을 모두 차지하는 것을 방지할 수 있으며, 또한 ftp 서비스가 서버의 모든 네트웍 대역폭을 차지함으로
인하여 서버의 또 다른 서비스 (ex. www, email 등) 의 장애를 예방할 수 있음.
– RateReadFreeBytes 지시자, RateWriteFreeBytes 지시자
: RateReadFreeBytes 지시자는 대역폭의 제한없이 download 를 허용할 bytes 수를 지정한다. RateWriteFreeBytes 지시자는 대역폭의 제한없이 upload 를 허용할 bytes 수를 지정한다.
– DisplayLogin 지시자
DisplayLogin welcome.msg
: 이 설정은 ftp 접속시에 보여줄 메시지 파일을 설정한 것임. 위의 설정 예에 의하면 ftp 서버로 접속하였을 경우에 welcome.msg 라는 파일을 보여주게 된다는 것임.
– DisplayFirstChdir 지시자
DisplayFirstChdir .message
:
앞서 설명한 DisplayLogin 이라는 지시자가 ftp 접속시에 보여주는 메시지내용을 설정한 것이라면 이
DisplayFirstChdir 은 ftp 접속 후에 특정 디렉토리로 이동하였을 경우에 그 디렉토리의 안내문을 보여주기 위한
설정파일임. 즉, ftp 접속후에 특정 디렉토리로 이동하게 되면 이동한 그 디렉토리내에 존재하는 .message 파일의 내용을
자동으로 보여주게 됨.
– <Direcroty> ~ </Direcroty> 지시자
<Direcroty /*>
AllowOverwrite on
</Direcrtory>
:
이 디렉토리지시자는 개별디렉토리 이하에서의 설정을 할 수 있는 부분임. 이 설정은 주로 개별 사용자들의 ftp 디렉토리를 별도로
설정할 경우에 상둉하는 것임. 중요한 것은 이 설정에서 * 를 사용할 수 있다는 것이며, 또한 앞서 설정한 내용과 중복될
경우에는 여기서 설정한 개별 디렉토리내용이 지정한 디렉토리 내에서는 우선한다는 것임.
– <Anonymous ~ftp> ~ </Anonymous> 지시자
: 이 설정은 anonymous ftp 에 대한 설정을 한 것임. Anonymous 접속시에 여기서 설정한 내용의 적용을 받는다는 의미가 됨.
– <Limit> ~ </Limit> 지시자
: 이 설정이 위치하는 디렉토리내에서 사용할 수 있는 ftp 명령어들의 제약을 하기 위한 것임.
– MaxLoginAttempts 지시자
: 동일한 클라이언트에서 ftp서버로 접속시도할 수 있는 최대허용횟수를 제한함.
– RequireValidShell 지시자
:
이 지시자는 ftp 접속시에 쉘 (shell) 을 요구할 것인가 말것인가를 결정하는 지시자. 즉, 이 값이 on 으로 되어있다면
/etc/passwd 파일내에 설정된 각 사용자의 쉘종류가 유효한 쉘 사용자만 접속이 가능하게 됨. 반대로 이 값이 off 로
설정되어있다면 /etc/passwd 파일내에 설정된 각 사용자의 쉘종류가 유효하지 않은 쉘사용자라도 ftp 접속은 가능하게 됨.
1. proftpd 의 xinetd 운영환경 설정하는 방법
– proftpd 를 운용하는 방법에는 두가지 모드가 있음. Standalone 모드와 xinetd 운영모드가 그것임.
–
Standalone 모드 : proftpd 를 운영하면 proftpd 서버데몬이 항상 메모리에 상주하게 됨. 그리고 ftp
클라이언트들의 응답요구를 직접 받아서 처리하게 되므로 당연히 xinetd 모드로 운영하는 것보다는 빠른 서비스를 제공할 수
있음. 하지만 메모리에 항상 proftpd 데몬이 상주 해야하기 때문에 ftp 서비스 요구가 없을 경우에는 시스템 자원낭비를 할
수가 있음.
– xinetd 모드 : ftp 클라이언트들의 요구에 proftpd 서버데몬이 직접 응답을 하는 것이
아니라 xinetd 수퍼데몬이 먼저 응답을 하여 접속권한 체크등을 한 후에 허용될 경우에만 xinetd 데몬이 proftpd
서버데몬을 불러 클라이언트와 proftpd 를 연결하여 처리하도록 함. 즉, ftp 서비스의 모든 처리를 xinetd 데몬이
먼저 받아서 정당한 접속일 경우에만 proftpd 서버데몬과 연결을 시켜주는 방식이 됨. 이 경우 proftpd 서버데몬은
메모리에 항상 올라와 있는 것이 아니라 xinetd 의 요구에 의해 메모리로 불려와서 클라이언트의 응답에 대한 처리를 하게되고
응답이 끝났을 경우에는 proftpd 서버데몬은 종료되어 메모리에서 사라지게 됨. 따라서 ftp 서비스의 요구가 없을 경우에는
메모리에 proftpd 서버데몬은 메모리에 올라오지 않기 때문에 자원낭비를 하지않게 됨. 하지만 xinetd 를 거쳐서 서비스를
하기 때문에 즉각적인 응답을 할 수 없으며 당연히 standalone 모드 보다는 응답속도가 떨어지게 됨.
–
ftp 서비스는 이 두가지 모드로 모두 운영이 가능함. Standalone 모드로 운영을 하려면
“/usr/local/proftpd/sbin/proftpd” 를 실행하여 proftpd 데몬을 띄워놓으면 됨. 하지만
xinetd 모드로 운영할 경우에는 다음과 같은 설정을 해 주어야 함.
– /etc/xinet.d/ 디렉토리에 proftpd 라는 파일을 다음과 같이 생성해야 함.
–
위의 항목에서 반드시 확인해야 할 것은 disable 항목과 server 항목임. 만약 ftp 서버로 ftp 접근이 안 될
경우에는 이 파일의 내용 중 “disable” 항목을 “yes” 에서 “no” 로 설정한 다음 xinetd 를 재시작 한 후에
ftp 를 접속을 한다. 그리고 server 항목에서 지정한 /usr/local/proftpd/sbin/in.proftpd 는
반드시 실제로 존재하는 파일명을 지정해야 함.
– 그리고 /usr/local/proftpd/etc/proftpd.conf 파일을 열어서 ServerType 지시자의 설정값을 inetd 라고 지정해 주면 됨.
ServerType inetd
– 위의 파일을 새로 생성하거나 기존에 있던 파일을 수정한 경우 xinetd 데몬을 재시작해 주어야 함.
/etc/rc.d/init.d/xinetd restart