기본 콘텐츠로 건너뛰기

리눅스 커널 모듈 관리: 로드, 언로드 및 예제

리눅스에서의 커널 모듈 관리하기 안녕하세요, mj입니다. 오늘은 리눅스에서 커널 모듈을 어떻게 관리하는지에 대해 알아보겠습니다. 커널 모듈은 리눅스 커널의 기능을 확장하는 중요한 요소입니다. 이 글에서는 커널 모듈을 로드하고, 언로드하며, 몇 가지 유용한 예제를 통해 사용 방법을 소개하겠습니다. 커널 모듈이란? 커널 모듈은 리눅스 커널의 기능을 동적으로 추가할 수 있는 코드 조각입니다. 이를 통해 시스템의 성능을 최적화하거나 새로운 하드웨어를 지원할 수 있습니다. 커널 모듈 로드하기 커널 모듈을 로드하는 명령어는 modprobe 와 insmod 입니다. 두 명령어의 차이점은 다음과 같습니다: modprobe : 의존성을 자동으로 처리하여 모듈을 로드합니다. insmod : 특정 모듈만 로드하며, 의존성을 수동으로 관리해야 합니다. 예제: 모듈 로드 다음은 dummy 라는 테스트용 모듈을 로드하는 예제입니다. sudo modprobe dummy 결과: dummy: loaded successfully. 커널 모듈 언로드하기 모듈을 언로드할 때는 rmmod 와 modprobe -r 를 사용합니다. modprobe -r 는 의존성을 고려하여 모듈을 언로드합니다. 예제: 모듈 언로드 다음은 dummy 모듈을 언로드하는 예제입니다. sudo rmmod dummy 결과: dummy: unloaded successfully. 커널 모듈 상태 확인하기 현재 로드된 모듈을 확인하려면 lsmod 명령어를 사용합니다. 예제: 로드된 모듈 확인 다음은 현재 로드된 모듈을 확인하는 예제입니다. lsmod | grep dummy 결과: dummy 16384 0 모듈 정보 확인하기 모듈에 대한 자세한 정보를 확인하려면 modinfo 명령어를 사용합니다. 예제: 모듈 정보 확인 다음은 dummy 모듈의 정보를 확인하는 예제입니다. modinfo dummy 결과: filename: ...

10. seLinux

안녕하세요, MJ 입니다.
seLinux 에 대한 내용을 다루어보려고 하는데
내용이 쉽지 않고, 사실 상세한 내용에 대해 공부가 부족하지만
실무에서 seLinux 를 접하면서 알게 된 내용으로 작성 해 봅니다.

<노트>
seLinux 는 래드햇 계열의 리눅스 시스템에 기본으로 설치되어있는 보안 툴 입니다.
활성화 되어있으면 보안측면에서 안정성이 상당히 올라가게 되지만
실무자들의 입장에서는 여간 귀찮은 것이 아닙니다.
왜냐하면, 보안이 강해진다는 의미는 사용이 불편해진다는 의미이기때문인데
파일을 하나 새로 만들고 시스템에 적용시키면, 원하는대로 동작하지 않고
왜 동작하지 않았는지에 대해 파악을 하는데에 많은 시간이 소요되기도 하고(물론 경험해본 내용에 대해서는 아니지만)
추가로 무언가 해야 비로소 원하는대로 동작을 하는 등, 작업을 하는 입장에서는 귀찮을 수 밖에 없습니다.
<seLinux 3가지 모드>
Enforcing
   : seLinux 가 활성화 되어있으며, 모든 보안설정을 지키는 모드
Permissive
   : seLinux 가 활성화 되어있지만, 대부분 보안설정을 지키지 않아도 warning 메시지만 출력하고 해주는 모드
Disabled
   : seLinux 의 비활성화 모드

위 내용 중에 Enforcing, Permissive 모드는 seLinux 활성화 모드로
online 중에 변경이 가능하지만 비활성 모드와 활성모드 간 변경이 필요한 때에는
시스템의 리부팅이 동반되어야만 합니다.


  현재모드를 확인하는 방법입니다.
[root]# getenforce
Enforcing
Permissive
Disabled
  모드를 변경하는 방법입니다.
(파일을 열어서) [root]# vi /etc/selinux/config

...<파일의 내용 중>...
SELINUX=enforcing
SELINUX=permissive
SELINUX=disabled

-> 셋중에 하나를 설정하여 시스템이 부팅할 때 설정 될 seLinux 모드를 정할 수 있습니다.


온라인 중에 enforcing 와 permissive 간에 모드를 변경할 때에는
[Enforcing] - [root]# setenforce 1
[root]# getenforce
Enforcing
[Permissive] - [root]# setenforce 0
[root]# getenforce
Permissive
이렇게 명령어 한줄로 설정을 변경할 수 있습니다.



고객사에서 enforcing 모드를 반드시 사용해야 하는데
일반적이지 않은 요구사항을 처리하는 과정에서 예상대로 동작하지 않는 경우
(예:ftp 서버를 설정 하였는데 ftp 계정의 루트 디렉토리를 홈이 아닌 시스템의 루트로 설정이 필요한 경우 등)
시스템으로 접근이 필요한 설정을 해야 하는데에 설정에 문제가 없지만 정상동작하지 않는 경우

