TIL 아닌 WIL - 1월 첫째주

케이·2022년 1월 9일
0

TIL

목록 보기
1/13
post-thumbnail

스스로 부족한 것을 채우기 위한 학습 기록입니다. 부족함을 알고 채워나가려 노력하고 있습니다. 피드백은 언제나 환영합니다.😺

유닉스와 리눅스

유닉스

  • 유닉스(영어: Unix)는 교육 및 연구 기관에서 즐겨 사용되는 범용 다중 사용자 방식의 대화식, 시분할처리 시스템용 운영 체제이다. 1970년대 초반 벨 연구소 직원인 켄 톰슨, 데니스 리치 등이 소형 컴퓨터용으로 처음 개발하였다. 오늘날의 유닉스 시스템은 여러 회사들과 비영리 단체들이 이 커널로 활용하여 다양한 운영체제를 개발하고 있다.

  • 유닉스는 처음부터 다양한 시스템 사이에서 서로 이식할 수 있고, 멀티 태스킹과 다중 사용자를 지원하도록 설계되었다. 유닉스 시스템은 다음과 같은 개념을 가지고 있다.

일반 텍스트 파일, 명령행 인터프리터, 계층적인 파일 시스템, 장치 및 특정한 형식의 프로세스 간 통신을 파일로 취급 등.
소프트웨어 공학 측면에서, 유닉스는 C의 사용과 유닉스 철학이라는 부분이 특징이다.

  • 유닉스(UNIX) 상표권은 오픈 그룹이 갖고 있으며, 유닉스 소스 코드에 대한 저작권은 노벨이 소유하고 있다.

리눅스

  • 리눅스(Linux)는 1991년 9월 17일 리누스 토르발스가 처음 출시한 운영 체제 커널인 리눅스 커널에 기반을 둔 오픈 소스 유닉스 계열 운영 체제 계열이다. 리눅스는 일반적으로 리눅스 배포판 안에 패키지 처리된다.

  • 배포판에는 리눅스 커널과 지원 시스템 소프트웨어, 그리고 라이브러리를 포함하고 있으며 이들 가운데 다수가 GNU 프로젝트에 의해 제공된다. 수많은 리눅스 배포판은 배포판 이름에 "리눅스"라는 단어를 사용하지만 자유 소프트웨어 재단은 GNU 소프트웨어의 중요성을 강조하기 위해 (이름에 일부 논란이 있기는 하지만) GNU/리눅스(GNU/Linux)라는 이름을 사용한다.

  • 저명한 리눅스 배포판에는 데비안, 페도라, 우분투가 포함된다. 상용 배포판에는 레드햇 엔터프라이즈 리눅스(RHEL), 수세 리눅스 엔터프라이즈 서버가 포함된다. 데스크톱 리눅스 배포판에는 X11이나 웨이랜드 등의 윈도잉 시스템, 그리고 그놈, KDE 플라스마 등의 데스크톱 환경이 포함된다. 서버용 배포판은 그래픽스 기능이 제되어 있거나 LAMP 등의 솔루션 스택이 포함될 수 있다. 리눅스는 자유로이 재배포가 가능하므로 누구든지 어떠한 목적으로든 배포판을 만들 수 있다.

  • 리눅스는 서버 시장에서 주도적인 운영 체제이다.(상위 100만 대 웹 서버 운영 체제 중 96.4% 이상이 리눅스이다)

  • 개발: 1991년, 헬싱키 대학교의 재학생이었던 토르발스는 운영 체제에 관한 호기심을 가지게 되었다. 당시 교육용으로만 국한되었던 미닉스 라이선스에 실망한 토르발스는 자신만의 운영 체제 커널에 대한 작업을 시작했고 그것이 궁극적으로는 리눅스 커널이 되었다.

(도대체 리누스는 어떻게 돈을 버는가?????????? 라는 궁금점이 생겨 찾아보니 리눅스 배포판을 만든 회사들에서 리누스에게 주식을 증여한다고..)

