hyei-devlog

[Linux] vi 편집기 사용법부터 파일 권한, 셸 명령어까지 총정리 본문

Infra & Cloud/Linux

[Linux] vi 편집기 사용법부터 파일 권한, 셸 명령어까지 총정리

winter126 2025. 6. 26. 00:38

vi 편집기 사용법

리눅스에서 가장 많이 쓰이는 기본 편집기이다.

터미널 기반 텍스트 편집기이며, vim으로도 불린다.

 

vi 편집기 실행 및 종료

vi example.txt

 

종료 명령어

명령어 설명
:q! 저장하지 않고 강제 종료
:wq 저장 후 종료
:w filename 다른 이름으로 저장

 

wq!는 권장되지 않는다. 권한 체크 없이 덮어쓰기 때문에 실수할 수 있다.

 

입력과 명령 모드

모드 전환 설명
i 입력 모드로 전환
ESC 명령 모드로 전환
: 하단에 명령어 입력 가능

 

검색 및 치환

/hello       # 'hello'라는 단어를 아래로 검색
?hello       # 위 방향으로 검색
n / N      # 다음 / 이전 결과로 이동
:%s/old/new/g     # 전체 파일에서 old → new로 변경
:%s/old/new/gc    # 변경 전 하나하나 확인 (confirm)

 

자주 쓰는 설정

:set nu        # 줄 번호 표시
:set nonu      # 줄 번호 제거
syntax on
set number

리눅스 퍼미션(권한) 이해하기

리눅스에서 모든 파일과 디렉토리는 "누가 무엇을 할 수 있는가"에 대한 권한(퍼미션)이 설정되어 있다.
퍼미션을 잘 이해하면, 보안뿐 아니라 시스템 사용도 훨씬 자유로워진다.

 

사용자 유형

유형 설명
root 모든 권한 보유 (마스터키)
시스템 사용자 서비스 운영용 (예: apache, mysql)
일반 사용자 우리가 사용하는 사용자 (예: vagrant)

 

su - vagrant   # vagrant 사용자로 전환
exit           # 다시 root로 복귀

 

현재 사용자 정보 확인

whoami         # 현재 사용자 이름
id -u          # UID (숫자)
id             # 사용자, 그룹 정보 전체

 


파일 권한 구조 이해하기

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1234 Jun 25 20:00 /etc/passwd
위치 의미
- 파일 종류 (-: 일반 파일, d: 디렉토리, l: 링크 등)
rw- 소유자(User)의 권한
r-- 그룹(Group)의 권한
r-- 기타 사용자(Other)의 권한

 

권한의 의미 (파일 vs 디렉토리)

권한 파일에서의 의미 디렉토리에서의 의미
r (read) 파일 읽기 (cat, less) 디렉토리 목록 보기 (ls)
w (write) 파일 수정 (vi, echo >) 파일 생성/삭제/이동
x (execute) 파일 실행 (./run.sh) 디렉토리 진입 (cd)

 

디렉토리에 접근할 수 있는 조건?

디렉토리는 단순히 r 권한만 있다고 해서 들어갈 수 있는 것이 아니다.
x(실행 권한)이 있어야 cd로 진입이 가능하다.

권한 의미
x 디렉토리 진입 가능 (cd)
r 디렉토리 내 파일 목록 보기 가능 (ls)
 
권한 조합 cd 가능? ls 가능?
--x
r-x
r-- ✅ (파일 목록만 조회)

 ls -ld 디렉토리명으로 해당 디렉토리의 권한을 확인할 수 있다.


퍼미션 변경 명령어

chomod: 권한 변경

chmod 755 file.txt     # rwxr-xr-x (소유자는 모두, 그룹/기타는 읽기+실행)
chmod o-rwx file.txt   # 기타 사용자 권한 제거
권한 숫자값
r 4
w 2
x 1
 

예시) chmod 754 → rwxr-xr--

 

chown: 소유자 변경

chown user:group file.txt   # user가 소유자, group이 그룹으로 설정됨

 

주로 root 권한이 필요하다 (sudo chown)


기본 권한: 666(파일), 777(디렉토리)의 이유?

파일은 기본적으로 읽기/쓰기만 가능(666) 하도록 생성된다.
실행 권한은 보안상 자동으로 부여되지 않기 때문이다.

 

반면, 디렉토리는 내부에 접근(cd), 목록 확인(ls), 파일 생성/삭제 등의 기능을 위해 rwx 3가지 권한 모두 기본으로 설정된 상태(777)에서 umask로 제한한다.

항목 기본 권한 이유
파일 666 → rw-rw-rw- 실행(x) 권한은 보안상 기본으로 주지 않음. 텍스트 파일 등은 읽기/쓰기만 필요하기 때문
디렉토리 777 → rwxrwxrwx 디렉토리는 진입(cd), 읽기(ls), 생성/삭제 등의 작업에 x, r, w 모두 필요하므로 기본값을 777로 설정

 

umask란?

umask는 새로운 파일이나 디렉토리 생성 시 기본 권한을 제한하는 설정이다.

기본 권한에서 umask 값을 빼서 실제 권한을 결정한다.

 

예시: umask 022

항목 계산식 실제 권힌
파일 666 - 022 644 → rw-r--r--
디렉토리 777 - 022 755 → rwxr-xr-x

 

umask 확인 및 설정

umask            # 현재 설정값 확인
umask 0027       # 새로운 값 설정 (세션 한정)

 

영구적으로 적용하려면 ~/.bashrc 또는 ~/.bash_profile에 추가:

vi ~/.bashrc
umask 0022

 


마무리 요약

r, w, x 각각 읽기, 쓰기, 실행 권한을 의미하며 파일/디렉토리에서 다르게 작용
파일 권한 구조 -rwxr-xr-- 같은 형식은 파일 종류 + 권한 3조합
디렉토리 접근 조건 x 있어야 진입 가능, r 있어야 목록 조회 가능
chmod / chown 권한/소유자 변경 명령어
umask 파일/디렉토리 생성 시 기본 권한을 제한하는 설정 값

 


셸 명령어 & 환경 이해하기

홈 디렉토리

echo $HOME
# /home/vagrant (사용자마다 다름)

 

~는 현재 사용자 홈 디렉토리를 의미한다.

 

PATH: 명령어 찾는 경로

echo $PATH
which ls
which pwcat     # 존재하지 않는 명령어일 경우 not found

→ $PATH에 정의된 경로 내에서 명령어를 찾지 못하면 실행할 수 없다.

 

리다이렉션

echo "hello" > hello.txt     # 덮어쓰기
echo "world" >> hello.txt    # 이어쓰기

 

>는 기존 파일 내용을 지워버리므로 주의!
중요한 설정은 꼭 편집기로 열어서 수정하세요~! (vi, nano 등)

 

명령어 이력 확인 & 재사용

history         # 명령어 이력 출력
!23             # 23번째 명령어 실행
!cat            # 최근 실행된 cat 명령어 재실행

 

alias (별칭)

alias ll='ls -alF'
alias gs='git status'

자주 쓰는 명령어에 별칭을 붙여 빠르게 사용할 수 있다.


전체 요약

vi 편집기 입력/명령 모드, 저장/종료, 검색/치환
퍼미션 사용자, 권한(rwx), 디렉토리 접근 조건 
셸 명령어 환경 변수(PATH), 리다이렉션, history, alias