본문 바로가기
SeSAC/네트워크 & 리눅스

[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 2일차

by zivvon 2023. 11. 7.
목차 접기

4. 서버 구축 시 알아야 할 필수 개념과 명령어

✓ putty 설치 완료

 

[ 에디터 사용 ]

- vi 에디터 사용 권장

 

 

[ vi 기능 요약 ]

셸 상에서 vi [파일명]을 입력하면 새로운 문서 편집할 수 있는 환경이 만들어짐!
vi file1​

 


⚠️ 문서 편집 권한이 없다면 'sudo' 명령어를 사용해주자!
1. 명령 모드 (command mode) : vi 명령어를 통해 vi를 시작할 경우 실행되는 모드
- 방향 키를 통해 커서 이동 가능

2. 입력 모드 (insert mode)
: 명령 모드에서 ' i ' 또는 ' a ' 키를 눌러 입력 모드로 넘어갈 수 있음. 입력 모드에서는 자유롭게 코드나 글을 작성할 수 있으며, 명령 모드로 돌아갈 때에는 ' ESC ' 키를 누르면 됨


3. 콜론 모드 : 명령 모드에서 ' : (콜론) '을 입력하면 화면 맨 아랫줄에 입력 가능한 공간 출력됨. 여기서 vi를 종료 가능
< vi 명령어 정리! >

- 명령 모드에서 입력 모드로 전환하기
i : 커서 앞(왼쪽)에 입력
a : 커서 다음(오른쪽)에 입력

- 입력 모드에서 명령 모드로 전환
ESC​

- 저장, 종료하기 : 명령 모드에서 콜론을 이용해 다양한 작업이 가능 (콜론 모드)
:q 종료
:q! 저장하지 않고 강제로 종료
:w 저장
:wq 저장 후 종료
ZZ 저장 후 종료 (:wq와 동일)
:wq 파일 이름 : 저장 후 파일 이름 지정

- 커서 이동
h, j, k, l : 좌, 하, 상, 우 커서
w : 다음 단어의 첫 글자로 이동
b : 이전 단어의 첫 글자로 이동
G : 마지막 행으로 가기
:숫자 : 지정한 숫자 행으로 이동 ex) :100

- 삭제
x : 커서에 있는 글자 삭제
X : 커서 앞에 있는 글자 삭제
dw : 커서를 기준으로 뒤에 있는 단어 글자 삭제 (커서 포함)
db : 커서를 기준으로 앞에 있는 단어 글자 삭제
dd : 커서가 있는 라인(줄) 삭제


+ dw, db, dd 명령 앞에 삭제할 숫자를 지정할 수 있다 ex) 10dd = 10줄 삭제

- 복사
yw : 커서를 기준으로 뒤에 있는 단어 글자 복사 (커서 포함)
yb : 커서를 기준으로 앞에 있는 단어 글자 복사
yy : 커서가 있는 라인(줄) 복사
+ yw, yb, yy 명령 앞에 복사할 숫자를 지정할 수 있다 ex) 10yy = 10줄 복사

- 붙여넣기
p : 커서 다음에 붙여넣기
P : 커서 이전에 붙여넣기

- 찾기
/문자열 : 앞에서부터 문자열 찾음
?문자열 : 뒤에서부터 문자열 찾음
n : 뒤로 검색
N : 앞으로 검색

- 바꾸기
:%s/old/new : 각 행의 처음 나오는 old를 찾아 new로 바꿈
:%s/old/new/g : 모든 old를 찾아 new로 바꿈
:%s/old/new/gc : 모든 old를 찾아 new로 바꾸기 전에 물어봄

- 되돌리기(Undo), 다시 실행(Redo)
u : 이전으로 되돌리기(Undo)
Ctrl + r : 되돌리기한 것을 다시 실행(Redo)

