처음부터 차근차근

프로세스 제어와 제한, 우선순위, 암호화 본문

Linux & Unix

프로세스 제어와 제한, 우선순위, 암호화

_soyoung 2022. 2. 26. 17:48
반응형

[환경 설정] 실습 환경 구축

adduser 명령어를 이용해서 test 사용자 계정을 추가

test로 loop 코드 실행

결과 : 작대기가 빙글빙글 돔

 

 

 

프로세스 제어

top

loop 프로세스가 실행되는 모습을 top 명령어를 통해 보았다.

여기서 top은 실시간으로 프로세스의 상태를 볼 수 있는 명령어이다.

 

timeout

timeout 명령어를 통해 4초동안만 loop를 수행할 수 있게 했다.

 

프로세스 제한

ulimit

ulimit 명령어를 통해 soft설정의 모든 제한 상태를 보았다.

 

최대 로그인 개수 제한

/etc/security/limits.conf를 통해 test 계정의 최대 로그인 개수 1개로 제한했다.

오른쪽 사진은 test계정에 첫 번째로 로그인한 것이고, 왼쪽 사진은 test계정에 한 번 더 로그인을 시도한 것이다. test의 최대 로그인 개수를 1개로 지정해 놓았기 때문에 permission denied가 뜨면서 로그인이 되지 않는다.

 

cpu 점유시간 제한

/etc/security/limits.conf를 통해 test 계정의 cpu 점유 시간을 1분으로 제한했다.

그 후 test계정으로 로그인해서 loop를 실행시켜보았다.

그랬더니 1분이 지나자 밑의 글이 나오면서 loop가 강제종료 되었다.

위에서 cpu 점유 시간을 1분으로 맞춰 놓았기 때문에 1분이 지난 후 강제종료 된 것이다.

 

프로세스 개수 제한

/etc/security/limits.conf를 통해 test 계정의 프로세스 개수를 10개로 제한했다.

여기서 nproc는 최대 프로세스 개수를 말한다.

아래는 forkcount의 코드이다.

 

원래는

./forkcount 100을 하면 아래 이미지와같이 프로세스가 100개가 생기는데, test계정의 프로세스 개수를 10개로 제한해서 위 이미지과 같이 생기고 멈춘다.

 

 

파일 접근 링크 만들기

결과

 

 

제한

파일 크기 제한

/etc/security/limits.conf를 통해 test 계정의 파일 사이즈를 1메가바이트로 제한했다.

아래는 FileSize.c의 코드이다.

test계정으로 들어가서 FileSize실행시키면 아래와 같은 결과가 나온다.

첫 번째 줄은 test계정의 파일의 최대 크기인 1메가바이트를 넘지 않아(100kb) 파일이 만들어졌다. 하지만 두 번째 줄은 파일 크기가 1메가를 넘어버려서(100mb) 파일을 만들지 못했다.

 

파일의 접속 개수 제한(파일 기술자 개수 제한)

/etc/security/limits.conf를 통해 test 계정의 만들 수 있는 파일 최대 개수를 10개로 제한했다.

아래는 FileOpenCount.c 코드이다.

test 계정으로 들어가서 FileOpenCount를 실행시키면 다음과 같은 결과가 나온다.

최대로 만들 수 있는 파일 개수를 10개로 정해 놓았기 때문에 100가 만들어 지지 않고 7개만 만들어졌다.

 

 

메모리 크기 제한

/etc/security/limits.conf를 통해 test 계정의 할당할 수 있는 메모리 크기를 10메가로 제한했다.

아래는 DataSize.c 코드이다.

test 계정으로 들어가서 DataSize를 실행시키면 아래의 결과가 나온다.

메모리에 할당할 데이터 사이즈를 1000000kb로 정했으나 할당할 수 있는 메모리 크기를 최대 10메가로 정했기 때문에 10006kb만 할당되었다.

 

 

프로세스 우선순위

priority.c 코드

 

priority.c 실행결과

부모 프로세스와 자식 프로세스가 실행되는 모습이다.

이때 top을 쳐서 실행 우선순위를 보면 부모 프로세스, 자식 프로세스가 우선순위가 같은 것을 알 수 있다.

이 우선 순위를 renice 명령어를 이용하여 바꿔주었다.

부모 프로세스에겐 우선 순위 -20을 해주고, 자식 프로세스에겐 우선 순위 +10을 해주었다.

그 결과 부모 프로세스는 원래 기본 우선 순위인 20 - 20해서 0순위가 되어 가장 우선순위가 높게 되었고, 자식 프로세스는 20 + 10해서 30이 되어 우선 순위가 전보다 더 낮아졌다.

 

 

계정 별 제한

우선 순위 지정

/etc/security/limits.conf를 통해 test 계정의 지정한 기본값으로 우선순위를 적용했다.

test계정으로 들어가서 sleep 100000을 치고 top을 쳤을 때의 결과이다.

모두 디폴트 값으로 +19가 되어 우선 순위가 39가 된 것을 볼 수 있다.

 

 

우선 순위 제한

/etc/security/limits.conf를 통해 test 계정의 변경될 수 있는 우선순위의 범위를 정했다.

결과

우선 순위를 -30하라고 명령했지만 우선 순위 변경 범위를 20으로 두었기 때문에 우선순위가 -20이 되었다.

 

 

RC4 암호화

암호화

Openssl을 이용해 비밀번호 112233을 암호화했다.

passwd가 아래처럼 암호화되었다는 것을 알 수 있다.

 

복호화

암호화한 내용을 다시 복호화 했고, 복호화를 함으로써 passwd.dec파일이 생겼다.

 

 

AEC 암호화

암호화

Openssl을 이용해 비밀번호 445566AEC 암호화했다.

 

복호화

아까 암호화한 내용을 다시 복호화 했다.

 

체크섬

 

 

 

 

 

출처 : 운영체제(21-1학기)김병국교수 강의 내용 변형 및 요약

반응형
Comments