본문 바로가기

교육/OS

Day 6

반응형

이번시간에는 파일과 권한설정에 대해 배워보겠습니다.

 

리눅스에서 파일 권한에 관해 실습하면서 먼저 주의해야할사항이 있습니다. 파일의 종류, 파일에 주는 권한 등에 따라 파일명이 출력될때 색이 다르게 출력되는데 이것으로 파일의 성격을 쉽게 유추는 할수있지만 모든 Unix시스템에서 통용되는 것이 아니라 다른 대부분 시스템에서는 색이 같아서 파일 종류로 반드시 알아볼수있어야 합니다.

 

파일 구조의 예시입니다

 

파일의 종류는 다음과 같습니다.

기호 파일 종류
- 일반 파일
d 디렉토리
l 링크 파일
b 블록(block) 디바이스 파일
c 문자(character) 디바이스 파일

여기서 살짝 생소한 디바이스 파일에 대해 짚고가봅시다.

블록/문자 디바이스 파일의 위치는 '/dev'안에 있습니다. 따라서 이 파일들은 유저뿐만이 아니라 프로그램도 HW에 직접적으로 접근할 수 없어 디바이스 파일을 통해 커널에 접근해서 작업을 수행하는 것 입니다.

 

block디바이스파일은 i/o의 최소단위가 OS에서 최소 blk( 블록단위)로 정해져 있고 cache가 가능합니다. 최소블록단위에는 입출력시 데이터가 움직이는 최소 사이즈로써, 만약 최소단위가 10MB인데  1MB를 전송한다고 해도 10MB를 사용하게 됩니다.

character 디바이스 파일은 serial port등 에 사용되었는데 현재는 거의 쓰지 않고있습니다.

 

* buffer / cache 두개가 조금 다르긴 한데 개념 자체는 데이터를 읽고 쓸때 속도가 낮은 저장매체(디스크)에서 자주사용하는 데이터를 미리 저장해 두었다가 저장매체가 아닌 buffer나 cache에서 불러오는것 형식으로 실행됩니다.

캐시 알고리즘은 LRU알고리즘, TTL알고리즘이 있는데 LRU은 DB처럼 고용량 상황, TTL은 저용량 상황에서 사용됩니다.



Permission 즉, 권한이라고 하는것은 최소권한의 원칙을 위해 반드시 필요합니다.

권한을 가지게 하는 분류는 3가지가 있는데 1. 소유자(User) 2. 그룹소유자(Group) 3. 그외(Other) 이렇게가 전부입니다.

권한을 분류할 수 있는 것은 한정적인데 권한을 설정해야하는 경우는 다양해서 사전에 계획이 중요합니다.

 

권한은 r,w,xs,t,-가 있고 파일과 디렉토리에 따라 성격이 조금 다르고, s,t는 나중에 알아보겠습니다. 권한을 표로 비교해보면 다음과 같습니다.

권한 파일 디렉토리
r 읽기 파일 목록 보기
w 쓰기(수정) 파일 생성(삭제)
x 실행 들어가기
- 권한없음

구조에서 권한을 표시할때는 9자리로 표현하는데 위의 분류 순서 '소유자.그룹소유자.그외'의 순서로 작성됩니다.

또 권한을 알파벳문자가 아닌 8진수로도 표현할 수 있습니다. 예를 들어 rwxr-xr-x 는 이진수로 111 101 101_(2)가 됩니다. 이때 bit 연산을 하면 r:4, w:2, x:1이기때문에 다르게 표현하면 755로 표현할수있습니다.

 

권한제어에 사용하는 명령어는 chmod, chown, chgrp 이렇게 3가지가 있습니다.

 

1. chmod는 퍼미션 수정을 하는 명령어 입니다. chmod명령어는 파일이 소유주는 선언이 가능하고, 구조는 'chmod -옵션 퍼미션 파일'입니다. 옵션은 -R(recursive) 하나 존재합니다. 의미는 뒤에 오는 내용이 디렉토리인 경우 하위 디렉토리 및 파일까지 수정한다는 의미입니다.

 

eg)

chmod -R 755 a.txt => a.txt에 대한 권한은 rwxr-xr-x로 정의

chmod o+x,g-x a.txt => 소유주에 x권한 추가하고 소유그룹에 x권한 제거

chmod g+wx,o-w,o+x a.txt => 소유그룹에 w,x권한 추가하고 소유주에 w권한 제거하고 x권한 추가

chmod a-x aa => aa의 모든부분에서 x권한을 제거

 

8진수로 제어하기도 하지만 문자로도 제어가 가능합니다. 그 성분은 대상, operator, 권한이 있습니다.

대상 : u(user)  g(group)  o(other)  a(all)

operator : +(추가)  -(삭제)  =(변경하지 않음)

권한 : r,  w,  x,  s,  t


2. chown, 3. chgrp 이 명령어 들은 대상의 소유자, 그룹소유자를 변경하는  명령어 입니다. 

