1. 일반적인 질문들
1.1 han.comp.sys.sun 뉴스그룹은 어떤그룹인가요?
1.2 Solaris에 관련된 FAQ는 어떤게 있나요?
2. 시스템 관리에 관한 질문들
2.1 루트파티션의 용량을 작게 잡아서 가득찼습니다.
2.2 하드디스크 파티션은 어떻게 잡는게 좋나요?
2.3 swap영역이 모자라는데 어떻게 추가할 수 있나요?
2.4 inode full이 나옵니다.
2.5 사용자마다 특정크기만큼만 하드디스크를 할당하는 방법이 있을까요?
2.6 cachefs가 뭔가요?
2.7 네트웍으로 root접속이 가능하게 하려면?
2.8 로긴화면에서 나오는 메시지를 바꾸려면?
2.9 한번만 접속을 하면 같은 이름으로 로긴을 막고싶습니다.
2.10 floppy드라이버를 사용하려면 어떻게 해야 하나요?
2.11 CD-ROM드라이버를 이용하려면 어떻게 하나요?
2.12 다른 시스템의 CD-ROM드라이버를 이용하려면?
2.13 Sun용 CD-ROM드라이버가 따로 있나요?
2.14 새로운 장치를 달고 device file을 만들려면?
2.15 Tape의 내용을 삭제하려면?
2.16 Workstation의 화면 해상도와 색상수를 바꾸려면?
2.17 Solaris 2.x에서 두 개이상의 Network Adapter를 설치하려면?
2.18 프린터를 병렬포트에 연결하려면?
2.19 모뎀을 달려면?
2.20 Postscript파일을 출력하려면?
2.21 네트웍을 지원하는 프린터를 설치하려면?
2.22 JAZZ드라이버나 ZIP드라이버를 달려면?
2.23 백업 하려면?
2.24 Solaris 2.x에서 /dev/rmt/에 있는 장치파일들의 의미
2.25 다른 시스템의 테잎 드라이버를 이용하려면?
2.26 patch가 뭔가요?
2.27 SunOS 4.x의 passwd파일을 Solaris 2.x시스템에 맞게 고치려면?
2.28 /etc/passwd와 /usr/bin/passwd의 차이는 뭔가요?
2.29 NT와 Solaris의 비밀번호를 같이 관리하려면?
2.30 root 비밀번호를 잊었습니다.
2.31 /home에 파일을 쓰려면 어떻게 해야 하나요?
2.32 계정을 만들 때 자동적으로 .cshrc와 .profile등의 파일을 만들려면?
2.33 /etc/passwd파일에서 삭제를 했는데도 로긴이 가능합니다.
2.34 passwd를 실행했는데 없는 ID라고 나옵니다.
2.35 package란 뭔가요?
2.36 CDE는 뭔가요?
2.37 CDE로긴(dtlogin)의 설정은 어떻게 하나요?
2.38 부팅할 때 마다 어떤 일을 수행하려면 어떻게 하나요?
2.39 부팅시 마운트되는 순서는?
2.40 다른 시스템의 X Window 프로그램을 수행하고 싶습니다.
2.41 로컬시스템의 X 프로그램을 실행했는데 display를 열수없다고 합니다.
2.42 libX11.so.6.1이 없다고 에러가 납니다.
2.43 최근 login한 사람들에 대한 정보를 알수 없나요?
2.44 syslogd는 어떤 역활을 하나요?
2.45 cron이 실행되지 않습니다.
2.46 Solaris 2.x에서 시스템의 최대값을 알려면?
2.47 Solaris에서 hostid를 변경하려면?
2.48 Solaris 2.x는 y2k에 안전한가요?
2.49 TT_DB/ 디렉토리는 뭔가요?
2.50 Solaris 2.6에서 2GB이상의 파일을 사용하려면?
2.51 talk에서 한글을 쓰려면?
2.52 비밀번호 없는 계정을 만들려면?
2.53 최대접속가능한 터미널 수를 늘이고 싶습니다.
2.54 CD Writer를 사용하려면?
3. 네트웍 관련 질문들
3.1 허가된 IP에서만 네트웍접속이 가능하게 하려면?
3.2 Shell을 바꾸었더니 ftp로 로긴이 안됩니다.
3.3 비밀번호없이 ftp나 telnet으로 접속하는 방법이 있을까요?
3.4 특정사용자는 ftp로 접속하지 못하게 하고싶습니다.
3.5 텍스트 파일에서 줄의 끝에 ^M이 붙어있습니다.
3.6 ftp 사용을 일괄적으로 처리하려면?
3.7 ftp로 어떤 서버에 접속을 하니 파일이 하나도 보이지 않습니다.
3.8 anonymous ftp를 설치하고 싶습니다.
3.9 ftp로 접속해서 만든 파일의 모드는 어떻게 결정되나요?
3.10 wu-ftpd 2.4에서 last명령으로 ftp접속기록이 나오게 하려면?
3.11 wu-ftpd에서 접속시 메시지를 출력하려면?
3.12 telnet으로 접속한 상태에서 잠시 local작업을 하려면?
3.13 telnet등에서 내용을 암호화해서 전송하려면?
3.14 telnet으로 하이텔등에서 프로그램을 다운로드 받으려면?
3.15 웹서버를 설치하려면?
3.16 웹사이트에 대한 접속통계를 내려면?
3.17 시스템에 메일이 도착했을때 다른 계정으로 메일을 보내려면
어떻게 하면 되나요?
3.18 계정명에 대문자가 들어있는경우 메일을 받으려면?
3.19 메일을 보내는 사람에게 자동으로 일정한 메시지를 답장으로 주려면?
3.20 메일계정만 주고, shell계정을 안주는 방법
3.21 tin에서 뉴스서버지정
3.22 Windows환경의 자원을 UNIX에서 사용하려면?
3.23 시스템의 IP Address를 변경하고 싶습니다.
3.24 하나의 Adapter에 두개의 IP address를 할당하려면?
3.25 gateway설정은?
3.26 DNS서비스를 받으려면?
3.27 공개 NMS를 구하려면?
3.28 시간 서버를 사용하려면?
3.29 메일 서비스를 하고 싶습니다.
4. 개발환경에 관한 질문들
4.1 컴파일 할 때 /usr/ucb/cc 가 작동하지 않습니다
4.2 gcc를 설치하려면?
4.3 /usr/include등에 header파일이 없습니다.
4.4 gdb와 xxgdb는 어떤 프로그램입니까?
4.5 SPARCompiler등을 설치했는데 license file이 없다고 합니다.
4.6 gcc를 사용할경우 xmkmf가 정상적으로 작동하려면?
4.7 make가 없다고 합니다.
5. 사용자 환경에 관한 질문들
5.1 DOS의 doskey와 같은 기능이 있나요?
5.2 root의 shell은 어떻게 바꾸나요?
5.3 프롬프트에 현재 디렉토리를 표시하려면?
5.4 root계정의 환경설정은 어디에서?
5.5 3벌식 자판을 사용하려면?
5.6 vi에서 한글이 입력되지 않습니다.
5.7 CDE의 스타일관리자에서 배경그림을 추가하고 싶습니다.
6. 기타
6.1 Netscape를 실행했는데 다음과 같은 Warning이 계속출력됩니다.
6.2 Netscape의 메뉴등에서 한글이 보이지 않습니다.
6.3 Netscape를 실행했는데 libresolv.so.2를 찾지못한다고 합니다.
6.4 MP3파일을 듣고싶습니다.
6.5 특정사용자가 실행한 프로세스를 한꺼번에 지우려면?
6.6 파일을 여러개로 쪼개려면?
6.7 X Window의 화면을 캡춰하려면?
6.8 Letter용지로 설정된 ps파일을 A4 크기로 프린트하고 싶습니다.
6.9 파일이 지워지지 않습니다.
7. 문제점 해결
7.1 일반 사용자는 socket: Permisson denied라고 나옵니다.
7.2 login프롬프트가 굉장히 늦게 나옵니다.
7.3 /etc/path_to_inst파일을 실수로 삭제한 경우 부팅이 안됩니다. 어떡하죠?
7.4 vi를 실행했는데 Terminal Too Wide라고 나옵니다.
7.5 Connected command timeout for Target 4.0 이라고 나옵니다.
7.6 Target 4 reducing sync. transfer rate 라고 나옵니다.
8. 감사의 글
______________________________________________________________________
1. 일반적인 질문들
일반적인 질문들에 관한 내용은 Casper Dik.에 의해 작성된 Solaris 2
FAQ에 잘 설명되어 있습니다. 이 문서를 참고하시기 바랍니다. 여기에서는
Solaris 2 FAQ에 없는 내용만 올리도록 하겠습니다.
1.1. han.comp.sys.sun 뉴스그룹은 어떤그룹인가요?
han.comp.sys.sun 뉴스그룹의 성격은 그룹헌장에서 잘 설명하고 있습니다.
아래는 han.comp.sys.sun 뉴스그룹의 그룹헌장입니다.
이 그룹은 Sun Microsystem에서 만드는 모든 종류의 worksta
tion과 서버, 그리고 clone 업체의 호환 기종에 대한 정보를
다룹니다. 하드웨어, 주변 기기의 설치 및 사용, Sun OS 4.x 및
5.x(aka Solaris 2.x), 등 Sun 기종에 탑재되어 돌아가는 OS,
OpenWin,CDE 등 GUI, Sun용 소프트웨어의 설치와 사용, SunOS
하에서의 프로그래밍 및 개발 환경, 시스템 관리에 대한 정보를
교환합니다.
1.2. Solaris에 관련된 FAQ는 어떤게 있나요?
Casper Dik.에 의해 작성된 Solaris 2 FAQ가 있습니다. 영문판은
한글로 번역된글은
Sun Manager 메일링리스트의 FAQ도
있습니다.
Sun시스템에 관련된 FAQ는
볼 수 있습니다.
2. 시스템 관리에 관한 질문들
2.1. 루트파티션의 용량을 작게 잡아서 가득찼습니다.
여러가지 방법이 있습니다. 가장 확실한 방법은 충분한 여유가 있는
하드디스크를 붙여서 부트디스크를 복사하는 방법입니다. 하지만 이 방법은
성공하기가 힘든(?) 단점이 있습니다. 임시방편으로는 몇개의 디렉토리를
다른 파티션으로 옮기고 링크를 만드는 방법이 있습니다. 이때 많이
애용(?)되는 파티션으로 /var가 있습니다. /var전체나 /var안에서 디스크를
많이 차지하는 파티션을 다른곳으로 옮기고 링크를 만들어 주면 됩니다.
(절대 /sbin이나 /etc같은 디렉토리를 옮기지 마세요. ^_^)
2.2. 하드디스크 파티션은 어떻게 잡는게 좋나요?
보통 관리자에 따라 두가지 형태로 파티션을 관리합니다. 한가지 방법은
swap을 제외한 모든 디스크를 / 파티션에 두는 방법이고, 다른 방법은
/usr등의 디렉토리를 각각 파티션을 나누어서 사용하는 방법입니다. 이
두가지 방법 모두 장단점을 가지고 있어서 어느것이 좋다고 할 수는
없습니다. 관리자가 편한 방법으로 선택하시면 됩니다.
파티션을 여러개로 나눌 경우 개인적 취향(?), 사용하는 응용프로그램에
따라 다릅니다. 아래는 안진수님이 뉴스그룹에 올려주신
내용입니다.(참고하세요.)
/ 64MB
/usr 400MB 이상 (최경렬님은 최소 600MB이고, 보통 1GB이상을 잡는게 좋다고
메일을 보내주셨습니다.)
/var 128MB 이상 (Recommended Patches를 설치하려면 적어도 100MB가
필요합니다.)
swap 물리적 메모리의 2배에서 4배
/opt 400MB 이상
/usr/local 분리권장
저도 위와 비슷하게 파티션을 나누고 대부분의 프로그램은 /usr/local이나
/opt에 설치합니다.
2.3. swap영역이 모자라는데 어떻게 추가할 수 있나요?
Solaris 2.x에서는 초기에는 따로 파티션을 잡아서 swap영역을 사용하지만
나중에 추가할 경우 swap파일을 만들어서 추가합니다. 이때 사용하는
명령어가 mkfile 입니다. 만일 /opt/swap이라는 200MB짜리의 파일을
만들어서 swap영역으로 쓰고 싶다면 아래와 같이 파일을 만들고
swap명령어로 추가할 수 있습니다.
% mkfile 200m /opt/swap
% swap -a /opt/swap
만일 항상 사용할 swap영역이라면 /etc/vfstab에 추가하면 됩니다. 다음은
/opt/swap을 추가한 /etc/vfstab의 예제입니다.
% cat /etc/vfstab
.
.
swap - /tmp tmpfs - yes -
/opt/swap - - swap - no -
%
2.4. inode full이 나옵니다.
파일시스템에서 사용하고 있는 inode를 모두 사용했기 때문입니다. 이렇게
되면 더 이상의 파일을 생성할 수 없습니다. 파일들을 백업한 후(문제가
되는 파일 시스템만 백업하면 됩니다.) newfs의 -i옵션을 사용하여 inode의
갯수를 늘이고 백업한 파일들을 복구해야 합니다.
2.5. 사용자마다 특정크기만큼만 하드디스크를 할당하는 방법이 있을까요?
Solaris 2.x라면 quota를 설정하시면 됩니다. quota를 설정하는 방법은
Solaris메뉴얼중 System Admin Guide Vol2에 보시면 잘 나와있습니다.How
to enable user storage space quotas for Solaris in a mounted file
system
설명드리면 아래와 같습니다.
/etc/vfstab에서 quota를 설정하고자 하는 파일시스템의 마운팅 옵션에
rq를 지정한다.
$ cat /etc/vfstab
..
/dev/dsk/c0t2d0s6 /dev/rdsk/c0t2d0s6 /home ufs 1 yes rq
..
quota를 설정할 파일시스템에 quotas라는 파일을 만든다.
$ touch quotas
$ chmod 600 quotas
각 사용자에게 quota를 할당하기 위하여 edquota라는 명령을 사용한다.
$ edquota louis
fs /home blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
여기에서 할당하고자 하는 양만큼 soft와 hard부분에 적어준다. 만일
20MB를 할당하려면 아래와 같이 해준다. (만일 quota를 제거하고자 한다면
0을 적어주면 된다.)
fs /home blocks (soft = 20000, hard = 20000) inodes (soft = 0, hard = 0)
만일 다수의 사용자에게 같은 양의 quota를 할당하려면 하나의 사용자만
할당하고 복사할 수 있는데 아래는 louis 사용자의 quota설정을 aaa, bbb,
ccc 사용자에게도 똑같이 할당하는 예제이다.
$ edquota -p louis aaa bbb ccc
2.6. cachefs가 뭔가요?
기본적인 설치법이 적혀 있습니다.
2.7. 네트웍으로 root접속이 가능하게 하려면?
기본적으로 Solaris 2.x에서는 네트웍으로 접속하고 root로 로긴하면
아래와 같은 메세지를 출력하고 접속이 안됩니다.
login: root
Password:
Not on system console
Connection closed by foreign host.
Solaris 2.x는 기본적으로 root사용자는 console에서만 로긴이 가능합니다.
(su는 제외) 이것을 console이외에서도 가능하게 하려면
/etc/default/login에서 CONSOLE=/dev/console에 주석을 달면 됩니다.
참고로 CONSOLE=/dev/console의 의미는 root는 /dev/console에서만 login이
가능하다는 의미입니다. 만일 root사용자로 로긴이 불가능하게 하려면
CONSOLE= 와 같이 해 두면 됩니다. (하지만 이 설정은 기본적으로 설치된
in.telnetd등에만 해당됩니다. 만일 ssh등을 사용한다면 이 파일과
상관없이 root계정으로 로긴이 가능합니다.)
2.8. 로긴화면에서 나오는 메시지를 바꾸려면?
telnet으로 접속시 UNIX(r) System V Release 4.0 (white) 같은 메세지를
바꾸고 싶다면 Solaris 2.6의 경우 /etc/default/telnetd에서 BANNER
항목을 수정하면 되지만, 그 이외의 시스템에서는 특별한 방법이 없습니다.
몇분들의 말을 따르자면 binary파일(in.telnetd)을 수정하면 가능하다고
하더군요 :)
콘솔에서의 white console login: 메시지는 /etc/inittab에서 수정할 수
있습니다. 기본적으로 "`uname -n` console login: "으로 되어있습니다.
로긴화면에 여러줄의 내용을 출력하려면 /etc/issue에 적어주면 됩니다.
그리고 로긴후 여러줄의 내용을 출력하려면 /etc/motd에 적어주면 됩니다.
로긴후 나오는 메시지들(motd내용, 최근접속일등)을 나오지 않게 하려면
$HOME/.hushlogin 을 만들면 나오지 않습니다. (touch $HOME/.hushlogin)
2.9. 한번만 접속을 하면 같은 이름으로 로긴을 막고싶습니다.
기본적으로 지원해 주는건 아니지만 /etc/profile이나 /etc/.login에서
간단한 script를 써서 구현할 수는 있습니다. 또한 Michael P. Crider가
만든 idled를 사용하셔도 됩니다. idled는
2.10. floppy드라이버를 사용하려면 어떻게 해야 하나요?
Solaris 2.x에서는 vold(Volume Management Daemon)을 이용해서 floppy나
CD-ROM을 마운트합니다. 따라서 floppy를 사용할때는 드라이버에 디스켓을
넣고, volcheck명령어를 실행하면 마운트가 됩니다. 보통
/floppy/floppy0에 마운트가 됩니다. 그리고 디스켓은 MS-DOS 포맷으로
되어있어도 문제가 없이 마운트됩니다. 그리고 다 쓰고 났을때는 eject
floppy를 입력하면 floppy가 빠져나오며 자동으로 마운트가 풀립니다.
2.11. CD-ROM드라이버를 이용하려면 어떻게 하나요?
Solaris 2.x에서는 floppy와 마찬가지로 vold를 이용해서 마운트합니다.
현재 vold가 수행중일때는 CD-ROM의 경우에는 CD를 삽입하기만 하면
자동으로 /cdrom에 마운트가 되고, CD를 빼고 싶을때는 CD-ROM드라이버에
있는 버튼을 누르거나, eject cdrom이라는 명령어를 입력하면 됩니다.
(가끔 CD-ROM 드라이버의 버튼을 눌렀을 때 CD가 빠져나오지 않는경우가
있습니다. 이때는 eject cdrom 이라고 입력하면 잘 빠져나옵니다.) 참고로
vold의 설정파일 은 /etc/vold.conf이며, 자세한 사항은 vold(1M)의
메뉴얼을 참조하시기 바랍니다.
2.12. 다른 시스템의 CD-ROM드라이버를 이용하려면?
만일 두대의 컴퓨터 A, B가 있는데, A에는 CD-ROM 드라이버가 있고, B에는
없어서 B에서 A의 CD-ROM 드라이버를 이용하고 싶다면, A에서는
/etc/rmmount.conf 의 마지막에 아래와 같이 추가하고 vold 데몬을 다시
실행한 후
share cdrom* -o ro=B
B에서는 /cdrom에 사용하고 싶다면
% ln -s /net/A/cdrom /cdrom
와 같이 연결해 두시면 됩니다.
참고로 Solaris에서는 CD-ROM이나 floppy등은 vold(1M)가 관리합니다. 만일
어떤 사용자가 CD를 넣으면 vold는 그 일을 감지하고 rmmount(1M)를
호출해서 다시 마운트해줍니다. rmmount(1M)는 CD나, floppy와 같은
장치들을 마운트할 때 사용하는데, 그 설정파일은
/etc/rmmount.conf입니다. 자세한 내용은 rmmount.conf와 rmmount의
메뉴얼을 참조하세요.
2.13. Sun용 CD-ROM드라이버가 따로 있나요?
따로 있지는 않습니다. Sun에서는 SCSI CD-ROM드라이버중 버퍼가
512K바이트인 것만 지원합니다. 잘 돌아가는 모델에는 소니의 경우
CDU-8012모델(Sun 1배속 CD-ROM드라이버), 도시바의 4101TA모델(Sun 2배속
CD-ROM드라이버), 3301B모델, 3401B모델, 애플의 CD 300i가 있으며,
플랙스터의 CD-ROM드라이버의 경우 대부분 잘 돌아갑니다. 만일 구입을
하신다면 플랙스터의 모델을 구입하시는것이 좋습니다.(최경렬님,
이석찬님)
2.14. 새로운 장치를 달고 device file을 만들려면?
일단 다른 주변장치와 충돌하지 않는 SCSI번호(CD-ROM드라이버는
일반적으로 6번을 사용하고, Tape드라이버는 일반적으로 4번을
사용합니다.)를 할당하고, PROM prompt에서 probe-scsi명령으로 정상적으로
인식이 되는지 확인합니다. 여기에서 잘 나오면 boot -r명령으로 /dev와
/devices의 파일들을 갱신하면 됩니다.
ok probe-scsi
ok boot -r
보통 외장형 Tape드라이버를 달고 이 작업을 수행하는데 이때 생기는
장치파일은 Solaris 2.x의 경우 /dev/rmt/0 (SCSI 4번을 쓴경우),
/dev/rmt/1 (SCSI 5번을 쓴 경우)이며, SunOS 4.x의 경우에는 /dev/rst0,
/dev/rst1이 생깁니다.
2.15. Tape의 내용을 삭제하려면?
Tape의 내용을 삭제하려면 mt명령을 사용하시면 됩니다. 만일
Tape드라이버의 장치파일이름이 /dev/rmt/0 라면 아래와 같이 입력하시면
됩니다.
$ mt -t /dev/rmt/0 erase
2.16. Workstation의 화면 해상도와 색상수를 바꾸려면?
Sun Workstations의 경우 화면해상도와 색상수등을 변형하려면 사용하는
Video Card가 framebuffer를 지원해야 합니다. 보통 Creator 3D에서는
사용가능합니다. 만일 콘솔의 해상도를 1280x1024로 변경하려면 PROM
prompt에서 다음과 같이 입력하면 됩니다.
ok setenv output-device screen:r1280x1024x64
ok reset
이렇게 PROM prompt뿐만 아니라 ffbconfig 프로그램을 이용할 수 있습니다.
만일 Solaris x86에서 화면 해상도를 바꾸려면, kdmconfig 명령을 이용해서
화면해상도를 변경할 수 있습니다. Solaris x86에서 화면해상도를 변경하기
전에 현재 사용하고 있는 Graphic Adapter가 Solaris x86에서 지원하는지를
확인한 후 실행하시기 바랍니다. (신제철님)
색상수를 16bit색상으로 바꾸려 할때, openwin을 사용하신다면, openwin
-dev [framebuffer 장치파일명] defdepth 16 과 같이 하시고, CDE를
사용하시면 /usr/dt/config/Xconfig 파일에 Xsun -dev [framebuffer
장치파일명] defdepth 16 과 같이 설정하시면 됩니다. 제가 사용하는
Creator 3D의 경우엔 framebuffer 장치파일명이 /dev/ffb0 입니다. (당연히
framebuffer가 원하는 색상수를 지원해야 합니다.)
2.17. Solaris 2.x에서 두 개이상의 Network Adapter를 설치하려면?
Network Adapter를 달고, /etc/hostname.hme?,/etc/hostname.le? (100M
Network Adapter이면 hme0, hme1, .. 10M Network Adapter이면 le0, le1,
..)에 각 Adapter의 호스트이름을 작성하고, /etc/hosts에 IP Address를
설정하면 사용할 수 있습니다.
2.18. 프린터를 병렬포트에 연결하려면?
Sun Workstation의 병렬포트는 시스템의 종류에 따라 다릅니다. 일단
병렬포트가 있는지 확인하시고 (그림에 // 와 같이 그려진 부분이
병렬포트입니다.) 형태에 맞는 병렬케이블을 구입해서 사용하시면 됩니다.
2.19. 모뎀을 달려면?
2.20. Postscript파일을 출력하려면?
postscript을 지원하지 않는 대부분의 프린터에서 postscript파일을
출력하려면 gs(ghost script)를 사용하면 됩니다. 그리고 postscript를
지원하는 프린터일 경우에도 한글파일들을 출력하려면 gs를 사용하시는게
좋습니다.
gs를 필터로 사용하는 방법은
바랍니다.
그리고 잉크젯 프린터를 이용하여 Color로 출력하려면 해당 프린터의 gs
dev파일을 구하셔서 gs를 재 컴파일 하면 됩니다. stylus color프린터는
dev파일이 기본적으로 들어있으므로 컴파일이 Makefile의 DEVICE_DEVS에
stcolor.dev를 추가하면 됩니다. HP의 잉크젯은
있습니다.
2.21. 네트웍을 지원하는 프린터를 설치하려면?
HP의 제품인 경우 HP의 홈페이지에서 JetAdmin을 받아 패키지를 설치한 후
(/usr/hpnp에 설치한 경우) /usr/hpnp/jetadmin으로 프린터를 추가하면
됩니다. 물론 IP와 Netmask등은 설정해 두셔야 합니다. (서진수님
2.22. JAZZ드라이버나 ZIP드라이버를 달려면?
JAZZ드라이버나 Zip드라이버는 SCSI를 사용하는경우 일반 디스크처럼
사용하실 수 있습니다. 단지 주의하셔야 할 내용은 미디어를 뽑기전에
umount를 하셔야 합니다.
2.23. 백업 하려면?
여러 가지 명령어가 있지만, 가장 기본적인 tar에 대해 말씀드리겠습니다.
만일 /home 디렉토리 이하의 파일들을 /dev/rmt/0에 백업받으려 한다면
다음과 같이 입력하시면 됩니다.
% tar cvf /dev/rmt/0 /home
나중에 백업한 내용을 restore하시려면 /에서 다음과 같이 입력하면
됩니다.
% tar xvf /dev/rmt/0
tar를 사용하는경우 원하는 파일만을 restore하려면 아래와 같이
사용하시면 됩니다. (man tar에서 가져옴)
% tar xvf /dev/rmt/0 `tar tf /dev/rmt/0 | grep 'pattern'`
이 외에도 restore하고자 하는 파일의 리스트를 파일로 만들고(e.g list),
다음과 같이 사용하셔도 됩니다.
% tar xvf /dev/rmt/0 -I list
2.24. Solaris 2.x에서 /dev/rmt/에 있는 장치파일들의 의미
Solaris 2.x에서 Tape드라이버를 달고 device파일들을 만들고 나면
/dev/rmt/디렉토리에 많은 파일들이 생깁니다. 이 파일들은 그 이름에 따라
Tape을 사용하는 방법이 다른데 간단하게 알아보면 일반적으로 파일명은
아래와 같이 생겼습니다.
#[lmhc][b][n] (#는 숫자)
l,m,h,c는 기록밀도입니다. 각각 low, medium, high, compress를
의미합니다. 단순히 장치파일만 생겼다고 모두 지원하는건 아닙니다. com
press를 지원하는 드라이버가 있고, 아닌 드라이버가 있습니다. 그리고 b는
BSD호환의 의미이며, n은 no-rewind의 의미입니다. 따라서 n이 없는
장치파일을 이용해서 백업을 하면 백업이 끝난 후 rewind를 하지만, n이
붙은 장치파일을 이용하여 백업을 하면 rewind를 하지 않습니다. 따라서
하나의 장치에 여러개의 볼륨을 백업하려면 n이 붙은 장치명을 사용해야
합니다.
2.25. 다른 시스템의 테잎 드라이버를 이용하려면?
여러가지 방법이 있겠지만, 가장 간단한 방법은 rsh를 이용하는
방법입니다. 먼저 테입드라이버가 있는 시스템에 .rhosts파일을 만들어서
다른 시스템에서 rsh로 접속할 수 있게 한후 테입드라이버가 없는
시스템에서 다음과 같이 입력하시면 백업할 수 있습니다.
% tar cvf - [파일들] | rsh [테입드라이버가 있는 시스템] dd of=/dev/rmt/0
만일 테입으로 부터 파일을 풀려고 하면 아래와 같이 입력하시면 됩니다.
% rsh [테입드라이버가 있는 시스템] dd if=/dev/rmt/0 | tar xvf -
2.26. patch가 뭔가요?
Sun Microsystems에서 처음 Solaris등의 프로그램을 배포한 후 그 이후에
발견되는 버그들에 대해 수정한 파일을 patch파일이라고 합니다. 만일
105393번을 patch하라고 한 경우 105393이 patch번호입니다. 위와 같은
경우 105393번 patch파일을 구해와서 patch해주면 됩니다.
patch중에는 일반 patch파일과 recommended patch가 있는데, recommended
patch는 이름에서 알 수 있는 것 처럼 추천하는 patch입니다. 운영체제나
프로그램의 보안상의 버그등 중요한 내용이므로 반드시 patch해주는 것이
좋습니다.
Sun Microsystems에서 patch파일을 배포하는 장소는
미러링을 하고 있습니다. 대표적인 곳으로
가까운 곳에서 patch파일을 가져오시면 됩니다.
patch파일을 설치하는 방법은 patch파일의 README에 잘 설명이
되어있습니다. 일반 patch파일의 경우 압축을 풀고 디렉토리에 있는
installpatch를 root권한으로 실행하면 됩니다.
현재 시스템이 patch한 patch파일의 번호를 알기위해서는 showrev -p
명령을사용합니다. 다음은 그 예제입니다.
% showrev -p
Patch: 105393-01 Obsoletes: Requires: Incompatibles: Packages: SUNWcsu
Patch: 105518-01 Obsoletes: Requires: Incompatibles: Packages: SUNWcsu
Patch: 105615-03 Obsoletes: Requires: Incompatibles: Packages: SUNWcsu
.
.
.
Patch: 106125-02 Obsoletes: Requires: Incompatibles: Packages: SUNWswmt
Patch: 105407-01 Obsoletes: Requires: Incompatibles: Packages: SUNWvolu
%
가끔 patch를 설치하려고 하는데, checkinstall이 실패했다고 나오는
경우가 있습니다. Solaris 2.x에서 patch파일들은 nobody란 사용자가 읽을
수 있어야만 설치가 됩니다. patch파일을 푼 디렉토리의 모드를 확인하시고
nobody사용자가 읽을 수 없는 모드라면 다시 설정하시기 바랍니다.
Solaris 2.x에서 patch에 관한 내용은
두셨습니다. 한번쯤 읽어보기를 권합니다.
2.27. SunOS 4.x의 passwd파일을 Solaris 2.x시스템에 맞게 고치려면?
SunOS 4.x까지는 계정관리를 위해 /etc/passwd파일을 사용했지만, Solaris
2.x부터는 /etc/passwd와 /etc/shadow파일을 함께 사용합니다. 따라서
SunOS 4.x에서 Solaris 2.x로 업그레이드를 했을때 계정을 관리하는
/etc/passwd를 /etc/passwd와 /etc/shadow파일로 바꾸어야 하는데 이때
사용하는 명령이 pwconv입니다. 단순히 pwconv라고 실행하면 바꿔줍니다.
Solaris 2.x를 사용하시는 분들중에 가끔 /etc/passwd파일에만 계정을
추가하고 pwconv 명령어를 사용하여 /etc/shadow파일을 갱신하는 분들도
계십니다.
2.28. /etc/passwd와 /usr/bin/passwd의 차이는 뭔가요?
/etc/passwd는 사용자의 정보(ID, UID, 홈디렉토리, shell, 주석등)의
정보가 들어있는 파일이고, /usr/bin/passwd는 /etc/shadow파일에 있는
사용자의 비밀번호를 변경할 때 사용하는 명령입니다.
/usr/bin/passwd는 SUID가 설정되어 있습니다. 왜냐하면 /usr/bin/passwd가
수정하는 /etc/shadow파일은 root만이 읽기/쓰기가 가능합니다. 따라서
일반 사용자가 자신의 비밀번호를 수정할 때 suid가 설정되어 있지 않다면
비밀번호의 변경이 불가능하겠죠? 다음은 제 시스템의 /usr/bin/passwd의
ls결과입니다.
$ ls -l /usr/bin/passwd
-r-sr-sr-x 3 root sys 96796 1997년 7월 16일 /usr/bin/passwd
일반적으로 /etc/passwd의 모드는 444로 되어있는데, 가끔 관리자중에는
일반사용자가 /etc/passwd파일을 읽지 못하도록 모드를 400로 변경하는
경우가 있습니다. 이경우 비밀번호의 변경등은 별 문제없이 가능하겠지만,
ls의 경우 사용자이름이 아닌 UID로 출력하게 됩니다. 왜냐구요? UID를
사용자이름으로 바꾸지 못하니까요. :)
다른 시스템에서는 그렇지 않지만 Solaris 2.x에서는 특이하게도
/etc/passwd, /etc/group, /etc/hosts 의 내용들을 가지고
응용프로그램들에게 이름서비스를 해 주는 nscd라는 서버 프로그램이
있습니다. 이 프로그램때문에 /etc/passwd의 모드를 400로 해 두어도 UID가
아닌 사용자 이름이 나옵니다. 만일 nscd를 띄우지 않고 /etc/passwd등의
파일의 모드를 400로 한경우에는 UID만 나오게 됩니다.
2.29. NT와 Solaris의 비밀번호를 같이 관리하려면?
(이 부분은 제가 잘 몰라서 뉴스그룹에 올라온 몇가지 글들을 종합해
봅니다.) 우선 Solaris 2.6을 써야합니다. 그리고 Samba를 사용할 때 pam
nt_dom이라는 모듈을 사용하시면 Solaris에서 NT의 비밀번호를 변경할 수
있습니다. 그리고 반대로 NT에서 Solaris의 비밀번호등을 관리하려면
Solstice Intranet Extension(Sun의 홈페이지를 보면 Solstice NFS Client
3.1라고 되어있습니다.) 프로그램을 NT에 설치하면 됩니다. 이 프로그램을
사용하면 Solaris가 NIS/NIS+를 사용하셔도 변경할 수 있습니다.
2.30. root 비밀번호를 잊었습니다.
CD-ROM으로 부팅하셔서 하드디스크의 /etc/shadow 파일의 비밀번호부분을
지우시면 됩니다. / 파티션이 /dev/dsk/c0t0d0s0인경우에 아래와 같은
작업을 하시면 됩니다.
ok boot cdrom -s
..
# mount /dev/dsk/c0t0d0s0 /mnt
# TERM=sun;export TERM
# vi /mnt/etc/shadow
# sync; reboot
2.31. /home에 파일을 쓰려면 어떻게 해야 하나요?
Solaris 2.x에서는 /home을 automounter가 mount해서 사용하기 때문에
root라 할지라도 디렉토리나 파일을 만들 수 없습니다. 하지만 실재로는
automounter를 쓰지 않는 경우에도 /home을 쓸 수 없다면 문제가 되겠죠?
이때 /home은 automount를 하지 않으려면 /etc/auto_master파일에서
/home부분을 주석처리 하면 됩니다.
2.32. 계정을 만들 때 자동적으로 .cshrc와 .profile등의 파일을
만들려면?
/etc/skel 디렉토리에 복사하고 싶은 파일들을 만들어 두고 useradd나
admintool로 계정을 만들면 됩니다.
2.33. /etc/passwd파일에서 삭제를 했는데도 로긴이 가능합니다.
만일 NIS를 사용하시면 NIS에서 계정을 삭제하고, NIS map을 rebuild해줘야
합니다.자세한 내용은 NIS의 메뉴얼을 참조하세요.
2.34. passwd를 실행했는데 없는 ID라고 나옵니다.
/etc/shadow나 /etc/passwd의 정보가 잘못되었을때, 비밀번호를 변경하기
위해 passwd를 실행하면 아래와 같은 메세지가 나옵니다.
% passwd
passwd: Changing password for id
passwd(SYSTEM): id does not exist
권한이 거부됨
%
따라서 이 두개의 파일을 찬찬히 살펴보신 후 필요없는 라인이 추가되지
않았는지 아니면 계정에 들어갈 수 없는 글자가 있지는 않은지 확인해
보시기 바랍니다.
2.35. package란 뭔가요?
package는 원래 SVR4에서 프로그램의 설치와 삭제등을 쉽게하기 위해서
필요한 파일을 묶어둔 것을 말합니다. 하지만 주로 Solaris에서 프로그램의
배포에 사용되는 형식을 지칭합니다.
package를 구할 수 있는 가장 대표적인 곳으로
있습니다. 전자에서는 몇가지 대표적인(gcc등) 패키지와 sunfreeware에서
배포하는 패키지를 미러링하고 있습니다. 국내에서는 대표적으로
있습니다. 이 곳에는 sparc와 i86pc 디렉토리가 있는데, 각각 sun의
sparc용 solaris와 solaris for x86용 package들이 있습니다. 그리고
freeware 디렉토리에는 후자에서 배포되는 package들이 있습니다.
package를 설치할 때는 pkgadd라는 명령을 사용하면 됩니다. 사용방법은
pkgadd -d [디렉토리명] [pkg명]입니다. 일반적으로 자주 설치하는
패키지인
다음과 같이 입력하면 설치됩니다.
% gzip -d GNUgcc.2.8.1.SPARC.Solaris.2.6.pkg.tgz
% tar -xf GNUgcc.2.8.1.SPARC.Solaris.2.6.pkg.tar
% pkgadd -d .
가져온 패키지들을 gzip와 tar로 풀면 각각 디렉토리가 만들어지고, 필요한
파일들이 그 디렉토리에 들어갑니다. 그리고 pkgadd명령을 실행하면
설치가능한 패키지들이 나열됩니다.(만일 디렉토리는 분명히 있지만 화면에
나열되지 않는다면 패키지의 디렉토리의 소유권이 적당한지 확인해 보시기
바랍니다.) 사용자가 원하는 번호를 입력하면 설치를 시작합니다.일반적인
패키지의 설치과정이 위와 같지만, 가끔 뉴스그룹으로 질문을 하시는
분들중에
디렉토리가 만들어 지지 않고 pkgadd -d . 를 해도 화면에 나오지
않기때문에 질문하시는 분이 많습니다. 이때는 pkgadd -d [파일명] 을
입력하시면 됩니다. 간단하게 예를들어 보죠.
% gzip -d bison-1.24.gz
% pkgadd -d bison-1.24
위와 같이 간단하게 입력하면 설치하실 수 있습니다.
참고로
없는한 /opt에 설치됩니다. 그에비해 sunsite에서 가져온 패키지들은
일반적으로 /usr/local에 설치됩니다.
2.36. CDE는 뭔가요?
CDE(Common Desktop Environment) (아직 추가하지 못했습니다.
죄송합니다.)
CDE는 Solaris 2.6이라면 OS에 포함되어 있고, 그 이하 버전이면 OS와 같이
들어있는 CD-ROM에서 구할 수 있습니다. 만일 CD-ROM에 없거나, CD가
없을경우에는
이 디렉토리에 가시면 파일이 여러가지가 있습니다. 파일이름중에 dev가
들어간 것은 developer를 의미하며 ab가 들어간 것은 answerbook이
포함되어있다는 의미입니다.
2.37. CDE로긴(dtlogin)의 설정은 어떻게 하나요?
다음과 같은 문제를 생각해 보죠.
처음 CDE를 설치할 때 영문으로 설치를 했습니다. 나중에
한글환경을 쓰려고 CDE에서 ko로 설정을 했는데 한번뿐이고 다시
로그아웃을 하면 영문으로 돌아갑니다. CDE의 기본언어를
설정하려면 어떻게 하면 되나요?
이경우 여러가지 방법이 있지만 다음의 방법을 이용해 보세요. 우선
/etc/dt/config디렉토리를 만듭니다. (만일 디렉토리가 있다면 만들지
마세요.) 그다음 /usr/dt/config/Xconfig를 만든 디렉토리로 복사합니다.
(/usr/dt/config/Xconfig는 수정하시면 안됩니다.) 그리고 /etc/dt/con
fig/Xconfig중에서 Dtlogin*language의 값을 ko로 바꾸시고 저장할 후에
dtconfig -reset을 실행하면 됩니다.
또한 CDE를 설치하면 기본적으로 dtlogin이 뜹니다. 이 화면대신에 원래
로긴화면을 사용하려면 dtconfig -d 와 같이 입력하시면 됩니다. 만일
CDE로긴화면이 뜨게 하려면 dtconfig -e 와 같이 입력하시면 됩니다.
2.38. 부팅할 때 마다 어떤 일을 수행하려면 어떻게 하나요?
Solaris에는 시작 스크립트가 /etc/init.d 에 모여있습니다. 이 스크립트는
대부분 구성이 아래와 같이 되어있습니다.
#!/bin/sh
...
case "$1" in
"start")
# daemon 띄우는 명령어
;;
"stop")
# daemon 죽이는 명령어
;;
*)
# 사용설명
;;
esac
이와 같이 작성해 두시면 실행할때는 start인자를, 실행중인 프로세스를
죽일때는 stop인자를 사용하실 수 있습니다.
또한 Solaris는 /etc/rcX.d(X는 S, 0, 1, 2, 3)에서 필요한 스크립트를
수행합니다. 만일 Single User모드로 부팅했다면 /etc/rcS.d에 있는
파일들을, 보통때는 모두다 수행합니다. 따라서 이들중 한 디렉토리에
SXXfilename(XX는 원하는 두자리 숫자, filename은 임의의 이름)이라는
파일을 /etc/init.d에 만들어 둔 스크립트에 하드링크를 해 두면 됩니다.
rc 프로세스는 숫자가 작은 스크립트부터 차례로 수행해 줍니다.
그리고 SunOS 4.1.x에서는 /etc/rc.* 파일에 적어넣어면 됩니다.
일반적으로 rc.local에 적는 경우가 많습니다.
그리고 그냥 스크립트를 작성하면 root권한으로 수행됩니다. 하지만 몇몇
프로그램의 경우에는 root가 아닌 일반 유저의 권한으로 수행되어야 하는
경우가 있는데 이때는 su명령을 사용하시면 됩니다. 만일
/some/where/daemon을 nobody권한으로 수행하고 싶다면 시작 스크립트에
아래와 같이 적어주면 됩니다. (서진수님
su nobody -c '/some/where/daemon'
2.39. 부팅시 마운트되는 순서는?
가장 먼저 /와 /usr는 읽기전용으로 마운트합니다. 이때 문제가 있다면
커널이 이 두개의 파티션에 대해 fsck를 수행합니다. 그리고 문제가 없다면
두번째로 swap을 마운트합니다. 세번째로 /와 /usr를 쓰기가 가능하도록
다시 마운트합니다. 그 이후에 /usr/platform, /proc, /dev/fd등을
차례대로 마운트합니다.
/etc/vfstab을 보면 / /usr /var 파일시스템은 mount at boot항목이 no로
되어있습니다. 따라서 이 파티션이 언제 마운트되는지 궁금해 하시는
분들이 많은데, / /usr /var는 부팅과정에 필요한 파티션이기 때문에
커널이 미리 마운트합니다. 그래서 /etc/vfstab에서는 no로 설정이 되어
있는것입니다.
2.40. 다른 시스템의 X Window 프로그램을 수행하고 싶습니다.
디스플레이를 사용하는 시스템에서 xhost로 프로그램이 있는 시스템을
적어주고, 프로그램이 있는 시스템의 DISPLAY환경변수를 수정하면 됩니다.
만일 A가 현재 사용하는 컴퓨터(X Server)이고 B가 응용프로그램이 있는
컴퓨터라면 아래와 같이 입력하면 됩니다. (csh를 사용한다고 가정)
[A]% xhost + B
[A]% telnet B
[B]% setenv DISPLAY A:0.0
[B]% 응용프로그램
2.41. 로컬시스템의 X 프로그램을 실행했는데 display를 열수없다고
합니다.
같은 시스템이더라도 telnet이나 su로 한번 거쳐서 접속한 경우에는 아래와
같은 에러가 발생합니다.
Error: Can't open display: unix:0
이때는 su나 telnet전에 xhost + localhost등을 입력해 주고, su나
telnet후 DISPLAY환경변수를 localhost:0.0으로 설정하시면 됩니다.
2.42. libX11.so.6.1이 없다고 에러가 납니다.
Solaris 2.6이라면 openwindow가 X11R6를 지원합니다. 따라서
/usr/openwin/lib/libX11.so.4 를 가리키는 libX11.so.6.1을 만들면
됩니다.
Solaris 2.5.1 이하라면 시스템의 버젼에 맞는 X11R6 패키지를 설치하시면
됩니다.
혹 LD_LIBRARY_PATH가 적절히 설정되지 않은경우도 있습니다. 이
환경변수도 확인해 보시기 바랍니다. 참고로 LD_LIBRARY_PATH는
동적라이브러리(libX11.so.6등의 라이브러리)가 있는 디렉토리들을
지정하고 있습니다. 만일 /usr/local/X11R6/lib를 추가하고 싶다면 아래와
같이 입력하면 됩니다.(csh이라고 가정)
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/X11R6/lib
2.43. 최근 login한 사람들에 대한 정보를 알수 없나요?
사용자들이 login하면 그 정보가 /var/adm/utmp에 저장됩니다. 이 파일에
저장된 내용을 출력해주는 프로그램이 /usr/bin/last입니다. 그리고
참고적으로 /var/adm에는 utmp, utmpx, wtmp, wtmpx가 있는데 utmp, wtmp는
같은 파일이고 utmpx, wtmpx는 utmp의 확장파일입니다. 만일 어떤 사용자의
최근 접속상황을 보려면 last id라고 하시면 됩니다.
utmp, wtmp, lastlog등은 사용자가 시스템에 접속했을 때 로그가 기록되는
파일로 /usr/bin/login프로그램에 의해 만들어집니다. 만일 만들고 싶지
않다면 login프로그램을 수정(?)하시든지, 아니면 주기적으로 지워주는
방법밖에 없습니다. 주기적으로 지워줄때는 cron등을 이용하시면
편리합니다. 그리고 아예 만들지 않으려면 wtmpx등의 파일을 /dev/null의
링크파일로 만드는 방법이 있습니다.
2.44. syslogd는 어떤 역활을 하나요?
언제, 어디서, 누가, 어떤 서비스를 통해서 시스템에 접속을 시도했는지를
기록해주는 서버입니다. 대표적으로 telnet, ftp, mail등에 대한 로그를
만들어줍니다. 그리고 syslogd에 대한 설정파일은 /etc/syslog.conf입니다.
syslogd에 의해 만들어진 log파일은 /var/log에 생성됩니다.
/etc/hosts에 보면 loghost라는 부분이 있습니다. 이 부분은 syslogd에
의해 사용됩니다. (추가설명 필요)
2.45. cron이 실행되지 않습니다.
crontab에 등록하려고 하니 다음과 같은 메세지가 나옵니다. 이런경우에는
cron may not be running - call your system administrator
warning: commands will be executed using /usr/bin/sh
cron을 사용하려면 cron.allow에 등록이 되어있어야 합니다. 첫번째
메세지는 cron.allow에 등록이 되어있지 않기 때문에 생기는 메시지입니다.
그리고 cron은 /bin/sh를 기본쉘로 사용하지만 /bin이 /usr/bin에
링크되어있기 때문에 두번째와 같은 에러가 출력됩니다. 따라서 두번째
메시지는 무시하셔도 됩니다.
2.46. Solaris 2.x에서 시스템의 최대값을 알려면?
Solaris 2.x에서 시스템의 maximum값(maximum filesize, maximum stacksize
등등)은 ulimit를 사용하면 알 수 있습니다. 이 값을 바꾸려면
/etc/system파일에 합니다. 다음은 사용자당 사용할 수 있는 최대
프로세스갯수와 시스템의 최대 프로세스갯수를 설정하는 예제입니다.
set maxuprc=512
set max_nprocs=1024
시스템의 메시지큐 크기를 변형하려면/etc/system 에 msginfo_msgmnb xxx
와 같이 (xxx는 큐의 크기) 적으면 됩니다.
2.47. Solaris에서 hostid를 변경하려면?
host ID는 변경할 수 없습니다.(원칙) 하지만 가끔 변경하는 프로그램이
나오곤 하죠.(Solaris 2.5의 hid2, SunOS 4.1.3의 sethostid 등) hid2는
2.48. Solaris 2.x는 y2k에 안전한가요?
있습니다. 일반적으로 Recommended Patch를 설치하고, y2k Patch를
설치하시면 됩니다.
2.49. TT_DB/ 디렉토리는 뭔가요?
Solaris의 서비스중에 rpc.ttdbservd가 TT_DB 디렉토리에 데이터베이스를
생성, 삭제합니다. 따라서 rpc.ttdbservd를 띄우지 않는다면, 삭제하셔도
됩니다. (박창민님)
2.50. Solaris 2.6에서 2GB이상의 파일을 사용하려면?
Solaris 2.6에서 프로그램이 2GB이상의 파일을 지원하려면 2.6에서 아래의
옵션을 사용하여 컴파일해야 합니다. (이석찬님)
CFLAGS = "`getconf LFS_CFLAGS`"
DEFS = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
LDFLAGS = "`getconf LFS_LDFLAGS` -s"
LIBS = "`getconf LFS_LIBS`"
따라서 Solaris 2.6이 아닌 시스템에서 컴파일된 프로그램은 위의 옵션을
사용하여 다시 컴파일 하셔야 합니다.
2.51. talk에서 한글을 쓰려면?
LANG환경변수를 ko로 설정하고, /usr/SUNWale/bin/talk를 사용하면 됩니다.
2.52. 비밀번호 없는 계정을 만들려면?
SunOS 4.x까지는 /etc/passwd에 비밀번호란을 지우면 되지만, Solaris
2.x에는 비밀번호를 관리하는 /etc/shadow의 비밀번호란을 지워도 로긴하면
다시 입력하게 되어있습니다. 이때 로긴시 비밀번호를 입력하지 않도록
하려면 /etc/default/login에서 PASSREQ=NO로 만들면 됩니다.
2.53. 최대접속가능한 터미널 수를 늘이고 싶습니다.
SunOS 5.x에서 최대 터미널 수는 /etc/system 에서 설정합니다. 만일 최대
접속가능한 터미널 수를 100으로 하고 싶다면 set pt_cnt = 100 을
/etc/system 파일에 넣어주면 됩니다.
2.54. CD Writer를 사용하려면?
CD Writer를 이용할 수 있는 프로그램중 대표적인 프로그램으로 mkisofs가
있습니다. 이 프로그램에 관한 자세한 정보는
3. 네트웍 관련 질문들
3.1. 허가된 IP에서만 네트웍접속이 가능하게 하려면?
TCP Wrapper프로그램을 구하셔서 설치하시면 됩니다. 이 프로그램을
이용하면 telnet, ftp등 대부분의 서비스에서 접근을 제어할 수 있습니다.
3.2. Shell을 바꾸었더니 ftp로 로긴이 안됩니다.
ftp daemon은 /etc/shells에 등록된 shell을 사용하는 계정만 접속을
허용합니다. 만일 /etc/shells파일이 없는경우에는 /usr/bin/sh,
/usr/bin/csh, /usr/bin/ksh, /usr/bin/jsh /bin/sh, /bin/csh, /bin/ksh,
/bin/jsh, /sbin/sh, /sbin/jsh만 접속을 허용합니다. 그래서 최근에 많이
사용되는 bash나 tcsh는 파일에 적어주지 않으면 ftp로 접속이 되지
않습니다.
3.3. 비밀번호없이 ftp나 telnet으로 접속하는 방법이 있을까요?
~/.netrc파일을 사용하시면 됩니다. 자세한 내용은 man netrc로
살펴보시고, 간단하게 말씀드리자면, ~/.netrc파일을 만들고 내용을 다음과
같이 만듭니다.
% cat ~/.netrc
machine a.example.com
login guest
password 1234
machine b.example.com
..
%
위와 같이 작성해 두시면 ftp로 a.example.com을 접속하면 ID와 비밀번호를
묻지 않고 바로 login이 됩니다. 그리고 이 파일을 만들때 주의하실 사항은
남들이 이 파일을 볼 수 없도록 chmod를 이용하여 소유권을 바꿔야 합니다.
만일 적당하지 않은 소유권으로 되어 있는경우에는 작동하지 않습니다.
일반적으로 400나, 600를 사용하시면 됩니다. 하지만 가능하면 이 방법은
사용하지 않는게 좋습니다. :)
rlogin을 사용하셔도 됩니다. 우선 접속하고자 하는 시스템의 홈디렉토리에
.rhosts파일을 만들고 ([접속을 허용하는 시스템이름] [계정] 쌍으로
만드시면 됩니다.) 접속할때는 rlogin [원격시스템이름] -l [계정]으로
접속하시면 됩니다. 하지만 보안상 별로 좋은 방법은 아니니, 꼭
필요할때가 아니면 쓰지 마세요.
3.4. 특정사용자는 ftp로 접속하지 못하게 하고싶습니다.
/etc/ftpusers파일에 적어주면 됩니다. 만일 aaa와 bbb사용자는 ftp로
접속하지 못하게 하려면 아래와 같이 파일을 만들면 됩니다.
% cat /etc/ftpusers
aaa
bbb
%
3.5. 텍스트 파일에서 줄의 끝에 ^M이 붙어있습니다.
DOS와 UNIX간에 텍스트파일의 차이때문입니다. DOS에서는 라인구분을
CR+LF를 사용하고, UNIX에서는 LF만을 사용합니다. 따라서 DOS의
텍스트파일을 UNIX로 보내면 끝에 CR이 보이게 됩니다. (참고로 맥은
CR만을 사용합니다.)
^M을 안나오게 하려면 전송할때 binary대신 ascii로 재전송하거나,
dos2unix등의 프로그램을 이용하거나, vi, sed등을 이용해서 ^M을 제거하면
됩니다. vi를 사용할때는 :1,$s/^M$// 와 같이 입력하면 되고, sed를 쓸
때는 sed 's/^M$//' oldfile > newfile과 같이 사용하면 각 줄의 끝에 있는
^M을 지워줍니다. (^M을 입력할때는 Ctrl키를 누른상태에서 v와 m을 누르면
됩니다.)
3.6. ftp 사용을 일괄적으로 처리하려면?
가끔 이런 생각을 할때가 있습니다. ftp를 이용해서 다른 서버에 있는
파일을 가져오는데 항상 같은 파일을 가져온다면 매번 명령을 직접
입력하는게 귀찮아서 한꺼번에 하는 방법이 없을까? 라구요. 물론 expect를
써서 수행해도 되지만 ftp자체에 일괄적으로 처리하는 방법을 제공합니다.
만일 hostname에 접속해서 userid와 passwd를 입력하고 something이란
파일을 가져온 후 something2란 파일을 올리고 종료하려면 아래와 같은
파일을 만들어서 ftp를 호출하면 됩니다.
$ cat ftp.cmd
open hostname
user userid passwd
get something
put something2
bye
$ cat ftp.cmd | ftp -n
3.7. ftp로 어떤 서버에 접속을 하니 파일이 하나도 보이지 않습니다.
아마도 특정내용을 한글로 출력해서 파일이 보이지 않는것 같습니다.
사용자입장에서는 한글로 출력하는 내용을 잘 처리하는 ftp 프로그램을
사용하시면 됩니다. 만일 서버에서 날짜정보를 한글로 출력하지 않으려면
/etc/rc2.d/S72inetsvc에서 맨 밑줄의 /usr/sbin/inetd -s 앞줄에
LANG=C;export LANG 을 추가하시면 됩니다. (이 문제는 Solaris 2.5의
기본적인 in.ftpd에서 생기고, cute-ftp, Netscape에서 동일한 현상이
났습니다.)
3.8. anonymous ftp를 설치하고 싶습니다.
ftpd의 메뉴얼을 보면 잘 나와있지만, 간단히 설치하려면
실행하시면 됩니다. Solaris 2.5 이상에서는 아래의 작업으로 두개의
파일을 더 복사해 주시면 됩니다.(~ftp를 ftp가 설치된 디렉토리라고
가정합니다.)
% cp /devices/pseudo/tl@0:ticlts ~ftp/dev/ticlts
% chmod 666 ~ftp/dev/ticlts
% cp /usr/lib/libmp.so.* ~ftp/usr/lib
3.9. ftp로 접속해서 만든 파일의 모드는 어떻게 결정되나요?
Solaris 2.6을 사용하고, 시스템의 기본적인 in.ftpd를 사용한다면
/etc/default/ftpd에 UMASK= 부분을 수정하시면 원하는 umask를 설정하실
수 있습니다.
wu-ftpd를 사용한다면 wu-ftpd를 띄울때 -u 옵션을 사용하여 변경할 수
있습니다.
3.10. wu-ftpd 2.4에서 last명령으로 ftp접속기록이 나오게 하려면?
wu-ftpd 2.4는 기본적으로 utmpx 구조를 지원하지 않습니다. 그 때문에
last명령으로 ftp접속기록이 나오지 않습니다. 만일 wu-ftpd 2.4에서
wtmpx구조를 지원하게 하려면
있는 패치를 설치하면 됩니다.
3.11. wu-ftpd에서 접속시 메시지를 출력하려면?
/etc/ftpaccess파일을 아래와 같이 편집하면 됩니다.
message /.welcome login # 사용자가 로긴할때 나오는 메시지
message .message cwd=* # 특정 디렉토리에를 접근할 때 나오는 메시지
banner /.banner # 서버에 접속할때 나오는 메시지
3.12. telnet으로 접속한 상태에서 잠시 local작업을 하려면?
telnet으로 원격시스템을 사용하는 도중에 Escape character를 누르시면
telnet prompt가 나타납니다. 여기에서 여러가지 telnet명령어들을 사용할
수 가 있는데, 그중에서 z명령을 사용하시면 telnet프로세스가
foreground에서 background로 전환됩니다. 이렇게 전환해 두시고
local에서 필요한 작업을 하시고 jobs로 Job ID를 확인한 후 fg %JobID 로
돌아오시면 됩니다.
기본적으로 telnet에서 Escape character는 ^]로 되어 있습니다. 이럴경우
몇군데 접속했다가 ^]를 사용하면 모두 빠져나오기 때문에 Escape
character를 바꾸고 싶다면 telnet으로 접속하실때 -e 옵션을 사용하시면
됩니다. 만일 Ctrl+p를 Escape character로 사용하시려면 다음과 같이
입력하시면 됩니다.
% telnet -e ^p hostname
위에서 ^p 는 Ctrl이 아닌 단순한 ^키와 p키를 사용하시면 됩니다.
-e 옵션 이외에 Escape character를 변경하는 방법으로는 telnet
prompt에서
______________________________________________________________________
set escape ^p
______________________________________________________________________
3.13. telnet등에서 내용을 암호화해서 전송하려면?
telnet이나 rlogin등으로 원격시스템에 접속을 하면 비밀번호등이 평문으로
전송되기 때문에 보안에 문제가 될 수 있습니다. 따라서 이 메시지를
암호화 해서 보내는 프로그램들이 많은데 그중에서 대표적인 프로그램으로
ssh(Secure Shell)가 있습니다.
ssh를 양쪽 시스템에 설치하고 (ssh는 일반사용자도 설치해서 쓸 수
있습니다.) ssh, slogin, scp등을 사용하시면 암호화해서 자료를 전송해
줍니다. (Win95나 Mac에서는 ssh를 지원하는 터미널 프로그램을 사용하시면
됩니다.) 이뿐만 아니라 X 프로그램을 Network에서 실행할 때도 암호화 해
줍니다. ssh에 관한 내용은
3.14. telnet으로 하이텔등에서 프로그램을 다운로드 받으려면?
z-modem 프로토콜을 지원하는 ztelnet프로그램을 사용하시면 됩니다.
ztelnet은
수 있습니다. 하지만 일반적인 소스를 이용해서 Solaris에서 컴파일하기는
힘듭니다. SPARC에서 돌아가는 바이너리도 SunOS 4.x에서 static으로
컴파일 한 것들입니다. (바이너리가 있는 URL을 알려주시면 좋겠습니다.)
3.15. 웹서버를 설치하려면?
여러가지 웹서버를 설치할 수 있지만 가장 많이 사용되는 apache웹서버를
설치하려면 Apache의 홈페이지
좋습니다. 만일 영어에 익숙하지 않다면 한국 apache서버그룹
3.16. 웹사이트에 대한 접속통계를 내려면?
웹서버는 클라이언트로 부터의 요청을 log파일에 남겨둡니다.(apache의
경우 access_log) 이 로그파일을 이용해서 보기쉬운 형태로 만들어주는
프로그램들이 많이 있습니다. 최경렬님은 아래의 세가지를 추천하시더군요.
3.17. 시스템에 메일이 도착했을때 다른 계정으로 메일을 보내려면 어떻게
하면 되나요?
홈디렉토리에 .forward파일을 만들어서 보낼 계정의 전자메일주소를
적어주면 됩니다. 만일 aaa at bbb.com으로 메일을 보내려면 다음과 같이
만들면 됩니다.
% cat $HOME/.forward
aaa at bbb.com
이렇게 설정해 둔 경우 처음 받은 시스템에 메일이 없습니다.
리다이렉션도하고 메일도 보관을 하려면 계정앞에 \ 를 쓰면 됩니다.
아래는 louis@white로 메일이 왔을때 louis@taegu로 메일을 보내고
white에도 보관해 두는 예제입니다.
% cat ~/.forward
\louis@white
louis@taegu
%
메일이 도착했을때 자동으로 프로그램이 실행되게 하려면 | 를 사용하면
됩니다. 홈디렉토리에 .forward파일을 만들고 아래의 형식으로 적어주시면
됩니다.
|program
아래는 louis@white로 메일이 왔을때 /export/home/louis/ttt라는 파일 의
내용을 louis at kebi.com으로 메일보내는 예제입니다.
% hostname
white
% cat ~/.forward
|/export/home/louis/act
% cat /export/home/louis/act
#!/sbin/sh
PATH=/sbin:/usr/bin
mail louis at kebi.com > /export/home/louis/ttt
하지만 관리자가 보안상의 이유로 smrsh를 설치했다면 관리자가 지정한
프로그램만 위의방법을 이용해서 실행할 수 있습니다. (최경렬님)
3.18. 계정명에 대문자가 들어있는경우 메일을 받으려면?
sendmail을 MTA로 사용하시는 경우에 sendmail.cf의 Mlocal로 시작하는
부분에 보시면 F=이라고 된 부분이 있습니다. 이곳에 u를 추가하면
대문자로 된 계정에서도 메일을 받아볼 수 있습니다. 그리고 procmail을
사용하신다면 3.10이상으로 업그래이드하셔야 합니다. 하지만 계정에는
대문자를 안 쓰시는게 좋습니다. (특히 NIS+를 쓸경우 말썽을 많이
부립니다.)
3.19. 메일을 보내는 사람에게 자동으로 일정한 메시지를 답장으로
주려면?
잠시 E-mail을 확인하지 못해서, 메일을 보내는 사람들에게 일정한
메시지로 답장을 자동으로 보내고 싶을때가 있습니다. 이때는
/usr/bin/vacation을 사용하면 됩니다. 만일 계정이 louis이라면
.forward파일에 아래와 같은 줄을 삽입하면 됩니다. 그리고 편지의 내용은
$HOME/.vacation.msg에 적어넣으면 됩니다.
% cat $HOME/.forward
\louis
"|/usr/bin/vacation louis"
%
위와 같이 해 두면 받은 메일은 메일박스에 저장되고 자동으로 답장이
보내집니다. 참고로 자세한 내용은 vacation의 메뉴얼을 참조하시기
바랍니다.
3.20. 메일계정만 주고, shell계정을 안주는 방법
일반 계정에 shell을 noshell등으로 비정상적인 shell을 지정해두면 비슷한
효과를 거둘 수 있습니다. 또한 uid가 같은 계정에서도 메일을 주고
받는데는 상관이 없습니다.
3.21. tin에서 뉴스서버지정
NNTPSERVER 환경변수에 지정하시면 됩니다. 만일 csh을 사용한다면 setenv
NNTPSERVER [뉴스서버 이름] 과 같이 .cshrc에 지정해 두시면 됩니다.
3.22. Windows환경의 자원을 UNIX에서 사용하려면?
Windows에서 사용하는 SMB프로토콜을 UNIX에서 사용할 수 있도록 만든
Samba를 사용하시면 됩니다. Samba에 관한 내용은 박재호님의
바랍니다.
Win98에서는 암호로 DES를 사용하기 때문에 로긴이 안됩니다. 이문제를
해결하려면 Win98에서 DES를 사용하지 않도록 하면 됩니다. NT에서는
HKEY_LOCAL_MACHINE\system\current controlset\services\rdr\parameters
에 EnablePlainTextPassword라는 REG_DWORD형의 변수를 만들고 값을 1로
해주면 되고, Win98에서는 HKEY_LOCAL_MACHINE\system\current
controlset\Services\VxD\VNETSUP 에 EnablePlainTextPassword라는
DWORD형의 변수를 만들고 값을 1로 해주면 됩니다.
3.23. 시스템의 IP Address를 변경하고 싶습니다.
IP Address를 변경할때 시스템의 이름과 함께 변경하는 방법과, 이름은
그대로 두고 IP Address만 변경하는 경우가 있습니다. 후자의 경우에는
/etc/hosts에서 시스템의 이름에 해당하는 IP Address를 바꾸고 재부팅을
하시면 됩니다. 만일 재부팅 할 환경이 안된다면 ifconfig명령으로 IP
Address를 변경하시면 됩니다. 그리고 시스템의 이름과 함께 변경한다면
/etc/hostname.hme0나 /etc/hostname.le0에 적힌 시스템의 이름을 변경하고
/etc/hosts에 변경하면 됩니다. 참고로 IP Address의 설정은
/etc/rcS.d/S30rootusr.sh에서 이루어집니다.
3.24. 하나의 Adapter에 두개의 IP address를 할당하려면?
ifconfig에서 네트웍 디바이스를 지정할 때 hme0:1 로 해 보세요. 하나 더
추가를 하고 싶다면 hme0:2 로 하면 되겠죠?
% ifconfig hme0:1 xxx.xxx.xxx.xxx 255.255.255.0 up
3.25. gateway설정은?
Solaris 2.x의 default gateway의 설정은 /etc/rc2.d/S69inet에서 합니다.
이때 /etc/defaultrouter파일의 내용을 읽어서 설정합니다. 따라서 default
gateway의 설정은 /etc/defaultrouter파일을 수정하시면 됩니다.
임시로 gateway를 설정하려면 route명령을 사용하면 됩니다.
default gateway가 아닌 gateway설정을 영구히 하려면 /etc/rc2.d/S69inet
에 route명령을 사용하여 추가하시기 바랍니다.
3.26. DNS서비스를 받으려면?
Solaris 2.x에서 DNS서비스를 받으려면 /etc/resolv.conf파일과
/etc/nsswitch.conf파일을 수정해야 합니다.
% cat /etc/resolv.conf
search [도메인이름]
nameserver [서버의 IP주소]
% cat /etc/nsswitch.conf
.
hosts: files dns
.
SunOS 4.x에서 DNS서비스를 받으려면 NIS관련 프로그램을 설치해야 합니다.
아래의 절차를 따라해 보시기 바랍니다.
# mkdir /var/yp
# cp /usr/lib/NIS.Makefile /var/yp/Makefile
이렇게 파일을 복사한 후 /var/yp/Makefile을 보면 B=-b와 B= 이라는
부분이 있는데 DNS서비스를 받을려면 B= 에 주석을 달고 B=-b에 있는
주석을 제거해야 합니다. 이렇게 설정해 두고 /etc/rc.local 에서 ypxfrd;
echo -n ' ypxfrd'의 주석을 제거합니다. 그리고 domainname명령으로
시스템의 도메인이름을 설정한 후 ypinit로 NIS 데이터베이스를
설치합니다.
# /usr/etc/yp/ypinit -m
위와 같이 입력하면 몇가지 질문이 나오는데, 환경에 맞게 대답하면
/var/yp에 여러가지 파일이 생성되고/var/yp/[도메인이름] 디렉토리가
생깁니다. 마지막으로 /etc/resolv.conf파일에 DNS 서버를 지정한 후
재부팅하면 DNS서비스를 받을 수 있습니다. 자세한 내용은 SunOS 4.1.3의
메뉴얼중 NIS에 관련된 내용을 참조하시기 바랍니다.
3.27. 공개 NMS를 구하려면?
3.28. 시간 서버를 사용하려면?
네트웍 서버로 부터 시간을 맞추려면 NTP(Network Time Protocol)을 구현한
프로그램을 사용하면 됩니다. 자세한 정보는
3.29. 메일 서비스를 하고 싶습니다.
가장 기본적으로 메일서비스를 하려면 SMTP서버와 POP3서버를 제공해야
합니다. 가장 대표적인 SMTP서버인 sendmail에 관한 정보는
바랍니다. POP3서버에 관한 정보도 같이 제공됩니다.
4. 개발환경에 관한 질문들
4.1. 컴파일 할 때 /usr/ucb/cc 가 작동하지 않습니다
Sun에서는 SunOS 4.x.x까지는 C컴파일러를 OS의 일부로 주었지만,
Solaris부터는 옵션으로 즉 따로 구입하게 만들었습니다. 그래서 Sparc C를
구입하지 않은 시스템에서 cc hello.c라고 입력하면 /usr/ucb/cc: language
optional software package not installed라는 메세지를 뿌려줍니다.
따라서 많은 사람들이 무료로 사용할 수 있는 gcc를 설치해서 사용하는데
gcc는 컴파일해서 설치할 수도 있고, 다른 사람들이 package로 만들어
둔것을 설치하는 방법도 있습니다.
4.2. gcc를 설치하려면?
만일 옛날버젼의 gcc가 이미 설치되어 있다면 컴파일해도 되지만, 그렇지
않은경우에는 이미 컴파일되어있는 package를 가져와서 설치하시면 됩니다.
package의 설치방법은 본 FAQ의 package설치부분을 참고하시기 바랍니다.
소스를 받으려면 GNU 프로그램의 미러링사이트에서 받을 수 있습니다.
Solaris 2.x용 패키지는
설지는 본 FAQ의 패키지란 뭔가요? 부분을 참고하시기 바랍니다.
소스를 컴파일 하시는 경우 기본적인 컴파일러가 설치되어 있어야 하며
일반 GNU 프로그램과 비슷하게 아래와 같은 과정을 거치면 됩니다.
$ gzip -dc [gcc 소스파일] | tar xf -
$ cd [gcc 소스파일 디렉토리]
$ ./configure
$ make
$ make install
SunOS 4.x의 경우에는 기본적인 BSD cc가 설치되어 있으므로 gcc를 컴파일
할 수 있습니다. 소스 컴파일 과정을 거치면 됩니다.
4.3. /usr/include등에 header파일이 없습니다.
아마도 처음 Solaris를 설치하면서 End User용으로 설치하셨나 보군요. End
User용으로 설치할 경우 compiler에 관련된 파일들은 설치가 안됩니다. 이
경우 아래 패키지를 설치하시면 됩니다. (서진수님
SUNWdoc: Documentation Tools
SUNWman: On-Line Manual Pages
SUNWhea: SunOS Header Files
SUNWarc: Archive Libraries
SUNWtoo: Programming Tools
SUNWbtool: CCS tools bundled with SunOS
SUNWlibm: Sun WorkShop Bundled libm
SUNWsprot: Solaris Bundled tools
4.4. gdb와 xxgdb는 어떤 프로그램입니까?
gdb는 GNU에서 만든 debugger입니다. 그리고 xxgdb는 gdb를 X Window에서
쓸 수 있도록 해 줍니다.
4.5. SPARCompiler등을 설치했는데 license file이 없다고 합니다.
license file이 정상적으로 설치되지 않은경우 아래와 같은 에러가 납니다.
License Error : Cannot find license file
(/usr/local/flexlm/licenses/license.dat)
for SPARCompiler C
Cannot find license file (-1,73:2) No such file or directory
The product has not been installed properly.
Cannot find license file (-1,73:2) No such file or directory
There are no license files in following path :
None
Cannot find license file (-1,73:2) No such file or directory
license file을 설치하려면 SPARCompiler와 같이 들어있는 License Man
ager를 설치하시면 됩니다.
4.6. gcc를 사용할경우 xmkmf가 정상적으로 작동하려면?
gcc를 사용하는 환경에서 xmkmf를 실행하면 Makefile이 SPARCompiler를
기준으로 만들어집니다. 이 때문에 컴파일러 옵션등에서 Warning이 많이
발생하는데 이 문제를 해결하려면 /usr/openwin/lib/config 파일을
수정하면 됩니다. 보통 쉬운일이 아니지만 만일 Solaris 2.6이라면
/usr/openwin/lib/config의 두파일을 아래를 기준으로 고치면
됩니다.(이석찬님) (Solaris 2.6이 아닌 환경에서 해 보신분은 원래파일과
고친파일을 보내주시면 FAQ에 올리도록 하겠습니다.)
% diff site.def.orig site.def
36d35
< /*
40d38
< */
42d39
< /*
46d42
< */
%diff sun.cf.orig sun.cf
4c4
< #define HasSunC YES
---
> XCOMM #define HasSunC YES
4.7. make가 없다고 합니다.
make는 기본적으로 /usr/ccs/bin에 있습니다. 자신의 PATH환경변수에
/usr/ccs/bin이 들어있는지 확인해 보시고, 만일 /usr/ccs/bin에
make파일이 없다면 가까운 GNU프로그램 미러사이트에서 GNU make를 받아서
설치하시면 됩니다. 또는 SUNWsprot 패키지를 설치하시면 됩니다.
(서진수님
5. 사용자 환경에 관한 질문들
5.1. DOS의 doskey와 같은 기능이 있나요?
ksh을 사용하고, set -o emacs라고 설정해두었다면 ^P를 누르면 doskey의
기능을 합니다. 만일 tcsh나 bash를 사용한다면 간단히 화살표만으로도
doskey기능을 사용할 수 있습니다.
5.2. root의 shell은 어떻게 바꾸나요?
root도 일반 사용자와 마찬가지로 /etc/passwd에서 수정하시면 됩니다.
하지만 root의 shell은 /sbin/sh에서 다른 프로그램으로 바꾸지 마세요.
다른 프로그램으로 바꾼경우 많은 문제점(?)들이 생길 수 있습니다. 차라리
/sbin/sh으로 들어가서 다른 shell을 실행해서 사용하시는게 좋습니다.
5.3. 프롬프트에 현재 디렉토리를 표시하려면?
기본적으로 sh에서 프롬프트에 현재디렉토리를 표시하는 기능은 없습니다.
하지만 sh에의 함수기능을 사용하면 흉내를 낼 수 있습니다. .profile에
아래와 같은 줄을 입력하시기 바랍니다.
cd() { chdir $*; PS1="`pwd` $ "; }
참고로 csh은 여러가지 방법이 있습니다. dirs라는 명령어를 사용하려면
아래와 같이 사용하시면 됩니다.
alias cd 'cd \!*; set prompt="`dirs` %"'
dirs명령 이외에도 cwd라는 변수에는 현재의 디렉토리가 들어있습니다. 이
변수를 이용하려면 아래와 같이 사용하시기 바랍니다.
alias cd 'cd \!*; set prompt="$cwd %"'
bash를 사용하신다면 아래와 같은 한줄을 .bashrc에 삽입하시기 바랍니다.
export PS1="\W $ "
tcsh를 사용하신다면 아래와 같은 한줄을 .tcshrc에 삽입하시기 바랍니다.
tcsh에서는 %/ 또는 %~ 가 prompt 에서 현재 디렉토리를 표시합니다.
set prompt="%/ % "
5.4. root계정의 환경설정은 어디에서?
일반 사용자의 경우에는 환경을 설정하려면 자신의 홈 디렉토리에 있는
.cshrc .profile등등을 수정하면 됩니다. 이와 마찬가지로 root계정도
root계정의 홈디렉토리의 .profile이나 .login등을 수정하면 됩니다.
가끔 사용자중에 root의 환경설정은 일반 계정에게도 영향을 미친다고 알고
계신데 그렇지 않습니다. 만일 전체 사용자에게 영향을 주려면
/etc/profile이나 /etc/.login등을 수정하셔야 합니다.
5.5. 3벌식 자판을 사용하려면?
Solaris 2.x의 기본적인 한글 입력기인 htt는 2벌식만 지원합니다. 3벌식을
사용하시려면 Mizi Research에서 개발한 hanIM을 사용해 보세요. hanIM은
5.6. vi에서 한글이 입력되지 않습니다.
여러 가지 문제일 수 있지만 대표적으로 다음과 같은 두가지 때문입니다.
만일 ">H3gGo" 같은 형태로 입력이 되지 않으면 쉘에서 8번째 bit가
strip되기 때문에 stty -istrip을 입력하셔서 strip되지 않도록 하시고,
"\276\236"와 같은형태로 나오면 쉘에서 환경변수 LANG을 ko로 설정하시기
바랍니다. 만일 환경변수 LANG을 C로 해야 하는 경우에는 LC_CTYPE을
iso_8859_1로 설정하시고 stty -istrip -parenb cs8을 설정해 두면 한글을
사용할 수 있습니다.(최경렬님)
5.7. CDE의 스타일관리자에서 배경그림을 추가하고 싶습니다.
그림 형식을 xpm으로 하고, 확장자를 pm으로 해서
/usr/dt/share/backdrops에 저장하시면됩니다. 이때 그림에 따라 되는것도
있고 안되는것도 있습니다. 그리고 그림이 너무 크면 목록에도 나오지
않습니다.
6. 기타
6.1. Netscape를 실행했는데 다음과 같은 Warning이 계속출력됩니다.
Warning:
Name: Text
Class XmTextField
2054-xxx character It is not supported in font. It is discarded
신정식님의 FAQ에 따르면 Netscape에서 기본적으로 설정되어 있는
adobe계열의 폰트의 문제라고 합니다. 자세한 내용은
6.2. Netscape의 메뉴등에서 한글이 보이지 않습니다.
위의 문제와 마찬가지로 신정식님의 FAQ인
6.3. Netscape를 실행했는데 libresolv.so.2를 찾지못한다고 합니다.
Netscape는 libresolv.so.2 라이브러리를 사용하기 때문에 이 라이브러리가
없는 시스템에서 실행하면 아래와 같은 에러가 납니다.
ld.so.1: netscape: fatal: libresolv.so.2: can't open file: errno=2
이 라이브러리를 설치하려면 Solaris의 버전에 맞는 Recommended Patch를
설치하시면 됩니다.
6.4. MP3파일을 듣고싶습니다.
6.5. 특정사용자가 실행한 프로세스를 한꺼번에 지우려면?
다음과 같이 pipe를 이용하여 지우시면 됩니다. (사용자이름은 USERID라고
가정)
% kill -9 `ps -ef | grep USERID | awk '{print $2}'`
6.6. 파일을 여러개로 쪼개려면?
일반적인 Unix시스템에서 제공하는 split 명령을 사용하셔서 쪼개면 되고,
나중에 붙일려면 cat file1 file2 .. filen > file 과 같이 하셔서 붙이면
됩니다.
6.7. X Window의 화면을 캡춰하려면?
xwd 명령어를 사용하면 됩니다.
% xwd -out filename
위와 같이 입력하고 원하는 창에서 마우스를 클릭하면(전체를 하고 싶으면
root창을 클릭하면 됩니다.) filename이라는 파일이 생깁니다. 이 파일을
xv등에서 불러서 원하는 파일형식으로 저장하면 됩니다.
그리고 xv를 사용한다면 xv에서도 화면을 캡춰할 수 있습니다. 버튼중에
Grab이라는 버튼을 이용하시면 됩니다.
6.8. Letter용지로 설정된 ps파일을 A4 크기로 프린트하고 싶습니다.
특별한 방법은 없습니다. 변환프로그램을 사용해서 Letter를 A4로 변환할
수 있다고 하지만, 안되는 파일도 많습니다.
6.9. 파일이 지워지지 않습니다.
보통의 파일의 경우 rm 명령으로 지울 수 있습니다. 하지만 몇몇의
경우에는 파일이 지워지지 않고, 찾을 수 없다는 말만 나오는 경우가
있습니다. 쉘에서 ls로 확인해 보면 있는데도요.
여러가지 원인이 있을 수 있지만, 대표적인 경우가 파일 이름에 특수문자가
들어간 경우입니다. 이 경우에는 파일이름이 이상하게 나오기 때문에
원래의 이름을 확인하기 어려운 경우가 많습니다. 예를한번 들어보죠. 원래
파일 이름은 filename인데, n다음에 backspace문자가 들어가 있다면 화면에
보일때는 fileame과 같이 보입니다. 이 경우에 사용자가 rm fileame라고
입력해 봐도 rm은 그런 파일이 없다고 투덜대기만 합니다.
이런경우에 이 파일을 지우는 방법은 여러가지가 있습니다.
1. '*'등을 사용해서 지우고 싶은 파일만 선택할 수 있는 방법을
찾는것입니다. 예를들어 위의 경우 ls file* 이라고 해서 지우고 싶은
파일만 나오는 경우에는 성공했다고 볼 수 있겠지요. 이런 방법을 찾았다면
rm file* 과 같이 해서 지우시면 됩니다.
2. 만일 이런 방법을 찾지 못했다면, ls -1A > filelist 로 filelist파일을
만든 후 vi filelist로 들어가보면 무엇이 원인인지 알 수 있습니다.
그렇다면 현재 상태에서 문제의 파일을 지울 수 있는 script를 간단히 만든
후, 나와서 수행하면 되겠지요.
이 항목은 한규진님
또는 ls -i 명령으로 문제가 되는 파일의 i-node 번호를 확인한 후 아래
명령으로 지울 수 있습니다. (이 경우에 하위 디렉토리가 복잡한 경우에
-prune 옵션을 사용하시면 유용합니다.)
find . -inum
이 내용은 정재목님
또는 ls에서 -b 옵션을 사용하면 특수문자가 8진수로 나타납니다. 예를들어
\010\010\010vrf 와 같이 나왔다면 rm ???vrf 와 같은방법으로 지울 수
있습니다.
이 내용은 경찬님
7. 문제점 해결
7.1. 일반 사용자는 socket: Permisson denied라고 나옵니다.
/devices/pseudo/clone@0:tcp의 퍼미션을 666으로 수정하시기 바랍니다.
7.2. login프롬프트가 굉장히 늦게 나옵니다.
어떤 시스템에서 접속을 하면 빨리 login 프롬프트가 나오는데, 어떤
시스템에서는 굉장히 늦게 나옵니다. 이경우 대부분은 DNS의 설정이
잘못되었거나, DNS서버에 문제가 있는경우입니다. 빨리 프롬프트가 나오는
시스템은 /etc/hosts 등에 등록된 경우일겁니다. DNS의 설정을 찬찬히
훑어보세요.
7.3. /etc/path_to_inst파일을 실수로 삭제한 경우 부팅이 안됩니다.
어떡하죠?
/etc/path_to_inst파일이 삭제되었다면 drvconfig(1M)으로 만들거나 CD-
ROM으로 부팅하여 CD에 있는 path_to_inst파일을 복사하여 재 부팅하면
됩니다. 또는 PROM prompt에서 boot a 로 부팅하면 됩니다.
7.4. vi를 실행했는데 Terminal Too Wide라고 나옵니다.
vi에서 한줄에 입력할 수 있는 글자수에 한계가 있어서 터미널을 너무 크게
만들어 두고 vi를 실행한 경우 Terminal Too Wide라고 나옵니다. 터미널을
조금 줄인 후 수행하면 괜찮습니다. 제가 테스트 해 보니 가로로 영문자
기준으로 164이상이 되면 Terminal Too Wide라고 나오더군요.
7.5. Connected command timeout for Target 4.0 이라고 나옵니다.
부팅할 때 가끔 아래와 같은 메시지가 나오는 경우가 있습니다.
WARNING: /sbus@1f,0/SUNW,fas@e,8800000 (fas0):
Connected command timeout for Target 4.0
이 경우 대부분은 SCSI터미네이터가 달려있지 않은경우입니다. 확인하시기
바랍니다.
7.6. Target 4 reducing sync. transfer rate 라고 나옵니다.
WARNING: /sbus@1f,0/SUNW,fas@e,8800000 (fas0):
Target 4 reducing sync. transfer rate
이 메시지는 SCSI 하드디스크의 전송속도가 틀린경우입니다. 이 경우
/etc/system 파일에 아래와 같이 한 줄을 추가하시고 재부팅 하면 됩니다.
set scsi_options=0x58
8. 감사의 글
일일이 나열할 수는 없지만, 많은 분들의 지적과 격려가 이 글을 쓰는데
도움이 되었습니다.모든분들께 감사드립니다.
root(/) 파일 시스템이 손상되어 시스템 부팅이 안되는 경우 backup 받아 놓은
data를 사용하여 아래와 같이 복구 할 수 있다.
1. 시스템을 down 시키고 OS CD를 CD-ROM drive에 넣는다.
2. 아래와 같이 CDROM 을 이용하여 single-user mode로 부팅한다
ok boot cdrom -sw
3. Bourne shell prompt(#)가 나타나면, /로 사용하던 disk device에 새로운 파일
시스템을 만든다. /로 사용하던 disk device가 /dev/dsk/c0t3d0s0인 경우 아래와
같이 한다.
# newfs /dev/rdsk/c0t3d0s0
4. 새로운 root file system을 fsck명령을 사용하여 점검한다.
# fsck /dev/rdsk/c0t3d0s0 (또는 # fsck -y : 오류 발견시 자동으로 수정한다.)
5. root file system을 /a로 mount한다.
# mount /dev/dsk/c0t3d0s0 /a
6. root 파일 시스템을 backup 받아놓은 tape을 tape drive에 넣고 아래의 명령을
실행하여 restore한다.
# cd /a
# ufsrestore rvf /dev/rmt/0
7. restore가 끝나면 "restore symbol table"을 지우고 새로 만든 root partition을
unmount 한다.
# rm restoresymtable
# cd /
# umount /a
8. fsck 명령을 사용하여 새 root partition을 다시 한번 점검한다.
# fsck /dev/rdsk/c0t3d0s0
9.아래의 명령을 사용하여 bootblock을 설치한다.
# cd /usr/platform/`uname -i`/lib/fs/ufs (Solaris 2.5 이상 버전인 경우)
# cd /usr/lib/fs/ufs (Solaris 2.4 이전 버젼인 경우)
# installboot bootblk /dev/rdsk/c0t3d0s0
10. 시스템을 재부팅한다.
# reboot
Root Password 복구하기
root password를 잊어버려 root로 login이 안되는 경우에는 OS CD를 사용하여
아래와 같이 복구를 할 수 있다. 만약 OS CD를 갖고있지 않다면 복구할 방법이
없다.
1. 시스템을 down 시키고 OS CD를 CD-ROM drive에 넣는다.
root로 login을 할 수 없으므로 시스템을 재부팅 시키기 위해서는 keyboard에서
"stop" key와 "a" key를 동시에 눌러서 시스템을 PROM mode(ok prompt 상태)
로 전환한다
2. 아래와 같이 CDROM 을 이용하여 single-user mode로 부팅한다
ok boot cdrom -sw
3. Bourne shell prompt(#)가 나타나면, /로 사용하던 disk device를 /a로 mount
한다. /로 사용하던 disk device가 /dev/dsk/c0t0d0s0인 경우 아래와 같이 한다.
# fsck -y /dev/rdsk/c0t0d0s0
# mount -F ufs -o rw /dev/dsk/c0t0d0s0 /a
4. 위와 같이 하면 기존에 /etc directory에 있던 shadow 파일이 /a/etc/shadow로
존재하게 되며, 이 파일을 vi로 열어서 root에 정의되어 있는 password부분을
지운다.
# vi /a/etc/shadow
root:vBrrOh8AIqYV6:6445::::::
^^^^^^^^^^^^^ 이 부분을 지운다
변경후
# cat /a/etc/shadow
root::6445::::::
5. 위와 같이 한 후 시스템을 재부팅 하면 root로 password 없이 login 가능하다.
파일 시스템이 full 되었을 경우 조치 방법
/ (root) 파일 시스템이 full되었을 경우에 다음에 열거한 순서대로 파일 시스템을
점검한다.
1. / 파일시스템에 사용자가 임의로 만들어 준 디렉토리가 있으면 정리한다.
2. /dev 디렉토리 밑에 일반파일이 있는지 조사한다.
# find /dev -type f -exec ls -l {} \;
일반 파일이 있을 경우, 모두 지우면 된다. 특히 테이프에 백업을 받을 경우에
사용자가 디바이스명을 잘못 지정하여, 테이프에 백업되지 않고 파일에
저장하는 경우가 있다.
3. 시스템에 있는 core 파일을 제거한다.
core 파일을 찾아보려면 다음과 같은 명령어를 사용한다.
# find / -name core -print
core 파일을 찾아서 자동으로 지우려면 다음과 같은 명령어를 실행한다.
# find / -name core -exec rm {} \; -print
4. /var가 root 파일 시스템이 있을 경우, /var 디렉토리 밑을 조사한다.
# du -sk /var/* | sort -nr
이 명령어를 실행하면 /var 밑에 있는 디렉토리 별로 그 서브디렉토리까지
포함하여 KB 단위의 크기를 출력한다. 거기에서 사이즈가 큰 디렉토리에 대하여
조사한다.
정상적인 시스템에 주로 문제가 될 만한 디렉토리는 다음과 같다.
/var/adm
/var/mail
/var/log
/var/preserve
/var/spool
4.1 /var/adm
/var/adm 디렉토리에는 시스템이 운용중이 발생하는 메세지나 기타 정보들이
누적 보관된다. 이 디렉토리에 큰 파일이 있으면 정리한다.
messmages.0, messages.1, ...
이러한 파일이 있으면 그냥 지워도 상관없다.
messages 파일의 크기가 너무 크면 " # cp /dev/null messages " 명령어를
사용하여 파일 크기를 0으로 만들 수 있다. 이 파일은 시스템에서 발생되는
메세지를 보관하는 파일이다.
wtmp 또는 wtmpx 파일의 크기가 너무 크면 다음과 같은 명령어를 실행하여
그 크기를 0으로 만들 수 있다. 이 파일에는 시스템에 접속한 사용자에
대한 정보를 가지고 있는 파일이다.
# cp /dev/null wtmp
# cp /dev/null wtmpx
만일 pacct이 있으면 그 파일의 크기를 다음과 같은 명령어를 사용하여
크기를 0으로 만들 수 있다. 이 파일은 accounting 정보를 가지고 있는
파일이다.
# cp /dev/null pacct
pacct1, pacct2, ... 등등의 파일이 있으면 그냥 지우면 된다.
그 외에도 사이즈가 큰 파일을 알아서 정리한다.
4.2 /var/mail
/var/mail 디렉토리에는 메일 데이타가 보관되는 곳이다. 이 디렉토리에
사이즈가 큰 파일이 있으면, 해당 사용자에게 그 메일을 정리하도록 한다.
4.3 기타 디렉토리에 대해서도 조사하여 불필요하게 사이즈가 큰 파일 있을
경우 알아서 정리한다. 단 파일을 지울 때, 그 파일이 어떤 파일인지
숙지한 후에 지울 것인가 아닌가를 결정한다.
5. / 파일 시스템에 있는 1 MB 이상되는 파일을 조사하여, 파일 크기순으로
sort하여 그 내용을 조사한다.
# find / -mount -size +1024k -ls > /tmp/find.list
# sort -nr +6 /tmp/find.list > /tmp/find.list.s
find.list.s 파일에서 비정상적인 큰 파일이 있는지 조사한다.
백업(Backup) 방법
Solaris 2.X에서는 다음과 같은 4가지 백업이 있다.
1. tar
2. cpio
3. dd
4. ufsdump/ufsrestore
1. tar
tar를 파일 또는 디렉토리 전체를 백업 받는데 사용된다.
1.1 파일 시스템에서 테이프로 백업 받기
# tar cvf /dev/rmt/0 .
1.2 테이프에서 파일 시스템으로 백업 받기
# tar xvf /dev/rmt/0
1.3 테이프 내용 보기
# tar tvf /dev/rmt/0
2. cpio
2.1 파일 시스템에서 테이프로 백업 받기
# find . -print | cpio -ocvB -O /dev/rmt/0
2.2 테이프에서 파일 시스템으로 백업 받기
# cpio -icvBmd -I /dev/rmt/0
2.3 테이프 내용 보기
# cpio -ict -I /dev/rmt/0
3. dd
3.1 파일을 테이프로 백업 받기
# dd if=file1 of=/dev/rmt/0 bs=4096k
3.2 테이프에서 파일로 백업 받기
# dd if=/dev/rmt/0 of=file1 bs=4096k
4. ufsdump/ufsrestore
4.1 파일 시스템에서 테이프로 백업 받기
# ufsdump 0cuf /dev/rmt/0 /
4.2 테이프에서 파일 시스템으로 백업 받기
# ufsrestore rvf /dev/rmt/0
4.3 테이프 내용 보기
# ufsrestore tvf /dev/rmt/0
4.4 Interactive restore
# ufsrestore ivf /dev/rmt/0
사용자(계정) 등록하기
1. 시스템에 새로운 사용자를 등록하기
# useradd -d /export/home/guest -s /usr/bin/ksh -m guest
이 명령어는 /export/home/guest라는 홈 디렉토리를 가지는 guest 라는 사용자를
만든다. 그 사용자의 login shell은 /usr/bin/ksh이다.
-m 옵션은 사용자의 홈 디렉토리를 만들어 준다.
이 명령어를 실행하기 전에 /export/home 디렉토리는 존재하여야 한다.
useradd 명령어로 사용자를 만들면, 그 사용자의 암호는 lock되어 있어서 암호를
넣어 줄 때까지 이 사용자는 login할 수 없다.
그래서 passwd 명령어를 사용하여 암호를 넣어주어야 한다.
# passwd guest
New password:
Re-enter new password:
2. 시스템에서 사용자 제거하기
# userdel -r guest
guest라는 사용자를 시스템에서 제거한다. -r 옵션을 사용자의 홈 디렉토리를 지운다.
6. 참고 문헌
시스템에 설치된 메뉴얼 페이지를 참고한다.
useradd(1M), userdel(1M), usermod(1M)
예제)
man useradd
루트 파일 시스템 복원
다음 루틴을 사용하면 신속하게 파일 시스템을 복원할 수 있습니다. 이 절차에서는 ufsdump를 사용하여 루트 파일 시스템을 저장했다고 가정합니다. 또 이 설명서에서는 루트 파일 시스템이 c0t3d0s0에 있다고 가정합니다.
1. Solaris CD-ROM을 CD-ROM 드라이브로 로드하십시오.
2. 단일 사용자 모드에서 CDROM으로 부팅하십시요.
ok boot cdrom -s
3. BOURNE 쉘 프롬프트가 나오면 루트 파일 시스템의 파티션을 새로 설정하십시오(필요할 경우).
a. 드라이브 파티션을 설정하려면 "format" 명령을 사용하십시오.
b. 파일 시스템을 생성하려면 "newfs /dev/rdsk/c0t3d0s0" 명령을 사용하십시오.
4. 새 루트 파일 시스템을 확인하십시오.
# fsck /dev/rdsk/c0t3d0s0
5. /a 마운트 포인트에 루트 파일 시스템을 마운트 하십시오.
# mount /dev/dsk/c0t3d0s0 /a
6. 먼저 새 루트 파일 시스템으로 이동해서 복원을 시작하십시오.
a. cd /a
b. ufsrestore rvf /dev/rmt/0
7. 복원이 완료되면 복원 기호 테이블을 제거하고 새 파일 시스템의 마운트를 해제하십시오.
a. rm restoresymtable
b. cd /
c. umount /a
8. 새 루트 파티션을 한 번 더 확인하십시오.
# fsck /dev/rdsk/c0t3d0s0
9. 부트 블록을 설치하십시오.
# Solaris 2.4 이하 버전의 경우:
a. cd /usr/lib/fs/ufs
b. installboot bootblk /dev/rdsk/c0t3d0s0
# 2.5, 2.5.1 또는 2.6의 경우:
a. cd /usr/platform//lib/fs/ufs
b. 을 가져오려면 uname -i 명령을 입력하십시오. 더 쉽게 작업을 하려면 다음과 같이 cd 명령에 포함시키십시오.
* cd /usr/platform/`uname -i`/lib/fs/ufs
* 명령 앞뒤에 역 따옴표를 사용해야 합니다.
c. installboot bootblk /dev/rdsk/c0t3d0s0
10. 시스템을 다시 부팅 하십시오.
# reboot
참고: 다른 파일 시스템의 파티션(usr, var 등)을 복원하려면 CDROM으로 부팅 한 후에 단계 3-8을 수행하십시오.
적용 대상: 하드웨어, 운영 체제/Solaris/Solaris 2.x
root 암호를 모를 경우
다음 단계는 /etc/shadow 파일을 편집해서 root 암호를 고치는 방법입니다.
1) Solaris 2.x CD-ROM을 CD-ROM 드라이브에 넣으십시오.
2) 드라이브에 CD-ROM이 있으면 stop-a 명령을 실행하십시오. 그러면 시스템이 중단되고 ok 프롬프트가 나옵니다.
3) ok 프롬프트에서 Solaris 2.x 설치 CD-ROM을 사용해서 단일 사용자 부팅을 실행하십시오.
ok boot cdrom -s
4) "#" 프롬프트에서 시스템의 부팅 디스크(root 파일 시스템이 있는)를 찾아야 합니다.
부팅 디스크에는 몇 가지 sun 아키텍처와 여러 가지 시스템 구성이 있습니다. 일반적으로 부팅 디스크는 대부분 컨트롤러 0(c0)에 설치되어 있습니다. 대부분의 경우, SCSI 대상은 3(t3) 또는 0(t0)입니다. Sun 시스템은 유연성이 좋기 때문에 부팅 디스크가 다른 위치에 있을 수도 있습니다. 부팅 장치의 위치를 결정해야 합니다.
"#" 프롬프트에 다음과 같이 입력하십시오.
# eeprom boot-device
"disk" 또는 "disk1"처럼 간단하게 출력되거나 "/iommu/sbus/espdma@4,8400000/...../sd@3,0:a"와 같이 경로가 출력됩니다. 부팅 장치를 확인하십시오. 부팅 장치가 경로 이름인 경우에는(위와 같이) 사용자 설정 부팅 장치의 위치를 찾는 방법을 이 설명서에서 설명하지 않습니다. 그러나 대부분이 구성에서 쉽게 찾을 수 있습니다.
"format" 명령을 실행하면 사용 가능한 디스크가 모두 표시됩니다.
#format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@1f,0/pci@1,1/ide@3/dad@0,0
Specify disk (enter its number):
여기서 format 명령을 종료하려면 d를 누르십시오.
이제 시스템에 어떤 디스크가 있는지 알 수 있습니다. boot-device에 "disk"가 표시되고 format에 "c0t0d0"(일부 시스템에서는 "c0t3d0")이 표시되면 부팅 장치입니다. 또 boot-device에 "disk1"이 표시되고 format에 "c0t1d0"이 표시되면 부팅 장치입니다. format에 여러 디스크가 표시될 경우 "eeprom boot-device" 명령을 실행하면 부팅 디스크가 다음과 같이 표시됩니다.
boot-device format
disk c0t0d0 or c0t3d0 (machine dependant)
disk1 c0t1d0
disk2 c0t2d0
disk3 c0t3d0 or c0t0d0 (machine dependant)
and so on ....
다음에는 시스템이 자연스럽게 다운된 것이 아니므로(root 암호가 없을 경우, Stop-a를 입력해서 시스템을 충돌시켜야 함) "fsck"를 실행해서 root 파티션(슬라이스)을 삭제해야 합니다. 또 fsck를 실행하면 슬라이스를 제대로 선택했는지도 확인할 수 있습니다.
# fsck /dev/rdsk/cXtYd0s0
여기서 X와 Y는 이전 절차에서 결정됩니다.
슬라이스 0(s0)에 없는 root 파티션이 있을 수도 있지만 표준 구성은 아닙니다.
"fsck"의 결과가 다음과 같이 출력됩니다.
** /dev/rdsk/c0t0d0s0
** last mounted on /
** Phase 1 .....
.....
두 번째 행, "** Last mounted on /" 명령을 실행하면 root fs 파티션을 정확하게 확인합니다.
fsck에서 묻는 질문에 모두 "y"를 입력하십시오.
고칠 항목이 너무 많으면 안됩니다. 그러면 root fs가 손상될 수 있습니다.
fsck가 종료되면 root 파티션을 마운트할 수 있습니다.
# mount /dev/dsk/cXtYd0s0 /a
X와 Y는 fsck 명령의 경우와 동일합니다.
예:
# mount /dev/dsk/c0t0d0s0 /a
5) root 프롬프트에서 다음 명령을 입력하십시오.
# TERM=sun; export TERM
6) 다음 명령으로 /etc/shadow 파일을 편집하십시오.
# vi /a/etc/shadow
7) 파일의 첫 번째 행을 수정해야 할 것입니다.
첫 번째 행은 다음과 같습니다.
root:c3.yAVmYodWsc:6445::::::
이 행의 첫 번째와 두 번째 콜론 사이의 모든 문자를 삭제해야 할 것입니다. 완료되면 다음과 같이 됩니다.
root::6445::::::
문자를 삭제했으면 쓰기 강제 종료를 실행해서 vi를 종료하십시오. 명령 모드에서 다음과 같이 입력하십시오.
:wq!
그러면 문서가 종료되고 변경 사항이 저장됩니다.
8) 다음은 파일 시스템 마운트를 해제하는 단계입니다. 다음 명령을 수행하십시오.
# cd /
# umount /a
9) 마지막 단계는 시스템을 다시 부팅 하는 것입니다. 로그인하라는 메시지가 나오면 로그인 이름을 입력하십시오. 자동으로 들어갈 수 있어야 합니다. 그런 다음 root 암호를 변경하십시오.
default router(gateway) 설정하기
Solaris 2.x에서 default router를 설정하기 위해서는 "/etc/defaultrouter" 파일을
이용하는 방법(Static routing)과 "in.rdisc" daemon을 이용하는 방법(dynamic routing)
2가지가 있다.
1. /etc/defaultrouter 파일을 이용한 방법(Static Routing)
/etc/defaultrouter 파일을 만들어 그 안에 default router의 IP address를 적어
놓는다. 이렇게 하면 시스템이 부팅하면서 /etc/defaultrouter 파일의 내용을 읽
어서 routing 을 잡는다.
# vi /etc/defaultrouter
129.158.153.1
2. in.rdisc daemon을 이용하는 경우
시스템이 새로 부팅 될 때 /etc/defaultrouter 파일이 없으면 /usr/sbin/rdisc daemon
이 실행되면서 local network상에 routing advertise를 하고 있는 시스템 또는 router
를 default router로 잡는다.
3. 명령어를 사용하여 default router를 설정하는 방법
root로 login하여 아래와 같이 route 명령을 실행한다.
# route add 0 "ip-address-of-defaultrouter" 1
4. default router가 설정되어 있는지 확인하는 방법
"netstat" 명령을 사용하여 아래와 같이 확인한다.
# netstat -rn
Routing Table:
Destination Gateway Flags Ref Use Interface
----------------- -------------- ----- ----- ---- ---------
129.158.153.0 129.158.153.158 U 3 212 hme0
224.0.0.0 129.158.153.158 U 3 0 hme0
default 129.158.153.1 UG 0 364
127.0.0.1 127.0.0.1 UH 0 6956 lo0
위의 결과에서처럼 "default" 항목이 보이면 default router가 설정된 것이다.
hostname과 IP를 변경하려면?
시스템의 이름 또는 IP를 변경하려면 다음과 같은 파일에서 시스템명 또는 IP를
새로운 것으로 변경하여야 한다.
OLDNEW
System namejumpking
IP168.12.99.9178.20.1.22
Network mask255.255.0.0255.255.255.0
1. /etc/hosts
168.12.99.9 jump--> 178.20.1.22 king
2. /etc/hostname.xxN
ex)/etc/hostname.le0
/etc/hostname.le1
/etc/hostname.hme0
/etc/hostname.hme1
jump--> king
3. /etc/netmasks
해당되는 IP에 맞게 network masking을 설정한다.
168.12.0.0255.255.0.0 --> 178.20.1.0255.255.255.0
4. /etc/net/*/hosts
/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts
jumpjump --> king king
5. /etc/nodename
jump --> king
6. /etc/defaultrouter
디폴트 라우트의 이름이 변경되었다면, 여기에서 이름을 변경한다.
7. reboot
시스템을 리부팅한다.
# reboot
가상 IP 설정방법
솔라리스 2.5 이상에서는 가상 IP를 설정할 수 있다. 가상 IP란 하나의 물리적인
네트웍 카드에 두개 이상의 IP를 지정하는 것을 말한다. ifconfig 명령어를 사용하여
가상 IP를 등록할 수 있다.
만일 hme0 카드에 가상 IP를 지정하려면, 다음과 같은 두 가지 방법이 있다.
1. 영구적으로 시스템에 등록
만일 hme0 카드에 가상 IP를 지정하려면, 먼저 /etc/hosts 파일에 설정하고자
하는 IP와 호스트명을 추가한다.
128.120.59.10realhost
128.120.59.15virthost1
128.120.59.18virthost2
그리고 다음과 같은 파일을 만들고 rebooting하면 변경사항이 적용된다.
각 파일에는 각각의 호스트명이 지정되어 있으면 된다.
/etc/hostname.hme는 hme 카드가 설치될 때, 자동적으로 만들어진다.
/etc/hostname.hme0--> realhost
/etc/hostname.hme0:1--> virthost1
/etc/hostname.hme0:2--> virthost2
2. 일시적으로 시스템이 등록
# ifconfig interface virtual-ip up
# ifconfig hme0:1 128.120.59.15 up
# ifconfig hme0:2 128.120.59.18 up
3. 가상 IP를 제거하려면
# ifconfig hme0:1 down
# ifconfig hme0:2 down
또는
/etc/hostname:hme0:1, /etc/hostname:hme0:2 파일을 지우고 reboot하면
변경사항이 적용된다.
종료 명령어
# sync (3번 실행 : 프로세스 종료 명령입니다.)
# init 0 또는 # init 5 또는 # shutdown -y
재부팅 명령어
# sync (3번 실행)
# init 6 또는 # reboot
수호신 암호 모를 경우(로그인 못할 경우)
#cd opt\ISSssf (혹은 #cd opt\SUHOSHIN 또는 cd\opt\SUHOSHIN\Db)
#./ssfad -u ssfadm
ID : admin (기존 아이디 입력)
PW : admin000 (기존 암호 입력)
이렇게 해서 안될 경우 ssfadm.dir 과 ssfadm.pag 파일 삭제한다.
#./ssfad -i ssfadm
Administrator ID : admin (아이디 생성)
Password : admin000 (암호 생성)
Retype Password : admin000
Block after invalid login[10] : 원하는 횟수 입력
Authentication Type [p]password/[s]key/[M]D5 :p입력
Administrator registered! (완료)
netscape에서 수호신 로그인 확인하면 완료됩니다.
인터넷이 안 될 경우 조치 방법
1. 수호신의 데몬 동작 여부 확인(데몬은 5개 : ssfad, ssfadmd, ssflogd, ssfalmd, ssfguid)
#ps -ef | grep ssf
2. 데몬과 모듈을 내린다.
#cd etc\rc2.d\S75ssfrc stop(수호신 2.0)
#cd etc\rc2.d\ssfrc stop(수호신 3.0)
#modinfo | grep ssf
모듈번호 입력(보통 2-3자리)
#modinfo -i 모듈번호 입력
(데몬 올리는 방법 #cd etc\rc2.d\S75ssfrc start)
나머지 데몬이 올라와 있을 경우 kill 명령을 이용해서 데몬을 내리면 된다.
화벽을 재부팅한다.
2. 로그 파일을 삭제한다.
3. 보안정책을 수정한다. (www-proxy를 www로 변경한다.)
4. 방화벽을 재설치한다.
파일 시스템 체크 하는 방법
#fsck -y -F ufs -o b=32
#sync(3번)
#reboot
수호신 기본 보안정책
1. Any --> Any --> 모든 서비스 --> 거부(Default)
2. 내부망 --> Any --> 모든 서비스 --> 허용
3. Any --> Web --> 80 Port --> 허용
4. Any --> DMZ --> TCP, UDP --> 허용
5. DMZ --> 내부망 --> 모든 서비스 --> 거부
6. DMZ --> Any --> 모든 서비스 --> 허용
(참고)
내부망 --> Any --> www-Proxy 허용
DMZ --> Any --> www-Proxy 허용
wjdcordml 우선순위는 Proxy가 최우선이며, 나머지는 순서대로 적용된다.
출처 : http://www.sdnkorea.com/
댓글