- 자주 사용하는 기능들
:set number : 행번호를 출력 (간단하게 :set nu)
:set nonumber : 행번호 숨김 (간단하게 :set nonu)
:cd : 현재 디렉토리 출력

 

💡오늘의 미션

1. 사용자 user1~user5까지 5명의 계정 추가하기
adduser user1
adduser user2
adduser user3
adduser user4
adduser user5

2. 모든 사용자의 패스워드는 12345로 만들기
passwd user1
passwd user2
passwd user3
passwd user4
passwd user5

3. /etc/passwd 파일을 내 디렉토리에 passwd.backup 파일로 복사하기
cp /etc/passwd ./passwd.backup

4. 복사한 passwd.backup 파일은 아무도 읽을 수 없도록 소유권 변경하기
chmod 000 ./passwd.backup

5. 내 홈 디렉토리에 sysBackup이라는 디렉토리를 생성하고, passwd.backup 파일을 이 디렉토리 안으로 옮기기
mkdir sysBackup
mv passwd.backup ./sysBackup/

6. 이 사용자들 중, user3은 로그인 할 수 없도록 쉘을 바꾸기
/usr/sbin/nologin

 

💡오늘의 마지막 미션!

✓ winSCP 설치 완료

1. winSCP에서 내 computer의 이미지를 서버에 업로드
2. PuTTY로 접속
3. sudo apt-get install nginx
4. 다른 서버로 이미지 복사하기(업로드)
5. 다른 서버로 접속해서 /var/www/html vi 편집기로 편집하기
6. 해당 웹 브라우저로 접속해서 이미지 띄우기!
# 다른 서버로 ssh 접속하기
ssh 계정명@ip주소
# 현재 서버에서 다른 서버로 파일 업로드(복사)하기
scp ./001.jpg 계정명@ip주소:/tmp
# 다른 서버(서버2)에서 서버1에서 받아온 이미지를 /var/www/html 아래로 복사하기
sudo cp 001.jpg /var/www/html
# index.html 파일 편집하기
sudo vi /var/www/html/index.html

결과화면!

 

 

[ 사용자와 그룹 ]

- 기본적으로 root라는 이름을 가진 슈퍼 유저(Super User)가 있으며, 모든 작업을 할 수 있는 권한을 가짐

- 모든 사용자는 하나 이상의 그룹에 소속되어 있음

- 사용자는 /etc/passwd 파일에 정의되어 있음

 

ex)

root:x:0:0:root:/root:/bin/bash
사용자 이름:암호:사용자 ID:사용자가 소속된 그룹 ID:추가정보:홈 디렉터리:기본 셸

 

- 사용자의 비밀번호는 /etc/shadow 파일에 정의되어 있음

 

ex)

root:x:0:
그룹명:비밀번호:그룹 ID:보조 그룹 사용자

 

< 사용자와 그룹 관련 명령어 정리! >
- adduser : 새로운 사용자를 추가
adduser user1

- passwd : 사용자의 비밀번호를 지정하거나 변경
passwd user1

- usermod : 사용자의 속성 변경
usermod --groups ubuntu user1

- userdel : 사용자 삭제
userdel user1

- chage : 사용자의 암호를 주기적으로 변경하도록 설정
chage -m 2 user1

- groups : 현재 사용자가 속한 그룹 보여줌
groups

- groupadd : 현재 사용자가 속한 그룹 보여줌
groupadd group1

- groupmod : 그룹의 속성 변경
groupmod --new-name mygroup1 group1

- groupdel : 그룹 삭제
groupdel group1

- gpasswd : 그룹의 암호 설정하거나 그룹의 관리 수행
gpasswd group1

 

 

[ 파일과 디렉토리의 소유와 허가권 ]

- 파일의 리스트와 파일 속성

 

~> 파일 유형 : 디렉토리일 경우에는 ' d ', 일반적인 파일일 경우에는 ' - '