쉘(Shell)의 종류

  • 쉘(Shell)이란? 커널과 사용자 사이를 이어주는 역할을 함.
    -> 윈도우에서는 명령 프롬프트(cmd)가 쉘이다.

  • Bourne Shell (sh)
    Bourne Shell은 19974년 스티븐 본이 개발하였고 최초의 쉘이다. 대부분의 리눅스에 기본적으로 설치 되어있다. 설치 위치는 '/bin/sh'이다.

  • C shell (csh)
    C shell은 1978년 빌 조이가 개발한 쉘이다. C shell은 Bourne Shell의 사용성을 높이고 더욱 강력하게 만들어졌다. C shell은 C언어를 기반으로 만든 쉘이다. 설치 위치는 '/bin/zsh'이다.

  • tee-see-Shell (tcsh)
    tee-see-Shell은 카네미 멜런 대학교의 학생들이 개발하여 1983년 소스코드를 게시하였다. C shell에서 명령행 완성과 명령 행 편집 기능을 추가했다. 설치 위치는 '/bin/tcsh'이다. (초기 맥 OS X에는 tcsh)를 기본 쉘로 포함하고 있었다.

  • Z shell (zsh)
    Z shell은 폴 폴스타드가 개발한 쉘이다. 많은 개선사항들이 갖추어진 확장형 Bourne Shell이다. 설치 위치는 '/bin/zsh'이다.

  • Bourne-again shell (bash)
    줄여서 bash shell은 GNU 프로젝트를 위해 브라이언 폭스가 작성한 쉘이다. GNU 운영체제와 리눅스, 맥 OS등에서 기본 쉘로 되어있다. C shell과 Bourne shell의 기능들이 만힝 포함되어있다. 설치 위치는 'bin/bash'이다.

  • 리눅스에서 쉘을 확인하고 싶다면?

echo $Shell: 사용중인 쉘 확인
chsh -I/cat/etc/shells: 사용할 수 있는 쉘 확인
chsh: 쉘 변경시 사용하는 명령어
/etc/passwd: 사용자의 로그인 쉘 확인

쉘 스크립트를 활용한 다양한 사례

  • 쉘 스크립트는 유닉스와 리눅스 시스템을 관리하는 수단으로 많이 활용된다.
  • 특히 관리자들이 시스템을 점검할 때 내,외장 명령어의 결과를 재가공할 경우 많이 쓴다.
  • 셀 스크립트를 사용하는 가장 큰 이유? 단순 반복작업을 더욱 단순하게 하거나 자동화 할 수 있다!

활용사례 (출처: https://dataonair.or.kr/db-tech-reference/d-lounge/technical-data/?mod=document&uid=236050)
1. 디스크 상태 및 파일 시스템 점검

#!/bin/sh
echo ""
echo "******************* Disk 점검 및 Active 상태 ****************************"
lspv
echo ""
echo "******************** 파일시스템 용량 확인 결과 ***************************"
echo ""
df -g | awk '{print NR, $0}'
echo ""
echo "******* ★ 사용율이 85% 이상인 파일시스템은 아래와 같습니다. ★ ************"
echo ""
df -g | grep -v Iused | grep -v /proc | sed -e s/%//g | awk '$4 > 84 {print NR, $0}'
echo "**************************************************** ************************"
  1. DNS Zone Transfer 설정 점검
  2. 사용자별 디스크 사용량 분석
  3. 프로세스 개수 점검
  4. 주요 설정 파일 권한 점검
  5. Set User ID 권한 파일 점검
    파일이 실행될 때 실행파일을 소유한 그룹 및 사용자 권한을 가진 상태로 설정해주는 setgid와 setuid는 보안에 있어서 큰 취약점이 될 수 있다. 특히 root 권한으로 된 실행파일이라면 문제가 매우 심각하므로, 시스템 관리자는 주기적으로 setgid와 setuid에 권한 파일이 존재하는지를 점검해야 한다
#!/bin/shcat /dev/null > /setuid.log for perm in $(find / -type f -perm -4000 -print)
do
owner="$(ls -ld $perm | awk '{print $3}')"

if [ ! -z $perm ]
then
echo " ★ $owner 의 Setuid 권한을 포함한 파일 : $perm "
echo $perm >> /setuid.log
fi

done
exit 0

컴퓨터 개발 환경(기준: 맥 OS)에서 리눅스와 비슷한 터미널 환경 설정하기

  1. Oh My Zsh 설치
    설치후에 echo $0 을 실행하면 'zsh'가 출력된다면 정상적으로 설치 된 것임!

  2. Iterm2 설치
    Iterm2에서 유용한 편의 기능들을 제공하므로(https://iterm2.com/features.html) Iterm2를 설치

참고

https://wiseworld.tistory.com/47
https://tlfod-server-security.tistory.com/2
위키백과: ko.wikipedia.org
https://dataonair.or.kr/db-tech-reference/d-lounge/technical-data/?mod=document&uid=236050
https://blog.pigno.se/post/184576332493/%EC%99%84%EB%B2%BD%ED%95%9C-mac-%EC%9E%91%EC%97%85%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0-vim-zsh-iterm

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글