Ubuntu - 2. 우분투(리눅스) 기본 사용법1

 

 


 

실습 버전: Ubuntu 22.04.3 LTS

 

1. 리눅스 기본 명령어

 

- 명령어

명령어 기능
head -[숫자] [명령어] 해당 명령어 출력내용을 앞에서부터 숫자까지 출력
tail -[숫자] [명령어] 해당 명령어 출력내용을 뒤에서부터 숫자까지 출력
history 지금까지 쓴 명령어 확인
history -c 히스토리 내역 삭
poweroff, shutdown -P now, halt -p, init 0  서버 종료( shutdown -k 10 => 실제로 셧다운은 안하고 10분 후에 꺼진다는 메시지만 모든 사용자한테 보냄)
shutdown -r now, reboot, init 6 재부팅
logout, exit 현재 접속 계정 로그아웃
mv [소] [대상] 파일이나 디렉토리를 이동하거나 이름을 변경
cp [소스] [대상] 파일이나 디렉토리를 복사
ps 실행중인 프로세스 확인
kill [프로세스 ID] 프로세스를 종료
su [옵션] [사용자명] 다른 사용자로 전환(su - user1)
| 여러 명령어를 조합하거나 명령어의 출력을 다른 명령어의 입력으로 전달( ps -ef | grep bash)
grep 패턴을 검색하고 필터링하는데 사용

 

 

0: Power Off 종료

1: 시스템 복구 모드, 단일 사용자 모드

3: 텍스트 모드의 멀티유저 실행모드

5: 그래픽 모드의 멀티유저 실행모드

6: 재시작

 

 

 

 

2. vi 명령어

 

 vi는 리눅스와 유닉스 기반 시스템에서 사용되는 텍스트 편집기로, 명령줄 환경에서 작동한다. 여러 가지 모드를 제공하며, 간단한 텍스트 편집부터 고급 기능을 제공한다. 다음은 vi의 주요 특징과 사용법이다.

 

 

 

vi 구조

 

1) vi 기본 명령어

 

- 입력모드 진입 명령어

명령어 기능
i 현재 커서 위치에서 입력모드
a 현재 커서 다음 위치에서 입력모드
I(shift+i) 현재 커서 줄 맨 앞에서 입력모드
A 현재 커서 줄 맨 뒤에서 입력모드

 

- 커서 이동

명령어 기능
h 왼쪽 이동
k 위로 이동
j 아래 이동
l 오른쪽 이동

 

- 삭제,복사,붙여넣기

명령어 기능
x 현재 커서에 위치한 한 글자 삭제
X 현재 커서 앞에 위치한 한 글자 삭제
dd 현재 커서 행 삭제
숫자 + dd 현재 행을 포함한 숫자만큼 행 삭제
yy 현재 커서 행 복사
숫자 + yy 현재 행을 포함한 숫자만큼 행 복사
p 복사한 내용을 현재 행 이후에 복사
P 복사한 내용을 현재 행 이전에 복사

 

ex모드에서 set number 시에 행 번호 표시

 

 

2) vi 비정상 종료 시 조치방법

 

 

vi 작업 중 서버 연결이 끊겨서 비정상 종료되고 다시 파일을 열면 해당 메시지가 표시된다.

 

 

 그리고 ".swp"이라는 파일이 생성된다. ".swp" 파일은 vivim 편집기에서 편집 중인 파일의 임시 백업 파일로 사용된다. 이 파일은 편집 중인 파일을 보호하고 동시에 여러 사용자가 동시에 같은 파일을 편집할 때 충돌을 방지하는 데 도움이 된다.

 

 

 

- 조치1(수정하기 전 상태)

 

수정하기전의 상태를 복구하려면 ".swp"파일을 삭제하고 다시 vi를 통해 접속한다.

 

 

- 조치2(수정하고 있는 중인 상태)

 

종료되기 바로 직전의 상태를 복구하려면

 

이 상태 메시지에서 r(복구)을 입력하고 엔터치고 :wq로 저장한다. 마지막으로 ".swp"를 삭제하면 종료되기 직전의 상태로 복구된다.

 

 

 

 

 

3. 사용자와 그룹 관리

 

 리눅스는 멀티유저 환경을 지원하여 여러 사용자가 동시에 시스템에 접속하여 작업할 수 있다. 각 사용자는 독립적인 작업 환경을 가지며, 파일 및 자원에 대한 권한 관리를 통해 보안을 강화할 수 있다.

 