~> 파일 허가권(Permission)

    -> ' rw- ', ' r-- ', ' r-- ' 3개씩 끊어서 읽음

    -> 첫 번째 ' rw- '은 소유자(User)의 파일 접근 권한

    -> 두 번째의 ' r-- '은 그룹(Group)의 파일 접근 권한

    -> 세 번째의 ' r-- '은 그 외의 사용자(Other)의 파일 접근 권한

    -> 숫자로도 표시 가능 (8진수)

    소유자(User)         그룹(Group)         그 외 사용자(Other)    
r w - r - - r - -
4 2 0 4 0 0 4 0 0
6 4 4

 

< 파일과 디렉터리의 소유와 허가권 명령어 정리! > ⭐

- chmod 명령 : 파일 허가권 변경 명령어
chmod 777 sample.txt

- 파일 소유권 (Ownership) : 파일을 소유한 사용자와 그룹을 의미
~> chown/chgrp 명령 : 파일의 소유권을 바꾸는 명령어
chown ubuntu.ubuntu sample.txt
chown ubuntu sample.txt 및 chgrp ubuntu sample.txt

 

- chmod 숫자의 의미

8진법 파일모드
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx

 

[ 링크 ]

: 파일의 링크(Link)에는 하드 링크와 심볼릭 링크 두 가지가 있음

- 하드 링크를 생성하면 '하드링크파일'만 하나 생성되며 같은 inode1을 사용

ln 링크대상파일이름 링크파일이름

 

- 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과

ln -s 링크대상파일이름 링크파일이름

 

[ 파일 압축과 묶기]

- 파일 압축 : 압축 파일 확장명은 xz, bz2, gz, zip, Z 등, 단 xz나 bz2 압축률이 더 좋음

< 파일 압축 관련 명령어 >
- xz : 확장명 xz로 압축을 하거나 풀어줌
xz 파일명
xz -d 파일명.xz

- bzip2 : 확장명 bz2로 압축을 하거나 풀어줌
bzip2 파일명
bzip2 -d 파일명.bz2

- gzip : 확장명 gz로 압축을 하거나 풀어줌
gzip 파일명
gzip -d 파일명.gz

- zip/unzip : 확장명 zip으로 압축하거나 풀어줌
zip 새로생성될파일이름.zip 압축할파일이름
unzip 압축파일이름.zip

 

- 파일 묶기 : 리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원칙적으로 별개의 프로그램으로 수행

~> 파일 묶기의 명령어는 'tar'이며, 묶인 파일의 확장명도 'tar'

< 파일 묶기 명령어 >
- tar : 확장명 tar로 묶음 파일을 만들어주거나 묶음을 풀어줌
동작 : c(묶기), x(풀기), t(경로확인)
옵션 : f(파일), v(과정보이기), J(tar+xz), z(tar+gzip), j(tar+bzip2)​


- 사용 예)
tar cvf my.tar /etc/systemd/ # 묶기
tar cvfj my.tar.xz /etc/system/ #묶기 + xz 압축
tar xvf my.tar # tar 풀기
tar xvfJ my.tar.xz /etc/systemd/ # xz 압축해제 + tar 풀기​​

 

- 파일 위치 검색

~> 기본 파일 찾기

find [경로] [옵션] [조건] [action]
[옵션] -name, -user(소유자), -newer(전, 후), -perm(허가권), -size(크기)
[action] -print(디폴트), -exec(외부명령 실행)

 

ex)

# find /etc -name "*.conf"
# find /bin -size + 10k -size -100k
# find /home -name "*.swp" -exec rm {} \;

 


 

오늘의 후기!

: 점점 머리가 아프다 ㅎㅎ.. 많이 써보고 많이 해보는 것만이 답일 것 같다. 그리고! 코딩 처음 해봤을 때처럼 '이게 왜 되지?'라는 의문만 가득 차는데 하나하나 이론부터 뜯어보면서 공부해야겠다. 파이팅 ^^...........!