240924_리눅스 vi,사용자
가상서버 설치
이름 : WEB-Server1 (IP 5)
OS : CentOS7-2009, Minimal
네트워크 어댑터 1)NAT , 2)호스트전용 192.168.56.5(설치 완료 후 내부에서 설정)
가상서버 새로 설치하기 / 설치 후 설정에서 CentOS와 어댑터 추가
소프트웨어 셀렉션에서 minimal 확인!
ㄴCentOS 설치 sb / busanit
완료 후 전원끄기 하고 스냅샷 / 완전초기
이후 test(IP100)을 실행하여(헤드리스 실행 후 Putty 192.168.56.100으로 실행)
anaconda-ke.cfg 만 남겨놓기
이후 anaconda-ke.cfg 파일을 test파일로 복사
◆vi 에디터
파일을 편집하기 위한 프로그램
명령모드 = 편집하는 창
i (insert) = 현재 커서위치에 삽입 / a = 다음 커서위치에 삽입
리눅스는 행단위로 구성
vi [해당파일명] 인입하여
< 필수 명령어 > (반드시 외워야 한다고 생각하기!!)
:se nu (set number) > 번호 확인 및 적어주는 것
:[번호] > 해당 번호의 행으로 이동(콜론 중요)
G > 해당 행의 마지막 행으로 이동
gg > 해당 행의 첫 행으로 이동
u > 되돌리기
/[패턴] > '패턴(단어)' 검색
n > 다음 패턴 검색
i > 입력모드로 진입
# > 주석처리(범용으로 사용됨, 일부는 ; 사용)
:q (quite) = 닫기(수정사항 있을 시 안닫힘) / :q! = 강제 닫기
:w (write) = 저장 / :wq = 저장하고 닫기
yy > 현재 해당 행 복사(숫자 yy)
p > 커서 위치 밑에 붙여넣기
dd > 행 삭제
- : 줄임말
-- : 풀네임
다른명령어 참조
cat [옵션] [파일명] : 표준입력으로 받은 값을 표준출력으로 이어주는 명령어 (파일의 내용을 화면에 출력)
출력 = 프린트 > 화면에 나타내 보일 때 사용하는 단어
-b : 행번호 붙이기 (공백 제외)
-n : 행번호 붙이기 (공백 포함)
more [파일명] / less [파일명] : 파일의 내용을 한페이지 씩 출력
ㄴspace로 한페이지 씩 다운은 동일 하나 less명령어는 방향키, Enter 및 패턴검색 포함 (나갈 때는 q)명령어 추가 사용 가능
ㄴless는 more을 발전시켜 나온 명령어
less -N [파일명] : 행번호와 같이 출력
head [파일명] : 파일의 처음부터 10행 출력
-n(숫자) : 처음부터 n행 출력
tail [파일명] : 파일의 끝부터 10행 출력
-n(숫자) : 끝에서부터 n행 출력
find [찾을경로] [옵션] [조건] [액션]
※옵션
-name : 파일 이름으로 / -size : 파일 크기로 / -perm : 파일 퍼미션
-user : 소유자로 / -group : 소유 그룹으로
-uid : 소유자의 uid로 / -gid : 소유 그룹의 gid로
-ctime : 내용 및 속성을 변경한 시간 기준(파일 이동 등)
-mtime : 데이터 수정 시간 기준(문서 내용 수정 등)
-type : 파일, 디렉토리 등 타입을 지정(f : 일반파일(기본값), d : 디렉토리 등)
※액션
-print : 화면에 출력(기본값) / -ls : 자세히 출력
-exec [명령] {} \; : 찾은 결과로 뒤에 [명령]을 실행
ㄴ/etc 디렉토리 = 대부분의 설정파일 존재
▣파일 글로빙
-와일드 카드 메타 문자로 패턴을 매칭 처리하는 것
1) ? : 문자 1개를 대체
2) * : 문자 0개 또는 그 이상을 대체
[가상서버]
1. WEB서버에 IP 5 넣기
넣는 방법에 대한 내용 및 이론들
2. WEB서버 원격 접속 확인
putty로 192.168.56.5로 접속
3. 패키지 저장소 변경
# vi /etc/yum.repos.d/CentOS-Base.repo
ㄴmirror~앞에 #추가, #base~앞의 #제거 및 뒤의 centos.org를 kakao.com으로 변경
# yum clean all
4. vim 및 net-tools 설치
# yum install -y net-tools vim
5. hostname을 web1.도메인으로 변경
# vim /etc/hostname
ㄴ 호스트 네임.도메인 네임 -> test.sb(나의 이니셜).com 으로 변경 후 esc, :wq 입력하여 저장 후 나와서 재부팅 및 스냅샷(초기설정)
★패턴 찾기
# grep [옵션] [패턴] [파일명]
-n : 행 번호와 함께 출력
-i : 대소문자 구분 안함
-v : 패턴이 포함되지 않는 행 출력
-c : 패턴이 포함된 행의 갯수만 출력
ㄴsb검색 시 sbin 관련 내용도 확인되어 :(콜론) 추가 입력으로 계정관련만 확인되도록 입력
# grep -r [패턴] [디렉토리] : 디렉토리 내에서 [패턴]이 포함된 파일 찾기
◆파이프 |
ㄴ두 개의 프로그램(or 명령)을 연결해주는 역할
ㄴ필터링(grep과 함께 사용)
ㄴsecure는 log중에 보안이 필요한 내용이 담겨있음 / secure내용 |중 sb라는 단어가 들어간 내용| 출력
◆리다이렉션
ㄴ리다이렉션 기호를 사용하여 입출력의 방향을 바꿔줌
-파일 디스크립터 숫자
표준입력(키보드 입력) 0
표준출력(모니터 화면으로 나오게 정상 결과) 1
표준에러(모니터 화면으로 나오는 에러메세지) 2
-리다이렉션 기호(< , >)
> : 출력을 표준 입력으로 바꿔줌(덮어쓰기)
>> : 출력을 표준 입력으로 바꿔줌(이어쓰기)
< : 표준 입력값을 표준 출력으로 바꿔줌
ㄴ표준 입출력에서 b라는 파일을 만들어서 출력한 값을 파일 내로 덮어쓰기함 ( Ctrl + c 로 종료 )
ㄴ입력한 파일을 출력
ㄴ에러의 위치는 가상의 내용이기에 있으나 찾을 수 없다고 나옴
ㄴ이 내용을 리다이렉션 기호를 통해 e에 저장 시 표준출력값만 저장됨(기본값이 1임을 알 수 있음)
ㄴ덮어쓰기와 이어쓰기의 차이
표준에러 버리는 법
# find / -size +100M 2> /dev/null > 에러메세지를 값이 없는 곳으로 보냄
◆whereis, which
# whereis
명령의 바이너리 파일이나 메뉴열 파일의 위치 찾기
# which (기억해야할 명령어 / 사용할 가능성 높음)
명령 파일의 경로를 알려줌
◈사용자 및 그룹(# vim [파일명])
/etc/passwd : 계정(사용자)의 정보가 저장된 파일
1. 로그인ID(계정)
2. 비밀번호 - 현재 /etc/shadow로 이전
3. UID - 사용자 ID, 시스템이 사용자를 구분하기 위해 사용 / 0~999 = 시스템 UID, 일반사용자는 1000부터 할당
4. GID - 그룹 ID
5. 계정 설명
6. 해당 계정의 home디렉토리
7. login shell - 해당계정이 사용하는 주 쉘들
*리눅스의 계정은 반드시 한개 이상의 그룹에 속함
/etc/group : 그룹의 정보가 저장된 파일
sb:x:1000:sb
1. 그룹명
2. 그룹 비밀번호
3. GID
4. 그룹 설명
sb라는 계정이 wheel(보조 그룹), sb(주 그룹)라는 2개의 그룹에 속한점을 확인 가능
# groups [계정] : 해당 계정이 속한 그룹 확인
ㄴ주그룹이 먼저 표기 후 뒤에 보조그룹이 표기됨
ㄴwheel : redhat계열의 sudo라는 명령어를 사용할 수 있는 권한을 주는 그룹
/etc/shadow : 계정 암호에 대한 정보를 관리
sb:$6$jkTjpIdfca9BO2aN$*/**1: :0:99999:7: : : (비번이 너무길어 중간을 ***으로 생략)
1. 로그인 ID (계정)
2. 비밀번호 - "해쉬 암호화"하여 저장된 코드, $를 통해 3가지로 나뉨
ㄴ복호화가 안되는 암호화(가능하긴 함) ㄴ데이터가 조금이라도 변경이 되어도 결과값이 전체적으로 바뀜
ㄴ데이터 무결성을 검증할 때도 사용됨
3. 암호의 최종 변경일(1970년 1월 1일을 기준으로 지난 날짜)
4. 암호 최소 사용기간 : MIN
5. 암호 최대 사용기간 : MAX(제한없음)
6. 암호 최대 사용기간 만료 경고 : Warning
7. 암호 만료 후 사용가능 기간 : Inactive
8. 계정 만료기간 : Expire
:마지막 빈칸은 예비용 칸
◇사용자 생성
-기본적으로 계정은 1개 이상의 그룹에 반드시 속해야 한다
-기본 설정은 계정 이름과 똑같은 그룹이 생성되며 계정은 그 그룹에 속하게 된다
※ adduser와 useradd의 차이 (redhat계열에서는 동일함)
-useradd : '계정'만 생성, 나머지는 다 설정 필요
-adduser : 기본적인 옵션이 적용되어 생성
ㄴredhat계열에서 동일한 이유 : adduser를 사용 시 useradd가 실행됨
# useradd [옵션] [계정]
-g : 기본 그룹 지정
-G : 보조 그룹 지정
-c : 설명
-u : UID 지정
(-m : 홈디렉토리 생성)
-b : 홈디렉토리 지정 (베이스, 상위 디렉토리 지정)
-d : 홈디렉토리 지정 (디렉토리, 정확하게 홈 디렉토리 이름까지 입력)
ㄴ-d 는 권한문제로 이미 생성된 홈디렉토리로 지정 하지 않을 것 / 오류발생 할 수 있음
※계정 생성 시 참조 파일 명령어 2가지
# vim /etc/default/useradd
group=100 : 레드햇에서는 적용이 안됨 > group=100인데 해당그룹에 users가 존재하기에 계정생성 시 계정이름과 같은 디렉토리가 생성되며 속하기 때문
home=/home : 생성 시 /home디렉토리 내에서 계정이름의 디렉토리 생성
inactive=-1 : 이라는 뜻은 적용하지 않는다라는 의미
expire= : 적용안함으로 설정되어있음
shell : 지정된 곳에 저장
skel : 기본적으로 쉘을 사용할 때 기본 환경설정이 있는 디렉토리, 환경설정 파일들이 계정이 생성될 때 홈 디렉토리 안에 생성됨
create_mail_spool=yes : 리눅스 기본 메일함을 만들 것임을 표기
ㄴ작업 중 오류 등 발생 시 실행한 계정에게 메일이 발송됨
# vim /etc/login.defs
메일 디렉토리 위치, 비번 관련 사항, UID 설정값, GID 설정값, 홈디렉토리 생성여부, 그룹생성여부, 비번 암호화 방식 등을 확인가능
◇그룹 생성
# groupadd [그룹]
-g : GID 지정
◇사용자 삭제
# userdel [계정]
-r : 관련 내용 전체 삭제 <= 항상 같이 사용한다고 생각해야 함
ㄴ계정 삭제 시 그룹은 login.defs 설정값에 따라 삭제될 수 있으나 메일함과 디렉토리 등은 존재하기에 -r이 필수
◇그룹 삭제
# groupdel [그룹]
ㄴ삭제하려는 그룹을 주그룹으로 가지고 있는 계정이 있으면 삭제가 안됨