root는 모든 권한을 가진 슈퍼유저이며 모든 작업 가능한 계정이다.

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

 

 

 

1) 사용자 계정정보(/etc/passwd)

 

"/etc/passwd"는 등록되어 있는 모든 계정정보를 확인할 수 있는 파일이다.

 

텍스트의 의미

 

(비밀번호가 x인 것은 /etc/shadow 파일에서 관리한다는 뜻)

 

 

 

2) 사용자계정 비밀번호정보(/etc/shadow)

 

"/etc/shadow "는 등록되어 있는 모든 계정의 비밀번호를 확인 할 수 있는데 암호화 되어 있다.

 

 

 

3) 그룹정보(/etc/group)

 

 

"/etc/group"은 등록되어 있는 모든 그룹정보를 확인 할 수 있는 파일이다.

 

 

텍스트의 의미

 

 

 

 

 

4) 관련 명령어

 

- 사용자

명령어 기능 옵션 예시
adduser [계정명] 사용자 계정 추가 --uid:id지정,
--gid:그룹지정,
--home: 홈 디렉터리 지정
--shell: 쉘 지정
adduser --gid 1000 user1
passwd [계정명] 사용자 계정 비밀번호 지정 - passwd user1
usermod [속성] [계정] 사용자 계정 속성 변경 - usermod --groups ubuntu user1
userdel [계정] 해당 사용자 계정 삭제 -r: 홈 디렉터 삭제 userdel -r user1 

 

 참고로 사용자 계정을 만들때 홈 디렉터리도 자동으로 생성된다.   

만약 user1이라는 이름을 가진 사용자 계정 생성 시 "/home/user1" 폴더가 만들어지고 "/home/user1" 폴더 안에는 다음과 같은 파일들이 들어 있다.

 

해당 파일들은 "/etc/skel"의 내용을 그대로 복사해서 넣은 것이다. 

 

따라서 다른 사용자 추가시 다른 추가사항을 넣을때 "/etc/skel"을 수정하면 된다.

 

 

- 그룹

명령어 기능 예시
groups 현재 접속한 사용자의 그룹 조회 -
groupadd [그룹이름] 그룹 생성 groupadd myg1
groupmod [속성] 그룹의 속성 변경 groupmod --new-name myg2 myg1
=> 그룹이름을 myg1에서 myg2로 변경
groupdel [그룹이름] 그룹 삭제 groupdel myg1
gpasswd [그룹이름] 그룹의 암호를 설정하거라 관리 수행 gpasswd myg1

 

 

 

 

4. 파일의 허가권과 소유권, 링크

 

 

ls -l 명령어를 파일 정보를 확인 할 수 있다.

 

 

 

(파일 유형에서 디렉터리는 "d"이며 일반 파일은 "-" 이다.)

 

 

 

 

1) 허가권

 

 리눅스 파일 허가(권한)는 파일이나 디렉토리에 대한 액세스 권한을 설정한다. 각 파일이나 디렉토리는 소유자, 그룹, 기타 사용자에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 가진다. 이러한 권한은 3개의 그룹으로 나누어지며, 이를 3진수로 표현한다.

 

 

 

  1. 소유자 권한 (user):
    • 파일 소유자에 대한 권한을 나타낸다
    • 읽기(r): 파일 내용을 읽을 수 있다.
    • 쓰기(w): 파일 내용을 수정하거나 파일을 삭제할 수 있다.
    • 실행(x): 파일을 실행할 수 있다.
  2. 그룹 권한 (group):
    • 파일이 속한 그룹의 사용자에 대한 권한을 나타낸다.
    • 읽기(r), 쓰기(w), 실행(x) 권한이 소유자 권한과 동일하다.
  3. 기타 사용자 권한 (other 또는 world):
    • 그룹에 속하지 않는 다른 모든 사용자에 대한 권한을 나타낸다.
    • 읽기(r), 쓰기(w), 실행(x) 권한이 소유자와 그룹 권한과 동일하다.

이러한 권한은 숫자로도 표현할 수 있다.

  • 읽기(r): 4
  • 쓰기(w): 2
  • 실행(x): 1

예를 들어, 소유자가 읽기와 쓰기 권한만 있다면 4 + 2 = 6이 된다. 그룹 권한이 읽기만 있다면 4가 된다. 기타 사용자 권한이 모든 권한을 가지고 있다면 7이 된다. => 647

 

 