소유자를 변경하는 명령어의 구조는 'chown -R 유저명 대상'이며, 소유자와 그룹소유자를 같이 변경하는 명령어는 'chown -R 유저명.그룹명 대상'이고, 그룹소유자를 변경하는 명령어는 'chgrp -R 그룹명 대상'입니다. 여기에서 소유자와 그룹소유자를 같이 변경하는 명령어인 'chown -R 유저명.그룹명 대상'은 비표준명령어입니다. 비표준 명령어란 Unix에서 가능은 하지만 표준명령어는 아니기때문에 Linux에서는 OS마다 안되는것인데 생각보다 꽤 많습니다. 그 예로 root관리자만 사용가능한 권한은 정보보안에서 소유자이전이 없는데 변경하게 되면 책임추정이 불가능해지기 때문입니다.

실제로 보안사고의 대부분은 내부자, 그중에서도 root관리자 또는 system관리자 일으키는 경우가 많다고 합니다.

이러한 관점에서 확대된것이 직무분리의 원칙인데 'root관리자는 보안상, 프로그래밍 혹은 프로그램설치가 불가능하다'는것이 그 내용입니다.

 

umask는 파일이 생성될때 퍼미션중 제외될 퍼미션을 지정하는것입니다.

umask값은 'umask'라고 입력하면 확인이 가능하며 기본값은 022(0022)로써 디렉토리 퍼미션 : 755(0755), 파일퍼미션 : 644(0644) 이 됩니다.

umask 변경은 'umask 제외할퍼미션'하면 되는데 예륻 들어 'umask 077'라고 하면 700퍼미션을 가진 파일이 생성되는 형식입니다.

다음 문제로 실습을 해봅시다. 설명대로 각 계정의 권한을 주고 마지막 질문의 답을 해보세요.

st00 -> /test/~전부 가능

st01 -> /test/eg1수정가능

st02 -> /test/eg1읽기가능

st03 -> /test 접근 불가

 

st01과 st02의 권한적 차이는?

eg2 디렉토리 생성할수있는 계정은?

 

 

더보기

 <답>

먼저 그룹 및 계정을 생성합니다
root관리자로 생성하게 되면 권한을 다 풀어야 하므로 접근이 편하게 home디렉토리로 옮겼다
test 권한 소유주 그룹소유주 변경
test의 group권한 변경
eg1 권한변경
권한변경방식 2가지
eg1 권한설정
st00 가능한 기능들
st01 가능한것
st02 가능한것
st03 가능한것
st00, st01(=st02), st03 권한 실행 확인
umask 적용

 

st01과 st02의 권한적 차이는? -> 실질적으로는 파일이기 때문에 읽기가 되야 하는데 불가능해서 수정이 불가능하다 디렉토리라면 리스트불러오는것은 가능하다. 파일을 성능에 따라 계정이 접근하게 하는것이 아니라 그룹 안에 들어가 있기때문에 소유주가 아닌이상 그룹내에서는 따로따로 권한을 가질 수 없다.

eg2 디렉토리 생성할수있는 계정은? -> 파일을 생성할 권리를 가진 권한을 가진 st00이다.

 

 

 

 

네트워크개념을 잠깐 더 살펴보고가면

데이터 이동 추상도 입니다.
데이터 이동 추상도 입니다.(취소)

원래는 client에서 한칸씩 내려오는 것을 다중화(multiplexing) server에서 한칸씩 올라가는 것을 역다중화(dimultiplexing)이라고 하는데 요즘에는 보통 APP ~ Physical Layer, Physical Layer ~ APP을 가르키기도 합니다.

 

위에서 중요한건 각 패킷의 이름및 구성요소도 중요하지만 구성 순서가 Segment와 Datagram은 목적지(서버), 소스(클라이언트)순으로 헤더가 붙는데 frame은 클라이언트 MAC주소, 서버 MAC주소 순으로 헤더가 붙습니다. 또한 서버는 포트넘버가 고정인 반면, 클라이언트는 포트넘버가 가변이라는 점 입니다.


각 필요한 데이터 정보에 따라 장치를 부르는 이름이 직관적으로 달라질 수 있는데 switch는 MAC주소까지만 필요하므로 2 Layer, router는 IP주소까지만 필요하므로 3Layer라고 부르기도 합니다.

 

보안의 가장 중요한 성질은 기밀성 ; 무결성 ; 가용성인데, 여기서 가용성은 네트워크를 공격하는 방식을 취하며 실제 해킹의 많은 비율을 차지합니다. 기밀성은 패스워드 크랙정도의 공격이며, 사실상 기밀성과 무결성은 공격이 생기는 비율이 많이 적은데 만약 공격 받는다면 DB공격이 속하게 됩니다.

 

*Ethernet부분은 물리적으로 변경이 가능합니다.

*원칙은 1랜 1IP 1MAC인데 OS를 속여서 1랜에 여러 IP가질수있습니다.

 

 

 

이번엔 네트워크 및 서버생성에 대해 배워보기로 합시다.

먼저 서버 생성을 하기전에 서버에서 사용될 서비스에 대해 설정을 해줘야 합니다.