[root]# getsebool -a
(명령어결과를 확인 해 보아야 할 필요가 있습니다)
: SELinux의 기능에 대한 활성화/비활성화 설정입니다.
SELinux 기능을 켜거나 끌 수 있는 수백 가지 설정이 있으며
이 중 이미 사전 정의되어 있는 내용을 확인 할 수 있습니다.
getsebool -a를 실행하여 시스템에 설정된 내용을 확인 할 수 있습니다.
root 패스워드를 잊어버려서 single 모드로 부팅하여 패스워드를 변경후 정상 부팅을 하였지만
설정 한 root 패스워드로 로그인이 되지 않는 경우, 시스템의 context 를 올바르게 재설정 하기위해
[root]# restorecon -vvFR /
또는
[root]# touch /.autorelabel
을 수행 및 리부팅을 다시 수행하여 시스템의 컨텍스트를 맞추어 주어야 할 필요가 있습니다.


<노트>
그래서 이렇게 특정 상황에서 작업자와 관리자를 괴롭게 하는 이 seLinux 사용 유무는 고객사의 방침을 따르지만,
대게 보통은 정해진 방침이 없어 disabled 로 변경하도록 권고하고 고객의 대부분은 이를 받아들여
비활성 상태로 사용하는 경우가 많습니다.
seLinux 에 대해 간략하게 설명을 작성 해 보았습니다.
읽어주셔서 감사하고, 저의 경험이 도움이 되시기를 바랍니다.

감사합니다.

G
M
T
Y
음성 기능은 200자로 제한됨

댓글

가장 많이 본 글

5. 버추얼박스:설정 (+네트워크의 종류 설명)

안녕하세요 , MJ 입니다 .   우리가 실습을 하는데에 필요한 버추얼박스의 설정에 대해 설명을 합니다 .     버추얼 박스의 설정에는 종류별로 메뉴가 구분되어있습니다 . 1-1. 환경설정 1-2. 네트워크 설정 1-3. 미디어 설정       다른 설정도 존재하지만 , 필요한 일이 없을것이 예상되고 , 위 3 가지 설정에 대해서만 알고 계신다면 버추얼 박스로 실습을 하는데에 아무런 지장이 없고 또 취업을 하신 뒤에 실무에 가셔서도 문제가 될 것이 없습니다 .   환경설정 부터 확인하겠습니다 . 1-1. 환경설정 : 우리가 알아야 편한 내용은 2 가지가 있는데 VM 의 기본 저장경로 설정 " 파일 (F)" 의 환경설정 (P) … [ 단축키 : Ctrl+G] 을 누르면 환경설정 창이 보이고 , 제일먼저 확인되는 기본 머신 폴더 (M) 입니다 . VM 을 저장 할 경로를 지정하는 것인데 VM 은 가상 머신으로 디스크의 용량과는 상관없이 , 가상 컴퓨터의 정보가 저장되는 것으로 , 텍스트 파일형태로 저장되어있고 , 그 내용에는 CPU 를 몇개 사용하도록 되어있는지 , 메모리는 얼마만큼을 할당하도록 되어있는지 , 네트워크 인터페이스는 몇 개가 어떻게 설정되어있는지 ... 등 가상의 컴퓨터를 정의하는 내용의 파일이 저장되는 경로가 되고 ,   디스크 파일은 별도 미디어 설정에서 관리가 되지만 VM 을 생성하는 과정에서 만든 디스크는 VM 저장경로에 함께 생성 되어있어 사용자가 파일탐색기로 경로를 찾아가보면 파일의 사이즈로 아 이것이 디스크 파일인가보구나 하고 알 수 있습니다 .( 용량이 크고 ...

MJ. 로또의 회차별 당첨번호 API 확인 (예제포함)

안녕하세요, MJ 입니다.   로또 당첨번호를 확인하기위해 동행복권 사이트를 찾아 가거나, 포털사이트에서 검색을 할 수 있지만, 다음 주소를 브라우저에 붙여넣거나, curl 명령을 이용하여 터미널에서 손쉽게 확인할 수 있는 방법이 있어 소개를 드리려고 합니다.     < URL> https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo= < 회차번호 >     - API 주소 활용 방법 브라우저에 URL 입력하여 확인 .           >> 인터넷 주소창에 URL 을 입력       ( 윈도우 ) cmd / ( 리눅스 ) bash 터미널에서 curl 을 사용하여 확인 .( 예 : 123 회차 ) >> curl " https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo= 123 " <cmd>   <bash>         python/java/c 등 코드를 만들어서 확인 . >> 코드를 짜서 확인하는 것이 , 데이터를 가공하기도 좋고 , 앞으로 출현할 숫자를 분석하기도 좋지만 , 자신이 원하는 대로 데이터를 가공하기 위해 시간과 노력의 투자가 필요함 .       [ (API 결과 예시 ) 123 회차 조회결과 ] >> json 형식으로 공백 , 줄바꿈이 없이 순서도 제멋대로 확인되지만 (브라우저나 터미널에서 확인하면), 다음과 같은 데이터가 확인됨 .   <확인한 정보 줄맞춰봄> #######...