Solaris System Administration I
1장 Unix System 개념
<< Main Parts >>
· Kernel
· Shell
· File structure
Kernel의 역할
- 디바이스, 메모리, 프로세스 관리
- 시스템 프로그램과 하드웨어사이의 함수 관리
- Swarp space, Daemon 관리
OS Shells
- 명령어 해석기, 번역기
File System
- Solaris의 파일 구조는 트리형태로 되어 있으며, 디렉토리, 서브디렉토리, 파일등은 하이락키걸한 트리 구조로 연결되어 있다.
2장 The Boot PROM
<< Boot PROM contents >>
Power-On self-test(POST)
Device drivers
User interfaces
<< NVRAM contents >>
Ethernet address
HostID
Configuration parameters
Basic Boot PROM Commands
>OK banner
>OK boot (부팅 명령)
>OK printenv (prom,nvrom의 기본값을 보여준다)
>OK setenv
>OK reset (ROM 값을 적용. Reboot)
Boot Command Option
>OK boot --a (interactive booting)
>OK boot --r (장치를 새로 달았을경우 사용)
>OK boot --s (Single mode booting)
>OK boot --v (Display detailed start up message)
Changing the Default Boot Device
>OK printenv
>OK setenv auto-boot? False
>OK reset
Keyboard Input at Power Up
Stop -n (PROM값 default PROM값으로 변경)
Stop -a (운영체제 booting후, PROM상태로 다시 돌아감) -> 운영체제로 go
Using the Solaris eeprom Command
>OK setenv boot-device disk
>OK auto-boot? False
#eeprom boot-device = disk
#eeprom “auto-boot?” = false
¨ Troubleshooting the Boot Process ¨
Stop + a sequence
Sync;
go
3장 Solaris 설치 및 네트웍 설정 방법
<< System을 install한 후에 해야 할 일들 >>
1. /etc/hosts 파일 수정
> 호스트명, 주소 입력
127.0.0.1 localhost
203.234.247.214 sunedu214 sunedu214.suned.co.kr loghost
2. /etc/defaultrouter 생성
> geteway 정보 입력
203.234.247.254
3. /etc/nsswitch.dns /etc/nsswitch.conf
> DNS 서비스 정책 결정한다. COPY하여 설정한다.
4. /etc/resolv.conf
> DNS서비스를 해주는 호스트 정보 등록. IP,NAME
domain suned.co.kr
nameserver 203.234.247.1
5. /etc/default/login
> root의 telnet login가능하도록 지정 (주석처리)
..
..
# CONSOL=/dev/console
..
..
6. passwd -e
shell변경 command
passwd -e
old shell : /sbin/sh
new shell : /bin/ksh (korn shell로 변경, 기능이 더 좋음.)
7. route add default 203.234.247.254
Default gateway 설정한다. Rebooting시 지워짐.
따라서 /etc/defaultrouter 파일에 기록
8. 네트웍 설정 완료. Ping test
제4장 Software Package Administration
Package
: Solaris System에 Software 웨어를 말하며, 이것을 설치하는 것을 “패키지를 설치”한다고 한다.
1. Pkg 관련 command
#pkginfo -d /cdrom/…
> 시스템에 설치된 package 정보를 확인하며, -d 옵션은 서브 디렉토리의 package 정보를 볼 수 있도록 한다.
#pkgadd -d /cdrom/..
/cdrom/.. 디렉토리에 존재하는 software를 설치한다.
#pkgadd -d /cdrom/.. -s /pkg : -s 옵션은 저장할 곳을 지정하는 옵션이다.
pkgrm pkg명
> 패키지 지움
pkgchk pkg명
시스템에 설치되어 있는 패키지 확인
<< 패키지 설치 실습 : ftp로 가져와서 설치>>
ftp : ftp.sunfreeware.com
다운 받을 파일
- .xmemory
- .gzip
- top
- ghostview
1. ftp로 위의 4개 파일 받기
2. gzip부터 설치한다.
#pkgadd -d /tp/xx_local
3. 다른 software 설치
#gzip -d 파일명(xxx.xxx.gz)
4. 패키지 add
#pkgadd -d /tp/xxx_local
5. ./profile 패스 지정하기!
#. /.profile 파일에 /usr/local/bin 패스 추가
2. 패키지 인스톨 정보는 /var/sadm/install/contents 파일에서 명시되어 있다.
3. 패키지의 default spool은 /var/spool/pkg 이다.
> 다른 디렉토리에 Software 복사후 설치하기.
# pkgadd -d /cdrom/s0/solaris2.7/product -s /export/pkg SUNWaudio
4. admintool를 이용해서 패키지 설치가능
제5장 Maintaining Patches
Patch 파일을 다운받아 설치하는 것
<< Patch 설치 방법 >>
1. ftp sunsolve.sun.com에서 다운 받는다.
/pub/patches
2. patch report down 받아, 참조한다.
3. patch 파일, readme 파일 다운 받는다.
6. /usr/bin/unzip ./xxxx.zip 압축을 푼다.
<참조> 압축관련된 참조사항
.tar.Z
#uncompress xxx.tar.Z >> 결과:xxx.tar
#tar xvf xxx.tar >> 결과: xxx
zcat/gzcat
#zcat xxx.tar.Z | tar tar xvf - >> 결과: xxx
#gzcat
5. patchadd command를 이용하여 patch설치
# patchadd xxxx
제6장 The Boot Process
<< Booting 과정 - 1>>
1. PROM 단계
2. Boot Block Read
3. Kernel
4. Init
<< Booting 과정 - 2 : 자세히 >>
1. PROM
> (POST)
2. banner
boot device 확인
3. label
파 티션 확인
4. boot block read
sector 1-15
file system reader
5. ufsboot
실질적 booting : kornel 구동
/platform/`uname -m`/ufsboot
6. 커널 모듈 실행(load kernel modules)
7. read /etc/system
사용자와 kernel간의 변경사항 없는지 확인
8. init 실행
> read /etc/inittab
Booting 과정
<< Boot PROM phase >>
1. PROM runs self-test diagnostics
시스템 하드웨어, 메모리 self test
2. OK printenv boot-device
system 정의 banner
(model type, keyboard type, PROM revision number, PROM serial number, Ethernet address, hostID)
3. OK boot
reads disk label (sector 0)
default boot device에 sector 0의 disk label를 읽는다.(파티션 확인)
4. Reads book block (sector 1-15)
boot PROM 프로그램이 bootblk이라는 시스템 primary boot 프로그램을 읽는다.
5. PROM loads boot block (bootblk)program
boot 프로그램을 load시킴. 메모리에 boot 프로그램 로드
/platform/’uname -m’/ufsboot
<< Boot program phase >>
실질적 booting : kornel 구동 단계
6. The boot block program loads the boot (ufsboot) program
7. The boot (ufsboot) program loads the 32bit or 64bit kernel
<< Kernel initialization phase >>
8. Load kernel modules
커널 모듈 실행
9. Read /etc/system file
사용자와 kernel간의 변경사항 없는지 확인
< 변수 >
moddir variable : default module directory 설정
rootdev variable : root file system 의 물리적 path
exclude variable : 배제 변수
forceload variable : 부팅시, force module 변수
set variable : kernel 변수 값
10. The kernel initializes itself and starts the init process
<<The /sbin/init phase>>
11. The init process starts the run control scripts
1. /etc/system 파일 변경
# cp /etc/system /etc/system.old
# 변경
# 커널 변수 변경후 reboot
#init 0 -> ok> boot -r
#reboot -- -r
2. Boot Run Levels
Run Level Function
0 PROM 상태
1 Administrative state (single-user mode with file systems mounted and user logins disabled)
2 Multi-user level ( with no resources shared)
3 Multi-user level (with resources shared)
4 Not currently used
5 Halt(and turn off Sun-4m and Sun-4u architectures)
6 Reboot to default run level 3
S,s Single-user mode with user logins disabled
<< run level 확인 command >>
# who -r
3. /etc/inittab file 구조
s3:3:wait:/sbin/rc3
s3: id
3: run level
wait : init가 취해야할 action
/sbin/rc3 : /sbin/rc3가 실행될 동안 wait 한다. 위의 것과 관련 있음.
4. init Process , /etc/inittab file
/sbin/autopush
메모리에 커널 모듈을 올리는 프로세스
/sbin/soconf
socket load
/sbin/rcS
/sbin/rc2
/sbin/rc3
/usr/lib/saf/sac
포트 모니터를 감시하는 데몬
/sbin/lib/saf/ttymon
login시 창을 제공하는 데몬
<< /etc/init.d에 실행화일 만들고, /etc/rc2.d에 링크걸어 시스템 rebooting >>
1. testrc 생성
2. ln testrc /etc/rc2.d/S80banner
3. 실행화일 testrc는 /etc/init.d에 존재
(이곳은 실행화일이 존재하며, /etc/rc2.d에는 링크화일들 존재)
4. chmod a+x testrc
5. shutdown -y -g- -i6 (reboot)
제7장 Changing System States (shutdown..)
<< System Shutdown , Power off 관련 Command >>
Clean Shutdown
<< rc0 script를 읽음>>
1. init
2. Shutdown
위 init, shutdown command의 차이는 사용자에게 메시지를 보여주느냐, 아니냐의 차이이다.
Non clean Shutdown
<< rc0 script을 읽지 않고 실행>>
1. halt
2. poweroff
3. reboot (#reboot -- -s)
1. PROM MODE
# init 0
2. Boot Command
ok> boot -a : interactive boot
ok> boot -s : single user mode boot
3. Shutdown Command
# shutdown -y -g -I [message]
제8장 System Security
1. /etc/passwd
root:x:0:1:Super-User:/:/sbin/sh
User ID
패스워드 : 사용안함
User ID
Group ID
Comment
home Directory
login shell : /bin/ksh
2. /etc/shadow
root:Lxeokt/c/oXtw:6445::::::
Group ID
패스워드 (*LK*- Lock login 불가능, NP - No password 패스워드 없음)
lastchg - 패스워드가 마지막으로 변한 날짜
min - 패스워드 유지될 최소기간
max - 패스워드 유효한 최대기간 (over시 lock 발생)
warn - 경고기간 (expire되기전 경고기간)
inactive - 패스워드 유효한 기간
ex) 5일이면, 5일에 한번은 들어가야 한다.
expire - 패스워드 유효한 만기 기간
3. /etc/group
groupname:password:GID:userlist
ex) root::0:root
group name
패스워드
GID
userlist
참조사항: sysadmin Group : 14
4. id
본인의 user ID, user name, group ID, group name 확인시 사용하는 command
5. User 변경 Command
<< 실습 예제 >>
# su user01 ( user ID 변경)
id 변경
패스워드 묻지 않음.
# 상태 변경 안됨
# su - user01 ()
id 변경
home directory 변경
# 상태에서 -> $ 상태로 변경
위의 두 command의 차이는 .profile의 실행 차이이다.
# who am I (login한 original id)
# whoami (현재의 id)
6. Ownership 관리 : chown command 관리
# chown lister:staff mydocs
소유자/그룹 동시에 변경
참조: chown command는 root만 사용가능
7. /etc/default Directory 에 존재하는 파일
보안 관련 파일 : 3개
passwd
login
> ULIMIT=0
사용자가 사용할 수 있는 DATA BLOCK(514K). 현재 제약없음.
> CONSOLE=/DEV/CONSOLE
LOGIN 가능한 CONSOL, #처리시 REMOTE LOGIN
> PASSREQ=YES
모든 사용자는 패스워드를 소지해야 한다.
> ALTSHELL=YES
사용자 SHELL변경할 수 있도록 처리
>PATH
DEFAULT PATH
>TIMEOUT=300
로그인 타임 아웃
>UMASK=022
CSHELL에서만 적용가능.
>SYSLOG=YES
로긴시 로그를 남기도록 처리
su
> SULOG=/VAR/ADM/SULOG
슈퍼 유저 로그인시 모든 파일 WRITE
> #CONSOLE=/DEV/CONSOLE
일반 사용자가 root로 성공한 경우만 보여줌
참고: CONSOLE 변수에 대한 설명없으면 NETWORK 로그인 안됨.
USER로 로그인하고 SU로 로그인해야한다.
제9장 Adding Users
사용자를 추가하는 방법
첫번째: admintool를 이용한다.
두번째: command를 사용한다. useradd
우리는 여기서 두번째 방법을 사용한다.
<< 실습 예제 - 사용자 등록>>
1. group 추가
#groupadd -g 100 mgt
2. user 추가
(일반 사용자추가는 UID 100번이상 사용한다)
#useradd -u 1006 -g 15 -G mgt -d /export/home/user06 -m -s /bin/ksh user06
3. user 추가후 패스워드 지정
#passwd user06
(root권한으로 사용자의 패스워드 지정)
<< 실습 예제 - 사용자 id 변경 >>
1. usermod -d /export/hoem/myguest -m -l myguest(new id) guest(old id)
2. 사용자 삭제
# userdel -r user06 (디렉토리까지 삭제)
제10장 Administration of Initialization Files
1. .dtprofile file
/usr/dt/config/sys.dtprofile에
DTSOURCEPROFILE=true로 설정해야 사용자들의 shell 초기화일(.profile, .kshrc, .cshrc, .login)을 읽는다.
2. /ect/profile file
LOGNAME과 같은 환경변수 지정
PATH
TERM
/etc/motd file의 내용 display
default permission : umask
메일 체크 부분
3. /etc/skel directory
사용자 등록시 초기 profile 정의
제11장 Advanced File Permissions
1. Oictal Mode
# chmod u:r-x,g:rw-,o:r- file명
File max permission 666
Directory max permission 777
2. setfacl command
Access Control List (ACLs)
특정한 사용자에게 파일 퍼미션을 부여하는 것
<< 실습예제 >>
#setfacl -m u::7,g::4,o::0 파일명
= chmod 740 aaa
<<친구 추가>>
#setfacl -m u:st(사용자명):7 m:4 bbb
m: mask값으로 친구가 가질 수 있는 최대의 퍼미션 권한
#setfacl -m user:user06:6 aaa
#확인방법 : ls -l aaa
#삭제방법 : setfa치 -d user:user06:6 aaa
파일에 존재하는 ACLs 정보확인
#setfacl aaa
2. setuid, setgid Permission
>> 실행시킨 사람이 임시적으로 setuid, setgid root권한으로 파일을 실행시킬수 있는 권한이다. 예를 들면, 패스워드 파일, shadow파일 같은 것이다.
· setuid
실행화일에 사용됨. Ex)root
· setgid
같은 project에 실행권한을 주기위해서 setgid사용 ex)sys
· stiky bit
디렉토리에 준다. 디렉토리에 write/read 가능하도록 하기 위해서 준다.
Ex) /var/tmp 모든 사용자가 사용가능하다.
지우는 사람: root, file 삭제자는 file 생성자만 가능.
사용 관련 사항
4 = setuid
2 = setgid
1 = sticky bit
#chmod 4755 setuid_program
#chmod 2755 setgid_program
<< 실습예제 >>
$cp /bin/ksh $HOME/ksh
$su root
#chown root $HOME/ksh
#chmod 6755 $HOME/ksh
(setuid, setgid 설정: 파일 실행시 owner 권한을 가짐. 소유자가 root권한을 가지게 한다.
exit
$./ksh
(실행시킨 사람이 소유권을 가지게 된다. Root가 소유권을 받아 #상태가 된다)
$who am I : root
$id : user
제12장 Process Control
# ps -ef
#kill 1400
> default signal 15 (제거 signal)
> 강제 : 9
#pgrep -lf sendmail
> 프로세스 실행 확인 command
#pkill sendmail
> 프로세스 kill
#at 1045
> 10시 15분에 특정한 job를 수행하도록 처리한다.
#/var/spool/cron/crontabs 파일을 수정하여 주기적으로 job을 수행하도록 한다.
참고사항:명령어는 full path을 지정해야 한다.
제 13장
instance Names
물리적 장치에 약어적인 이름 부여
부팅시 /etc/path_to_inst file 읽음.
만약 지우고 booting하면, booting이 느려짐.
Dmesg command
시스템에 연결된 디바이스을 확인가능하다.
디바이스의 물리적 이름과 instance 이름을 확인할 수 있다.
Format command
물리적, 논리적 디바이스 이름 보여준다.
Prtconf command
시스템의 하드웨어 장치 확인 가능
(system configuration info, memory, peripheral configuration)
<< 새로운 디스크를 추가하는 방법 >>
create a /reconfigure file
set the SCSI target number
Connect the new disk to the system
Turn the power on
Boot the system
<< 파티션 나누기 >>
format > patition
fsch/newfs
mount
제 14장 Disks, Partitions, and Format
Format Utility
새로운 디스크를 파 티션 나누고, 재파 티션 할 수 있다.
Disk label (VTOC)
- disk의 label은 disk VTOC라도 한다.
<< 파티션 나누는 방법 >>
1. label
2. fsck /dev/rdsk/c0t0d0s6
fsck /dev/rdsk/c0t0d0s7
3. newfs /dev/rdsk/c0t0d0s6
newfs /dev/rdsk/c0t0d0s7
4. mkdir /p2
5. mount /dev/dsk/c0t0d0s6
6. mount /dev/dsk/c0t0d0s7
etc/format.dat
파 티션 정보 지정화일
#prtvtoc : label 정보 display
제16장 Mounting File Systems
Mounting Files
: file system에 나누어진 프로세스들이 file tree structure에 붙는 것을 말한다.
Mounting,unmounting 파일 시스템은, 시스템 startup, shutdown되는 동안에 /etc/vfstab 파일에 entry들을 기본으로 발생한다.
#mount Command
mount에 관련된 정보는 /etc/mnttab file에서 참조한다.
#mount -o logging /dev/dsk/c0t3d0s6 /usr
transaction log 남김. Log 참조하여 부팅. 부팅시간 빠르다.
#mount -o nolargefiles /dev/dsk/c0t3d0s7 /export/home
2기가 이상 mount안된다, 2기가 이상이면, fsck를 실행하고 mount한다.
#mountall, unmount command
mountall -l : local만 mount
mountall -r : remote만 mount (NFS)
/etc/vfstab 참조
<< 새로운 File System Mounting >>
1. #mkdir /database
2. #mount /dev/dsk/c0t2d0s5 /database
3. /etc/vfstab file에 디스크 추가한다.
<< File System Type는 다음 순서로 mount >>
1. -F option으로 file system 인식
2. /etc/vfstab file로 file system 인식
3. /etc/default/fs로 ufs file system 인식
4. /etc/dfs/fstypes로 file system 인식
<< NFS Client Access, Server 작업 >>
Server쪽 작업
/etc/dfs/dfstab 수정 (추가)
#share -F nfs -o rw -d “script” /p1
#dfshares [hostname]확인한다.
#/etc/init.d/nfs.server stop
#/etc/init.d/nfs.server start (공유실행)
directory permission 변경
#chmod 647 p1
Client쪽 작업
#dfshares sun240(hostname) : 공유해준거 확인
#mount -F NFS sun240:/p1 /mnt
Client 자동 부팅시 mount되도록 처리
#/etc/vfstab 수정 (추가)
sun240:/p1 - /mnt nfs - yes -
halt, rebooting
#shutdown -y -g0 -i6
<< root 패스워드 상실시, 처리 방법 >>
1. cr-rom으로 solaris 7부팅
2. single-user mode booting
#boot cdrom -s
3. fsck /dev/rdsk/c0t3d0s0
4. mount /dev/dsk/c0t3d0s0 /a
5. #TERM=sun
#export TERM
#vi /a/etc/shadow
<delete root password>
:wq!
6. #cd /
#umount /a
7. #init 6
제15장 File System
<< file system 의 종류 >>
Disk Based file system types
Ufs : solaris의 file system
Hsfs : CD Rom file system
Pcfs : personal computer (PC) file system
Network-based File System types
NFS : client에서 server쪽 file system를 공유하여 access하는 file system
RAM-based File System Types
Physical memory에서 올려져서, operating system이 운영된다.
1. Solaris ufs File System
Boot Block
15번 disk sector 다음에 존재. Root file system일 경우만 활성화된다.
Super Block
Cylinder Group block, Data Blocks수, inode table, Data Block의 정보를 가지고 있다.
Backup superblock
super block의 정보 저장
cylinder group block
inode data block 정보 저장
inode table
inode 정보 존재. Ls -al했을 경우 나타나는 정보들..
data block
Data 존재
2. Inodes
파 일에 대한 file, access mode의 type 정보
user id, group id
file size
file access time
file 의 사용가능한 data block수, 할당 data block수
4. fsck utility
super black, inode block, data block간의 정보의 동기화를 이루어지록 한다.
#lost+found : fsck가 파일의 위치를 적어준다.
· fsck를 사용하는 경우
시스템의 부적절한 셧다운
파 워 문제
하드웨어 문제
3. fsck 사용법
#fsck /dev/rdsk/c0t030s7
#fsck -o f,p /dev/rdsk/cotodos5
-o : non interactive
f : 강제
p : preen mode (중대한 결함이 있을 경우 out)
4. UFS logging and Access Time Option
#mount -o logging /dev/dsc/c0t0d0s7 /export/home
log 정보를 확인하며 mount. 더욱 안전함. Super block 상태를 clean하게 고정.
#mount -o noatime /dev/dsk/c1t0d0s3 /morespace
> access time 기록을 하지 않는 file system
제 16장 Mounging File System
1. Mounting File
/etc/vfstab
부팅시 파일을 체크해서 어떤 파일 시스템을 mount할 것인지 확인
/etc/mntlab
#mount
mount시 mount point가 참조된다.
2. Adding a New Disk (디스크 추가)
1. 하드웨어 물리적 셋업. 점퍼 세팅
2. #boot -r
3. 디스크 파4. 트션 작업
5. #newfs, fsck 실행
6. #mkdir /p1
7. #mount /dev/dsk/c0t2d0s5 /p1
8. /etc/vfstab 파9. 일에 추가
3. File System 인식 절차
-F option를 사용하여 file system 인식 (없으면)
/etc/vfstab 파 일을 참조하여 인식 (없으면)
/etc/default/fs 파 일 인식 (없으면)
/etc/dfs/fstypes 파 일 인식 (없으면)
제17장 Backup and Recovery
Logical Tape Device Names
/dev/rmt/nln
n: tape 장치의 순서(logical tape number)
l: tape 장치의 밀도(tape density,h,m,l,c,u)
n: tape 밀도(backup이 끝나더라도 앞으로 감지 말아라) , No rewind
Types of Backups
Full dumps
Incremental dumps
Multivolume dumps(backup장치 여러대에 backup)
ufsdump command (backup command)
#ufsdump options
options
0-9 : 0:full dump, 1~9:incremental backup
u : /etc/dumpdates에 write, incremental backup 가능하도록 처리
f : device 장치 명시, 디볼트는 tape
v : view
<< 실습예제 >>
#ufsdump 0uf /dev/ rmt/0 /p1
#ufsdump Euf /dump/back /p1
ufsrestore command (restore command)
#ufsrestore options
options
I : I부분만 restore 수행
R : 전체 restore
T: 복구, test
X: command line에 명시된 파일만 복구
F : 장치명
전체복구 : rvf
#ufsrestore rvf /dump/back 현재 디렉토리에 dump 복구
참조: 다른 디렉토리에 복사한(cp)후에 옮겨 복구하는 것이 안전하다.
<<실습예제>>
#mkdir /dump
#ufsdump 0uf /dump/back /p1 : 참조:ufsdump 0uf /dev/rmt/0 /p1
#man cp >> help_cp
#ufsdump 1uf /dump/back1 /p1
#ufsdump 2uf /dump/back2 /p1
복구
#cd /var/tmp
#ufsrestore rvf /dump/back
<<ivf mode 사용>>
#cd /var/tmp
#ufsrestore ivf /dump/back
>extract
>volume number # “1”
>set ower/mode ..? [y/n]n (backup mode)
>q(quit)
#ls -al
tar command
#tar cvf (파일 결합)
#tar xvf (파일 풀기)
tar는 압축기능은 없다. 1개의 파일로 만들어줄뿐이다.
참조: tape backup 확인 옵션 : #tar tvf
'OS or 이론 > Solaris' 카테고리의 다른 글
solaris 에서 ~ 와 - 사용 불능 (4) | 2008.05.10 |
---|---|
[솔라리스] c0t0d0s0 (0) | 2008.05.05 |
[솔라리스] 패스워드 잃어버렸을때 (2) | 2008.05.04 |
[솔라리스] 해상도 변경 (0) | 2008.05.04 |