윈도우OS에서는 제어판 \ 시스템및보안 \ 관리도구 \ 서비스에서 설정이 가능합니다. 하지만 Linux에서는 ntsysv명령어로 접속한 후 서비스 목록확인을 하면 됩니다. 항목중 백설표표시는 부팅시 실행을 의미하고, 각 항목은 스페이스바로 선택합니다. 그리고 항목이동은 탭키, 위아래이동 화살표입니다. 여기서 중요한 점은 사용할 서비스를 반드시 확인하고 설정해줘야 한다는 것 입니다. 잘못하면 네트워크 부팅 자체가 안되는 상황도 발생할 수 있다.

 

ntsysv항목들 중 Network manager .service설정은 수동설정이 불가하며 설정은 리부팅해야 적용됩니다. (*재부팅 명령어는 reboot이다.)

firewalld.service는 구체적으로 어떤 방화벽시스템을 사용할지 모르니 사용 하지 말아야 한다. 하지만 반대로 어떤 방화벽시스템을 사용하고 어떻게 공격해오는지 안다면 이 방화벽을 쓰면 강력한 보안이 된다는 것이다.

 

설정 폴더중에서 cd /etc/selinux가 있는데 이 안에 config는 환경설정 파일입니다. 이 파일은 정책기반 소프트웨어에 대한 파일이며 보안정책을 설립하고 사용해야 의미가 있습니다. 보안정책서가 없다면 기준이 없기때문에 쓸모가 없습니다.

 

환경설정 파일 수정은 vi config를 이용합니다. 여기서 팁은 *마우스 왼쪽 드래그 : 복사 , 마우스 오른쪽 : 붙여넣기를 의미한다는 것 입니다. 또 수정해 주고나면 재부팅이 되어야 변경사항이 저장됩니다. 저장하면 적용되지 않습니다.

 

Linux에서 IP, Netmask, Gateway를 설정해 줄때 /etc/sysconfig/network-scripts/ifcfg-네트워크명파일을 많이 수정하게 됩니다. 이중에서 중요한것은 ONBOOT=[yes/no]가 Yes이어야 하고 BOOTPROTO=[static/dhcp/bootp/none]가 none이어야 합니다. 나머지 요소는 필요한 것을 수정해 주면 됩니다. ONBOOT는 시스템이 부팅될때 네트워크도 같이 자동적으로 부팅이 되나 하는 요소라서 no를 하게되면 서버에 찾아가야하는 불상사가 생길수있으니 Yes로 유지하도록 합니다. 또한 BOOTPROTO는 네트워크 주소를 자동으로 할당받을것인지 수동으로 할당받을것인지를 결정하는 것인데 dhcp로 되어있으면 자동으로 할당받는 것이므로 none으로 변경해 수동으로 할당하도록 합니다.

네트워크 설정을 변경하는데 시스템을 재부팅시키기에는 의미 없이 과한 행동이 되므로 'systemctl restart network'로 네트워크만 재부팅 시킵니다.

 

또 알아둬야 할것이 자동실행스크립트인데 위치는 /etc/rc.d/안에 rc.local파일입니다. 이 파일에 있는 명령어는 리부트시 자동으로 실행되는 것들이 저장되어 있습니다. *하지만 처음에 확인하면 x권한이 없어 접근이 안되므로 x퍼미션을 주어야 합니다. 그중에서 반드시 해야 할것 중 하나가 rdate인데 이것은 시간을 동기화 하는 명령어 입니다. 따라서 rdate -s time.bora.net 라고 적으면 해당 시간 기준시간으로 변경됩니다.

 

새로 설치했을 때 서비스를 필요한 서비스만 설정해야합니다. 그렇지 않으면 시스템이 무거워지게 됩니다.

필요한 서비스만 선택할수있게 호출하는 명령어는 ntsysv입니다. 우리의 실습에서 설정해야할 서비스는 다음과 같습니다.

 

 

 

 

 

여기서 NetworkManager.service를 설정하지 않는다면 인터넷 연결이 되지 않습니다.

 

실습을 해 봅시다.

 

만약 새로 설치된 상황

연결설정3가지

ifconfig 정보없음

처음 네트워크 연결

ip netmask gateway설정

 

더보기

<답>

seliunx/config 확인
rc.local의 접근 권한 부여
부팅시마다 시간 동기화
ping확인
network name을 이용한 IP주소 확인 및 변경
IP주소 변경
변경하게 되면 IP주소가 변경되었으니 기존에 연결이 끊기게 됨(systemctl restart network)
패킷을 송수신 하는 장치의 MAC주소 확인
도메인 명으로 IP확인(host) 및 데이터이동경로확인(traceroute)

 

반응형

'교육 > OS' 카테고리의 다른 글

Day 78 (Project_Ubuntu_Manual)  (0) 2020.03.18
Day 75 (Astaro)  (2) 2020.03.13
Cent OS 5  (0) 2020.03.12
필수 3가지  (0) 2019.11.28
CentOS 6.10  (0) 2019.11.26