설치
[42서울] Born2beroot 설치 및 세팅만 정리
주의! 이것만 보고 평가받으면 절대 통과할 수 없습니다. 이대로만 진행하면 평가를 받을 수 있는 상태가 되지만, 이 글은 평가를 통과하기 위한 글이 아님을 유의해주세요. 이 글은 평가표가 150
techdebt.tistory.com
[42서울 / born2beroot] Linux Debian 10.10 설치가이드
42서울 본과정 1circle born2beroot 정리문서
velog.io
born2beroot 삽질의 흔적
* 저도 처음 해보는 작업이라 아래 적은 글에는 틀린 내용이 있을 수도 있습니다. 또 '왜 그렇게 설정을 하는지'에 대해서는 생략한 부분이 많습니다. 첫번째는 제가 잘 모르는 부분도 많기 때문
tbonelee.tistory.com
설치는 위와 같은 사이트를 참고해서 설치하길 바랍니다. 아래는 왜 위와 같이 세팅을 해야하고 어떤 의미가 있는지 정리해 놓은 것입니다.
제가 예전에 정리해 놓고 붙여놓은 것이라서 다소 정리가 안된 부분이 있을 수 있으니 양해 부탁드립니다.
초반 세팅 업데이트 및 sudo 설치
- 초반 세팅 업데이트 및 sudo 설치apt-get install sudo sudo 설치
- apt-get update 패키지 목록 업데이트
sudo 세팅
- sudo 세팅secure_path : /snap/bin 추가
- visudo sudoers에 접근
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Defaults authfail_message="권한 획득 실패 메세지"
- 잘못으로 인한 오류인 경우 선택한 사용자 지정 메시지가 표시되어야 합니다.
Defaults badpass_message="비밀번호 틀릴때 메세지"
- sudo를 사용할 때, 비밀번호가 잘못되어 발생한 오류인 경우 선택한 사용자 지정 메시지가 표시되어야 합니다.
Defaults iolog_dir="/var/log/sudo/"
- sudo를 사용하는 각 작업은 입력과 출력 모두 보관해야 합니다. 로그 파일 /var/log/sudo/ 폴더에 저장해야 합니다.
Defaults log_input
- log_input 및 log_output 매개 변수를 사용하면 sudo가 의사 tty에서 명령을 실행하고 모든 사용자 입력과 모든 출력을 화면에 수신 가능하게 기록 할 수 있습니다.
Defaults log_output
- same
Defaults requiretty
- 보안상의 이유로 TTY 모드를 활성화해야 합니다. sudo가 실제 tty에서 호출되지만 cron 또는 cgi-bin 스크립트와 같은 메소드를 통해서는 호출되지 않도록하려면 다음 행을 추가하십시오.
Defaults passwd_tries=3
- udo를 이용한 인증은 비밀번호가 잘못되었을 경우 3회까지로 제한되어야 합니다.
Defaults secure_path="/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
- 보안상의 이유로 sudo에서 사용할 수 있는 경로도 제한해야 합니다.
예:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Used when a system administrator does not trust sudo users to have a secure PATH environment variable
To separate “root path” and “user path”, only users defined by exempt_group are not affected by this setting.
시스템 관리자가 sudo 사용자에게 보안 PATH 환경 변수가 있다고 신뢰하지 않을 때 사용됨
"루트 경로"와 "사용자 경로"를 구분하기 위해 exempt_group에 의해 정의된 사용자만 이 설정의 영향을 받지 않습니다.
가상머신 원리 및 설명
- 물리적 하드웨어 시스템에 구축되어 자체적인 cpu 메모리 네트워크 인터페이스를 가지는 가상 컴퓨터 시스템으로 하나의 컴퓨터에서 여러개의 OS를 돌릴 수 있다는 장점이있다.
- 가상 머신은 바이러스에 감염된 데이터에 액세스하고 운영 체제를 테스트하는 등, 호스트 환경에서 수행하기에 위험한 특정 작업을 수행하기 위해 생성됩니다
- 하이퍼바이저(다수의 OS를 실행하기 위한 논리적 플랫폼)는 하드웨어를 관리하며 물리적 리소스를 가상 환경과 분리합니다.
- 바이러스를 가지고 있는 프로그램 등 컴퓨터에 치명적인 해를 가할 수 있는 프로그램을 분석하기 좋다.
가상머신(VM)이란?
우선 가상화가 무엇인지 알아보자 가상화의 정의를 내리면 소프트웨어로 하드웨어 기능을 시뮬레이션하여 가상 컴퓨터 시스템을 생성하여 하나의 서버에서 둘 이상의 가상 시스템과 다수의 운
chinggin.tistory.com
CentOS와 Debian 기본적인 차이점
LINUX란? centOS(REDHAT)와 ubuntu(DEBIAN)
리눅스란? 리눅스(Linux)는 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제입니다. 리눅스(Linux)는 UNIX운영체제를 기반으로 만들어진 운영체제 입니다. 리눅스(Linux)는 유닉스(UNIX)와
spidyweb.tistory.com
레드햇계열
레드햇계열은 레드햇이라는 회사에서 배포한 리눅스를 말합니다. 2003년까지는 오픈소스 라이선스로 진행하다가 이후 상용화되었습니다. 레드햇 리눅스는 배포판 중에서 가장 인기가 많습니다. 커뮤니티가 아닌 회사에서 관리하는 레드햇계열의 리눅스는 다른 리눅스 배포판에 비해 패치가 빠르며 내장되어있는 유틸리티의 양도 많고 관리툴의 성능도 우수합니다. 또 호환성면에서도 나무랄데가 없지요. 여러모로 장점이 많습니다. 레드햇 계열의 리눅스에는 페도라와 센토스가 있는데 오늘날에는 페도라보다는 센토스를 더 많이 사용하는 추세입니다.
센토스OS
CentOS는 Community Enterprise Operating System 의 약자로 Red Hat이 공개한 RHEL을 그대로 가져와서 Red Hat의 브랜드와 로고만 제거하고 배포한 배포본입니다. 사실상 RHEL 의 소스를 그대로 사용하고 있기에 RHEL 과 OS 버전, Kernel 버전, 패키지 구성이 똑같고 바이너리가 100%로 호환됩니다. 무료로 사용 가능하지만 문제 발생시 레드햇이라는 회사가 아닌 커뮤니티를 통해 지원이 되므로 다소 패치가 느린감이 없지않아 있습니다. 특히 서버용 운영체제로 인기가 매우 높으며 서버용으로 리눅스를 운영할 목적이라면 아마 대부분 이 센토스OS를 사용하는것이 대부분일 것입니다.
데비안계열
데비안은 온라인 커뮤니티에서 제작하여 레드햇보다 더 먼저 배포되어 시장을 선점하였습니다. 이 데비안에서 파생되어진 OS를 데비안 계열이라고 부릅니다. 하지만, 자발적인 커뮤니티에서 만드는 배포판이라 전문적인 회사에서 서비스를 했던 레드햇계열에 비해 사후지원과 배포가 늦고 내장 유틸들의 성능이 레드햇계열에 비해 부족한감이 있어 오랫동안 레드햇에 밀렸었습니다. 하지만 현재는 무료 개인사용자 서버용으로 인기가 매우 높으며 최근에는 지속적인 업데이트를 거친 결과 레드햇계열에 비해 결코 성능이나 뒤쳐지지 않습니다. 그리고 넓은 유저층을 가지고 있는 데비안계열은 그 사용법이 온라인 웹사이트나 커뮤니티에 자세히 기술되어 있다는 점이 진입장벽을 낮추어 초보 리눅스유저들이 접근하기 쉬운 OS라고 할 수 있겠습니다.
apt & aptitude
우분투에서 패키지를 관리하는 툴에는 apt, dpkg, aptitude가 있다.
apt
- apt는 온라인 리포지토리에서 패키지를 다운로드받고 설치하는데 사용된다.실질적으로 apt는 dpkg와 함께 동작한다. 하지만, 필요한 소프트웨어의 검색, 다운로드, 설치, 업그레이드, 검사 등 대부분의 패키지 관리작업을 apt단독으로 가능하다.
dpkg - dpkg 는 Cd룸이나 다른 디스크장치에 있는 .deb 파일을 제어하는 경우에 일반적으로 사용되며, dpkg명령어는 시스템 소프트웨어에 대한 설정이나 설치 및 정보를 얻는데 사용되는 옵션을 가진다.apt보다는 낮은 수준에서 작업이 수행된다. apt는 우분투의 소프트웨어를 관리하기 위해 내부적으로 dpkg를 이용한다. 보통 apt명령 만으로 충분하지만 시스템에 있는 특정 파일이 어떤 패키지에 포함되는지 등의 확인 작업을 수행하기 위해 dpkg 명령이 필요한 것이다.
aptitude - dpkg와 apt의 경우 제대로 사용하기 위해서는 좀 더 많은 지식을 요구한다. 그에 비하여 aptitude의 경우 주요 패키지 작업 과정을 자동화하여 가능한 쉽게 작업할 수 있도록 해주므로 보다 쉽게 할 수 있다.
APPArmor
접근 통제
운영체제에서 접근 통제(Access Control)은 디렉터리나 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것을 의미합니다.
접근 통제에서는 시스템 자원을 객체(Object)라고 하며 자원에 접근하는 사용자나 프로세스는 주체(Subject)라고 정의합니다.
즉 /etc/passwd 파일은 객체이고 이 파일에 접근해서 암호를 변경하는 passwd 라는 명령어는 주체이며 아파치 웹 서버의 설정 파일인 /etc/httpd/conf/httpd.conf 는 객체이며 웹 서버 프로그램인 /sbin/httpd 는 주체가 됩니다.
보안 모델 :
- DAC (임의 접근 제어, Discretionary Access Control)
- 소유자가 사용자 또는 그룹이 자원에 접근하는 것을 조절 (소유자 자유재량)
- 주체(소유자)가 객체(파일)를 제어
- 계정과 소유권에만 기반
- MAC (강제 접근 제어, Mandatory Access Control)
- 정의된 정책을 활용해 사용자와 프로세스의 행동 제어
- 파일의 유형, 사용자의 역할, 프로그램의 기능과 신뢰도, 데이터의 민감성과 무결성 고려
DAC
- 임의접근제어, Discretionary Access Control사용자나 그룹이 객체의 소유자라면 다른 주체에 대해 이 객체에 대한 접근 권한을 설정할 수 있다.소유자는 자신의 판단에 의해서 권한을 줄 수 있고 구현이 용이하고 사용이 간편하기 때문에 전통적으로 유닉스나 윈도우등 대부분의 운영체제의 기본 접근 통제 모델로 사용되고 있다.임의적 접근 통제는 사용자가 임의로 접근 권한을 지정하므로 사용자의 권한을 탈취당하면 사용자가 소유하고 있는 모든 객체의 접근 권한을 가질 수 있게 되는 치명적인 문제가 있다.
MAC
- 강제접근통제, Mandatory Access Control미리 정해진 정책과 보안 등급에 의거하여 주체에게 허용된 접근 권한과 객체에게 부여된 허용 등급을 비교하여 접근을 통제하는 모델.높은 보안을 요구하는 정보는 낮은 보안 수준의 주체가 접근할 수 없으며 소유자라고 할 지라도 정책에 어긋나면 객체에 접근할 수 없으므로 강력한 보안을 제공한다.
1. SELinux & AppArmor
SELinux
- Security-Enhanced Linux
- 미국 국방부 스타일의 강제 접근 제어(MAC)를 포함한 접근 제어 보안 정책을 지원하는 매커니즘을 제공하는 리눅스 커널 보안 모듈
- 다양한 리눅스 배포판에 추가할 수 있는 커널 수정 및 사용자 공간 도구들의 모임
- 레드햇 계열 (RHEL, Fedora, CentOS)
- MAC 적용 (전통적인 Linux는 DAC)
- 시스템 전체에 보안 설정
AppArmor
- Application Armor
- 시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
- SUSE 계열 (SUSE Linux), 데비안 계열 (Debian, Ubuntu)
- MAC 적용 (전통적인 Linux는 DAC)
- 개별 응용 프로그램을 보호하는 일에 집중
- 응용 프로그램 단위의 보안 모델 구현
- AppArmor는 SELinux를 대체하는 한 부분으로서 제공
둘의 차이점
- 파일에 라벨을 적용하는 것에 기반하는 SELinux와는 달리, AppArmor는 파일 경로를 통해 작동
- 비슷한 접근법을 취하긴 하지만 SELinux는 경로 대신 아이노드 번호로 파일 시스템 객체들을 구별ex) 하드 링크가 생성됐을 때 아이노드에 참조되는 데이터가 같을 것이기 때문에 SELinux가 계속 새로 생성된 하드 링크에 대한 접근을 거부하는 것과 달리 AppArmor에서는 접근 가능
LVM
리눅스의 **"LVM(Logical Volume Manager)"**이란 이름 뜻 그대로 Logical(논리적인) Volume(공간을) Manager(만들게 해주는{관리 해주는} 프로그램)입니다. 주의 할 점은 파티션이란 LVM은 다르다는 것이다.
파티션이란?
"파티션"이란 어떤 하나의 뭔가를 여러개로 나누는 개념으로, 수박 한 통을 여러 조각으로 짜르는 개념이라고 생각하시면 됩니다. 수박 한 통(디스크 하나)을 이제 원하는 크기의 여러 조각(파티션)으로 나누는 거죠.
LVM을 사용하는 이유는?
1. 여러개의 디스크 공간을 합쳐서 하나인양 사용하기 위해
2. 사용하기 애매한 공간의 디스크 파티션(짜투리)들을 활용하기 위해
3. 기존에 사용중인 디스크의 공간을 확장할 수 있기에
기존방식이 파일시스템을 블록 장치에 직접 접근해서 읽고 쓰기를 했다면, LVM은 파일시스템이 LVM이 만든 가상의 블록 장치에 읽고 쓰기를 하게 됩니다.
UFW 서비스 확인
UFW란? Linux의 핵심인 커널은 Server에 대한 Client의 Network 접속을 제어하는 netfilter라는 Module을 가지고 있는데 바로 이 netfilter를 사용하여 Filtering를 수행하는데, 이것을 이용하여 Server 접속에 대한 Network 정책을 세우는 Program이 바로 FirewalL(방화벽) 이다. 특히 이러한 필터중 리눅스에서 가장 많이 사용하는 것이 Iptable 이다. 그러나 이 기본 모듈 소프트웨어만 가지고는 절차상 번거로운 면이 있기 때문에 iptable의 작업을 간편화 해주는 소프트웨어가 바로 UFW**(Uncomplicated FireWall)** 이다.
- 설치 및 상태 확인
sudo apt install ufw : ufw 설치
sudo ufw status verbose ufw : 상태 확인 (디폴트는 inactive)
sudo ufw enable : 부팅 시 ufw 활성화되게 설정
sudo ufw default deny : 기본 incoming deny로 설정
sudo ufw allow 4242 : ssh연결 허용(4242라는 커스텀 포트 사용하는 경우)
- 정책 삭제 원하는 경우
sudo ufw status numbered : 지우고 싶은 규칙 확인후
sudo ufw delete <규칙번호> : 규칙번호 입력 후 삭제
- UFW 포트 추가하고 삭제하는 방법
sudo ufw allow 8080 : 포트 추가
sudo ufw delete allow : 8080 포트 삭제
ssh 서비스 확인
- vim /etc/ssh/sshd_config를 수정하여 ssh 기본 설정 변경
- systemctl status ssh : 상태 확인
- ssh seokchoi@192.168.56.1 -p 4242 : 외부 터미널에서 ssh로 서버 접속
- exit : 중단
apt install openssh-server : ssh 설치
vim /etc/ssh/sshd_config 편집
- #Port 22 -> Port 4242 : 4242 포트로만 접근하도록
- #PermitRootLogin prohibit-password -> PermitRootLogin no : root로는 접근 금지
systemctl restart ssh : ssh 재시작 (설정을 바꾼 것을 적용하기 위해서)
systemctl status ssh : ssh 상태 확인
sudo 관련 명령어
- apt-get update 패키지목록 업데이트
- apt-get install sudo sudo설치
- apt-cache show sudo sudo 설치 확인
- mkdir /var/log/sudo 로그 디텍토리 생성
새 사용자 만들고 비밀 번호 변경/적용 , 사용자 삭제
생성
sudo adduser <사용자명> : 새로운 사용자 추가
grep /bin/bash /etc/passwd | cut -d: -f1 : 현재 사용자 한번에 보기
passwd -e <사용자명> : 사용자가 비밀번호를 까먹었을 때 root 사용자만이 비밀번호를 초기화 시켜줄 수 있다.
usermod : 유저의 그룹 수정
- a 옵션, G 옵션 : 다른 그룹에 속하게 하는 옵션으로 aG 함께 사용하여야 함
- usermod -aG <그룹> <사용자명> : 생성한 유저를 sudo 그룹에 추가를 해야지 sudo 권한을 사용할 수 있다.
usermod 명령어는 root에서 사용해야지 sudo에 추가를 할 수 있다.
삭제
pkill <process id> : process를 종료시켜준 후에
userdel -fr <사용자명> : 사용자 삭제 → -f 옵션을 안하면 processor 가 돌아가면 지울수가 없다.
유저 삭제 시 에러
- deluser : user is currently used by process 1399 → 이때 1399는 프로세스 아이디로 바뀔 수 있다.
이와 같은 에러가 떠서 deluser 명령어가 먹히질 않는다면
pkill 1399 프로세스 강제 종료
sudo deluser —-remove-home username 관련 디렉토리까지 삭제
비밀번호 정책 확인 및 설정 방법
비밀 번호 기간 설정
방법1)
vim /etc/login.defs 명령어로 login.defs 파일 수정
- PASS_MIN_DAYS 2 비밀번호를 바꾸는데 필요한 최소 일 수
- PASS_WARN_AGE 7 비밀번호 만료 전 경고 하는 날의 수
- PASS_MAX_DAYS 30 비밀번호를 사용할 수 있는 최대 일 수
방법2)
chage -l -M 30 - m 2 -W 7 <사용자명> : 명령어로 변경 가능 (처음에 만들어진 유저는 이걸로 바꿔줘야한다.)
비밀번호 조건 설정
apt-get -y install libpam-pwquality : 패스워드 정책 라이브러리 다운
vim /etc/pam.d/common-password : /etc/pam.d/common-password 편집
- retry = 3 : 암호 입력 연속 3회 가능
- minlen = 10 : 최소 길이 10자
- ucredit = -1 : 대문자 1개 이상
- lcredit = -1 : 소문자 1개 이상
- dcredit = -1 : 숫자 1개 이상
- reject_username : 사용자 이름이 그대로 들어가거나 뒤집혀서 들어가 있는 경우 거부
- enforce_for_root : root 사용자가 패스워드를 변경하려고 하는 경우에도 상위 조건들 적용
- difok = 7 : 기존의 패스워드와 달라야하는 문자 수 7개
passwd -e <사용자명> passwd 명령어는 계정의 비밀번호(Password)를 변경 또는 지정하는 명령어 입니다. useradd 명령어를 통해 계정 생성한 직후에는 비밀번호가 지정되어 있지 않기 때문에 passwd 명령어를 통해 지정해줄 수 있습니다.
chage -l <사용자> : 현재 사용자의 암호정보 표시
chage 명령어를 통해 아래와 같은 설정을 바꿀 수 있다.
- Last password change (-d) : 마지막 패스워드 변경일
- Password expires : 암호 만료일
- Password inactive(-I (대문자i)) : 비활성화 유예기간
- Account expires(-E) : 계정 만료일
- Minimum number .... (-m) : 패스워드 변경 후 최소 사용 기간, 즉 최소 의무 사용일
- Maximum number .... (-M) : 패스워드 변경 후 변경 없이 사용가능한 최대 일 수
- Number of days of warning ... (-W) : 패스워드 만료 전 경고메세지를 보낼 일 수
- M 옵션과 -m옵션, -W옵션을 통해 서브젝트에서 요구하는 패스워드 만료 관련 정책들을 변경한다.
Group
어떤 파일이나 폴더를 특정 권한이 있는 사용자들끼리만 공유하기 위해 주로 사용한다.
- groups <유저이름> : 유저가 속한 그룹 확인
- sudo groupadd user42 : user42그룹 추가
- sudo groupdel user42 : user42그룹 삭제
- gpasswd -a <유저> <그룹> : 그룹에 사용자 추가
- gpasswd -d <유저> <그룹> : 그룹에 사용자 제거
- cat /etc/group : 그룹 조회
- usermod -aG <그룹이름> <사용자명> : 그룹 소속 시키기
https://onlyit.tistory.com/entry/usermod-and-gpasswd
usermod and gpasswd
1. 그룹 추가 하기 groupadd -g 1000 sales groupadd -g 1001 prod groupadd -g 1002 market 2. 사용자를 추가 그룹에 포함하기 useradd -G sales,prod testuser 5. 사용자를 추가 그룹에 포함할때 기존의 그룹을 유지해야 한다.
onlyit.tistory.com
Host
hostname 변경
sudo hostnamectl: 현재 호스트 이름
sudo hostnamectl set-hostname <변경할 이름> : 호스트 이름 변경
cat /etc/hostname : 변경된 호스트 이름 확인
sudo reboot : 재부팅하면 호스트 이름 변경 완료
log 확인
/var/log/sudo 폴더에 sudo 명령어가 저장 되도록 해놨으니까 폴더 들어가서 확인하면 됨.
log의 경우 /var/log/sudo/00/00에서 확인할 수 있으며 sudo 명령어 하나마다 하나의 폴더가 생성된다.
폴더에는 총 7개의 log 파일이 존재한다.
-log
- sudo 실행 시 실행한 위치와 실행한 명령어의 위치가 저장되어 있다.
-stderr
- sudo로 실행한 명령어가 오류로 인해 실행되지 않았을 시 출력되는 내용이 저장되어 있다.
-stdin
- sudo로 실행한 명령어가 표준 입력을 받은 내용이 저장되어 있다.
-stdout
- sudo로 실행한 명령어가 표준 출력으로 결과를 출력한 내용이 저장되어 있다.
-timing
- session timing file.
-ttyin
- sudo로 실행한 명령어가 tty로 입력받은 내용이 저장되어 있다.
-ttyout
- sudo로 실행한 명령어가 tty로 출력한 결과가 저장되어 있다.
Cron
cron 이란 리눅스 기간 잡스케줄러로써 반복적인 프로그램 실행을 해주고 싶을 때 사용한다. 예를들어 시간, 날씨, 알람 등등
chmod +x monitoring.sh : monitoring.sh 실행 권한 설정
crontab -e cron : 설정 페이지 오픈
*/10 * * * * /root/monitoring.sh | wall : 10분 마다 monitoring.sh 실행 시키고 wall 모든 사용자에게 메시지를 던진다.
wall 명령은 모든 터미널 사용자에게 메시지를 푸시
cron 컨트롤
systemctl disable cron 크론 중지
systemctl enable cron 크론 시작
mornitering.sh
apt-get -y install sysstat
vi /root/monitoring.sh
아래 내용 그대로 입력. 틈틈히 저장하고 출력 확인하면서 만들 것.
printf "#Architecture: "
// 운영 체제 및 커널 버전의 아키텍처입니다.
uname -a
printf "#CPU physical : "
// 물리적 프로세서 수입니다.
nproc --all
printf "#vCPU : "
// 가상 프로세서 수입니다.
cat /proc/cpuinfo | grep processor | wc -l
printf "#Memory Usage: "
// 서버에서 현재 사용 가능한 RAM 및 사용률(백분율)입니다.
free -m | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\\n", $3, $2, $3/$2 * 100}'
printf "#Disk Usage: "
//서버에서 현재 사용 가능한 메모리와 사용률(백분율)입니다.
df -a -BM | grep /dev/map | awk '{sum+=$3}END{print sum}' | tr -d '\\n'
printf "/"
df -a -BM | grep /dev/map | awk '{sum+=$4}END{print sum}' | tr -d '\\n'
printf "MB ("
df -a -BM | grep /dev/map | awk '{sum1+=$3 ; sum2+=$4 }END{printf "%d", sum1 / sum2 * 100}' | tr -d '\\n'
printf "%%)\\n"
printf "#CPU load: "
// 프로세서의 현재 사용률(백분율)입니다.
mpstat | grep all | awk '{printf "%.2f%%\\n", 100-$13}'
printf "#Last boot: "
**//** 마지막으로 재부팅한 날짜 및 시간입니다.
who -b | awk '{printf $3" "$4"\\n"}' // awk '{printf "%.2f%%\\n", $3, $4}'
printf "#LVM use: "
// LVM이 활성 상태인지 여부입니다.
if [ "$(lsblk | grep lvm | wc -l)" -gt 0 ] ; then printf "yes\\n" ; else printf "no\\n" ; fi
printf "#Connections TCP : "
// 활성 연결 수입니다.
ss | grep -i tcp | wc -l | tr -d '\\n' // ss 대신 netstat사용해도 상관없다.
printf " ESTABLISHED\\n"
printf "#User log: "
// 서버를 사용하는 사용자 수입니다.
who | wc -l
printf "#Network: IP "
// 서버의 IPv4 주소와 MAC(미디어 액세스 제어) 주소입니다.
hostname -I | tr -d '\\n'
printf "("
ip link | awk '$1 == "link/ether" {print $2}' | sed '2, $d' | tr -d '\\n' // ip link | grep link/ehter | sed '2, $d'
printf ")\\n"
printf "#Sudo : "
// sudo 프로그램으로 실행된 명령 수입니다.
journalctl _COMM=sudo | wc -l | tr -d '\\n'
printf " cmd\\n"
운영체제 확인
head -n 2 /etc/os-release : 운영체제 이름, 버전을 나타내준다.
과제가 변하지 않았나 체크
shasum 'seokchoi_s vm.vdi' > signature.txt
'42seoul' 카테고리의 다른 글
[42Seoul] Web Server 프로젝트 회고 (0) | 2024.01.29 |
---|---|
[42Seoul] ft_transcendence 퐁 게임 프로젝트 회고 (1) | 2023.12.17 |
[42Seoul] Net_practice 문제풀이 (0) | 2023.07.13 |
[42Seoul] pipex (0) | 2023.07.02 |
[42Seoul] ft_printf (0) | 2023.07.01 |