- chmod

 

chmod 명령어를 통해 해당 파일의 허가권을 변경 할 수 있다.

chmod [권한] [파일]

 

chmod 777 test.txt => 소유자, 그룹, 기타 사용자한테 test.txt파일에 대한 읽기,쓰기,실행 권한을 준다는 뜻이다.

 

 

 

 

 

 

2) 소유권

 

소유권이란  파일이나 디렉토리에 대한 소유자와 그룹을 나타내는 것을 의미한다. 각 파일이나 디렉토리는 특정 사용자와 사용자 그룹에 속하게 되며, 이는 파일에 대한 액세스 권한과 연관이 있다.

 

 

- chown

 

chown 명령어를 이용하여 소유권을 변경 할 수 있다. chown 명령어는 시스템 관리자나 파일의 소유자만이 사용할 수 있다.

chown [옵션] 새로운소유자:새로운그룹 파일명

 

 

chown ubuntu.ubuntu test.txt => ubuntu 사용자, ubuntu 그룹으로 소유권을 변경

 

chown ubuntu test.txt => ubuntu 사용자로 소유권 변경

 

 

- 예시

 

 

1. root 계정에서 test.txt 파일을 생성하고 내용은 "테스트 파일임"

 

 

2. 해당 파일의 소유권은 root, 허가권은 rw-r--r-- => root계정만 수정가능하고 그룹, 기타 사용자는 읽기만 가능

 

 

3. ubuntu 계정(기타 사용자)으로 test.txt 읽기 가능

 

 

4.해당 파일의 허가권을 600(rw-------)으로 변경

 

 

5. 기타사용자는 rwx 권한이 없으므로 못 읽음.

 

 

 

3) 링크

 

- 하드링크:  두 파일이 같은 inode(디스크에 저장된 파일 정보)를 공유하도록 한다. 이는 실제 데이터를 공유하므로 한 쪽에서 파일을 수정하면 다른 쪽에도 반영된다.

 

- 심볼릭링크: 다른 inode를 만들고 해당 inode의 내용은 실제 inode의 포인터를 지정한다.

 

 

- ln 

 

 ln 명령어는 리눅스에서 링크를 생성하는데 사용되는 명령어이다. 링크는 파일 또는 디렉토리의 복사본처럼 동작하면서 원본 파일의 데이터를 공유한다. ln 명령어는 하드 링크와 심볼릭(소프트) 링크를 생성할 수 있다.

 

    1. 하드 링크 

ln [파일1] [파일2]

   

    2. 소프트 링크

ln -s [파일1] [파일2]

  

 주의: 심볼릭 링크는 원본 파일이 삭제되면 끊어지므로 조심해야 한다. 반면 하드 링크는 원본 파일이 삭제되더라도 다른 하드 링크들이 여전히 원본 데이터에 접근할 수 있다.

 


 

정리

 

  1. 리눅스 기본 명령어:
    • head와 tail: 파일 내용의 앞 혹은 뒤에서부터 특정 라인까지 출력
    • history: 사용한 명령어 확인
    • 종료 명령어: poweroff, shutdown, halt, init 0
    • 재부팅 명령어: shutdown -r now, reboot, init 6
    • 로그아웃 명령어: logout, exit
    • 파일 이동 및 이름 변경: mv
    • 파일 복사: cp
    • 실행 중인 프로세스 확인: ps
    • 프로세스 종료: kill
    • 사용자 전환: su
  2. vi 명령어:
    • 입력 모드 진입: i, a, I, A
    • 커서 이동: h, k, j, l
    • 삭제 및 복사: x, X, dd, yy
    • 붙여넣기: p, P
    • 저장 및 종료: :wq
  3. 사용자와 그룹 관리:
    • 사용자 추가: adduser
    • 비밀번호 설정: passwd
    • 사용자 속성 변경: usermod
    • 사용자 삭제: userdel
    • 그룹 조회: groups
    • 그룹 관리: groupadd, groupmod, groupdel, gpasswd
  4. 파일의 허가권과 소유권, 링크:
    • 파일 허가권: 읽기, 쓰기, 실행 권한 설정
    • 파일 소유권: 소유자, 그룹 설정
    • 허가권 변경: chmod
    • 소유권 변경: chown
    • 링크 생성: ln (하드 링크, 소프트 링크)