문제
- 프로젝트 디렉토리를 생성하고 하부 디렉토리및 default 파일의 소유자와 그룹 소유자를 지정한다. 1.1 다음 조건에 따라 디랙토리와 계정, 그룹을 생성한다. 프로젝트 Base 디렉토리 : /home/data, admins(GID:3000), admin(UID:3100) 1.2 Base 디렉토리의 소유자와 그룹소유자를 admin.admins으로 지정한다. 1.3 Base 디렉토리는 소유자와 그룹 소유자는 모든 권한이 있으나 이외 사용자는 읽기만 가능하도록 설정한다.
- Public Project 디렉토리에는 te(te1,te2)만 모든 권한을 가지며 이외 인원은 변경은 불가능하고 읽기만 가능하도록 설정한다. 2.1 다음과 같이 public 디렉토리와 계정을 생성한다. public 디렉토리 : /home/data/public, te(GID:4000), te1(UID:4100), te2(UID:4200) 2.2 Public 디렉토리에는te(te1,te2)만 모든 권한을 가지며 이외 인원은 읽기만 가능하도록 퍼미션을 지정한다.
- Private project 디렉토리에는 st(st1,st2)만 모든 권한을 가지지만 이외 인원은 아예 접근이 불가능하도록 설정한다. 3.1 private Project 디렉토리와 계정을 생성한다.
- Private Project 디렉토리 : /hom/data/private, st(GID:5000), st1(UID:5100), st2(UID:5200) 3.2 Private 디렉토리에는 st(st1,st2)만 모든권한을 가지며 이외 인원은 접근이 불가능하록 퍼미션을 설정한다.
- 조직내 모든 인원을 위한 down 디렉토리 생성 4.1 조직내 모든 사용자를 대상으로 파일 배포를 위한 디렉토리를 생성하고 퍼미션을 설정한다. down 디렉토리 : /home/data/down 퍼미션 : 모든 인원이 접근 down가능하지만 upload는 admin 만 가능하다. 4.2 admin의 계정은 홈 디렉토리 외부로 나가지 못한다. 이런 경우 down 디렉토리에 접근 하도록 설정한다. 4.3 시스템 재시작에도 admin가 down에 접근 가능하도록 설정한다.
1 번 mkdir /home/data
groupadd -g 3000 admins
useradd -g 3000 -u 3100 admin
chown -R admin data/
chgrp -R admins data/
chmod -R 775 data/
2번 mkdir /home/data/public
groupadd -g 4000 te
useradd -g te -u 4100 te1
useradd -g te -u 4200 te2
chgrp -R te data/public
chmod -R 775 data/public
3번 mkdir /home/data/private
groupadd -g 5000 st
useradd -g st -u 5100 st1
useradd -g st -u 5200 st2
chgrp -R st data/private
chmod -R 770 data/private
4번 mkdir /home/data/down
chown -R admin /home/data/down
chmod -R 755 /home/data/down
mount -B /home/data/down /home/admin/down
echo "mount -B /home/data/down /home/admin/down" >> /etc/rc.d/rc.local
## chroot로 바꿀수도 있음 ##
리눅스
프로세스(Process)
시스템에서 실행 중인 프로그램을 프로세스라고 합니다.
프로세스는 메모리 일정 구역을 할당 받아 실행되며 이렇게 할당 받은 메모리 영역을 프로텍션 도메인(Protection domain)이라고 합니다.
ㄴ 프로그램이 실행되서 메모리에 올라가있는것
프로세서 - 기계, cpu
- 프로세스는 pid(프로세스 id)에 의해 구별된다.(pid는 중복 될수 없다. 네트워크는 port까지 붙는데 port는 중복될수 있음.)
- 프로세스는 tree 구조를 이루며 최상위 프로세스는 systemd(init)이다.
- 프로세스는 ppid(부모프로세스)로 구별되는 상위(부모 프로세스)를 갖는다.(항상 부모자식 관계다.)
- fork(자기와 똑같은놈을 복사해서 실행하는거), exec
systemd(init) = pid : 1
커널 = pid : 0
관련 명령어
pstree, ps, kill, pkill, jobs, nohup, exec, top, nice, renice ...…
pstree, ps, kill을 그나마 많이 사용합니다.
Foreground
현재 터미널에서 제어되는 프로세스
ㄴ 터미널 메인 화면에서 실행되는 것. 터미널 자체를 점유하고있기 때문에 동시에 명령을 수행하지 못함.
터미널 마다 하나씩 있는거라 보면 된다.
Background
터미널과 무관하게 메모리에서 실행되는 프로그램
ㄴ 실행하면 창을 닫아도 메모리에서 돌아가기때문에 실행이 계속 된다. (demon, 서비스)
ps
- 프로세스를 확인합니다.
옵션
-a(x) : 현재 터미널에서 실행중인 프로세스(모든 프로세스를 보여줘)
-e : 모든 프로세스
-f : 자세한 내용
-p : 특정 PID의 프로세스를 지정한다.
- UID : 프로세스 실행 계정
- PID : pid
- PPID : 부모프로세스 pid
- C : idle time
- STIME : start time
- TTY : 터미널
- TIME : CPU 사용 시간
- CMD : 실행 명령
kill
사용자나 프로그램이 프로세스를 제어하기 위해 시그널(Signal)을 발생시키는데 이런 시그널을 직접 보내는 명령어. 보통 프로세스를 강제 종료할 때 사용
# kill [-signal] [PID]
옵션
-l : signal 목록(9 : 프로세스 강제 종료)
nohup
프로세스 중단(hangup)을 무시하고 명령을 계속 실행(터미널이 종료되도 프로그램이 실행되도록 하는것. background로 돌리는게 아님.) 또한 표준 출력을 nohup.out으로 변경합니다.
ㄴ 작업 시간이 긴 명령어를 실행할 때 로그 아웃이나 터미널 다운에 대비할 수 있습니다.
# nohup [command]
RPM
edhat 사에서 제공하는 리눅스용 프로그램을 배포하는 기술
프로그램의 설치, 검증, 삭제 등의 다양한 기능을 제공합니다.
rpm으로 설치하면 리눅스에 원래 있던 프로그램처럼 설치가 됩니다.
RPM에 대한 정보
RPM 패키지의 구조
• 패키지명-버전-릴리즈.아키텍처.rpm
# rpm -qa : 시스템에 설치된 모든 패키지명
# rpm -qi 패키지명 : 패키지의 상세한 정보
# rpm -ql 패키지명 : 패키지의 파일 리스트
# rpm -qf 파일명 : 지정한 파일이 포함된 패키지(어떤패키지로 설치된 파일인지 나옴)
설치 및 업그레이드
# rpm [-ivh | -Uvh | -Fvh] 패키지명
옵션
- i : 설치
-U : 업그레이드 (이전버젼 미설치시 -i와 동일)
-F : 업그레이드만
-v : 설치과정 출력
-h : 설치정도 출력 (#)
# = 해쉬마크
-Uvh : 많이 씀.
실습
vm에서 iso파일 넣고
mkdir /cdrom만들고
mount /dev/cdrom /cdrom/ 으로 마운트 해주기
vsftp파일 다운
cd /cdrom/AppStream/Pacages/v
rpm -Uvh vsftpd-3.0.3-36.el8.x86_64.rpm
오류뜬것
밑에 있는 프로그램들이 있어야 내가 다운받을려고 하는것을 다운받을수 있었따.
예전에는 밑에 일일이 하나씩 다운로드했었따.
삭제
# rpm -e 패키지명
• 지정한 패키지를 삭제한다.
주요 추가 옵션
옵션
--nodeps : 의존성을 무시하고 작업한다. (삭제에 주로 이용) (의존성 무시하고 해줘)
--force : 같은 버전의 패키지나 파일이 있어도 무시하고 작업진행(가끔 rpm자체가 깨지는 경우가 있음)
--oldpackage : 다운그레이드시 사용
위에 2가지를 주로 사용함.
PT
OSPF (Open Shortest Path First)
- 계층화 된 라우팅 프로토콜 (rip단점을 보안해서 나온것.)
- IGP(Internal Gateway Protocol)
- AS(Autonomous System)내부에 사용(AS간에는 BGP가 사용됩니다.) - Area에 의해 효율적인 라우팅 정보 관리가 가능하다.(동일한 라우팅 정보를 전달받습니다.)
- Backbone area(Area0)을 통해 연결된다.
- Area0에 연결되지 못하면 Virtual link를 통해 연결한다.
- Area 내에서 LSA를 교환한다.
- Area 내에 속한 장비들을 서로 neighbor 라고 표현하고, neighbor 끼리 동일한 라우팅 정보를 주고 받는습니다.
- 국내에서는 Area가 많이 필요한 환경이 거의 없습니다. 즉 Area0만 있는 경우가 대부분이다 - Link의 cost를 기반으로 경로를 배정한다.
- Hop 제한이 없다.
- Dijkstra의 SPF알고리즘을 바탕으로 경로가 선택된다.
- link cost = 기준대역폭/실제대역폭 - VLSM을 지원한다.
Backbone area(Area0)가 중요함.(반드시 있어야함.)
• ABR : Area Border Router
• IR : Internal Router
• ASBR : Autonomous System Boundary Router
라우터의 구분
- IR : Area 내부 라우터
- ABR : Area를 연결하는 라우터
- ASBR : AS와 연결하는 외부 연결 라우터
- DR(Designated Router)
: Link stat 정보를 취합, 관리하는 라우터
: IR과 DR간에 link stat 정보를 주고 받는다. - BDR(Backup DR)
: DR이 문제가 생겼을 때를 대비해서 백업용으로 지정되는 라우터
: 라우터끼리 직접 연결되있는 경우는 DR, BDR이 필요하지 않을 수 있습니다.
OSPF는 neighbor 간에 라우팅 정보를 공유한다.
- 라우터 간에 이런 adjacency를 위한 조건이 필요하다.
- 동일 area에 위치한다.
- 동일한 인증 정보
- 동일한 Hello interval 및 Dead interval을 가져야한다.
- 이들 값은 토플로지에 따라 자동으로 결정된다.
- 10초, 40초 : ppp, ethernet
OSPF의 네이버(Neighbor)와 인접 관계(Adjacency)는 동일한 의미가 아니다.
- 네이버 라우터 중에 인접관계인 라우터와 LSA를 교환한다.
- 이를 통해 모든 라우터가 동일한 링크 정보를 유지한다.
- Adjancency 는 DR(BDR)과 IR간에 이뤄진다.
1번과 2번 라우터는 네이버이면서 인접관계입니다.
1번과 3번은 네이버이지만 인접관계는 아닙니다.
point to point - 거의 사용안함.
● Poing to Point Link : HDLC, PPP등의 Serial Link
● DB/BDR를 선출하지 않는다.
● OSPF Hello 및 LSU 패킷은 Multicast 224.0.0.5를 이용한다.
• Hello Packet : 10s
• Dead Interval : 40s
Multiaccess Network
● Ethernet등의 LAN Link
● DR/BDR을 선출한다.
• Priority가 기준이 된다.
• 가장 높은 router id가 DR이 된다.
● 모든 라우터는 DR/BDR과만 인접관계가 된다.
● DR과 통신
• TO DR : 224.0.0.6
• FROM DR : 224.0.0.5
'kh교육' 카테고리의 다른 글
(20250725022)CORN, RSYNC(수정,보안 필요..) (3) | 2025.07.26 |
---|---|
(20250724021)DNF, YUM,OSPF (3) | 2025.07.24 |
(20250722019)라우팅정보 추가/삭제,nat구성 (2) | 2025.07.22 |
(20250718018)IP설정 변경, 리눅스 클론, php (1) | 2025.07.18 |
(20250717017)네트워크 설정 확인,변경 & Default router (6) | 2025.07.17 |