본문 바로가기
DevOps/Cloud

[AWS] 우분투 리눅스 기본 명령어

by 태옹 2021. 5. 4.

이전 글에서 AWS EC2 인스턴스를 tera term이라는 에뮬레이터 프로그램을 사용하여 웹서버를 생성해보고 기본적인 우분투 기본 명령어를 알아보았다. 이번에는 추가적으로 자주 사용하는 기본 명령어에 대해 포스팅해보겠다.

 

 

목차

 

1. 절대경로와 상대경로의 차이

2. chmod 명령어 사용법

3. cat, grep, file, ps, adduser, chown 명령어

 


 

su와 sudo 명령어 차이

본격적인 내용으로 들어가기 전에 내가 저번 시간까지 모르고 있던 점이 있었는데, 바로 su와 sudo 명령어의 차이이다. 사실 둘이 같은 기능이라고 생각하고 있었는데 교수님께서 둘의 차이에 대해 설명해주셨다. sudo는 현재 유저에서 일시적으로 super user의 권한을 빌릴 때 사용하며, su는 아예 super user로 접속한 상태라고 한다. su - root같이 root유저로 접속하게 되면 exit명령을 사용하기 전까지는 권한이 유지되는 것이다. 아래는 요약한 내용이다.

  • sudo : 우분투유저에서 일시적으로 super user의 권한을 빌릴 때
  • su : 아예 super user로 접속하는 것

 

상대경로

저번 실습에서는 절대경로로만 접근을 하였지만 이번에는 상대경로로 접근하는 방법을 알아보자.

아래는 상대경로의 가장 기본적인 표현법을 나열한 것이다. 특히 ./와 ../는 헷갈리지 않도록 한다.

 

/ : 최상위 디렉토리

./ or . : 현재 디렉토리
../ : 현재 위치 상위 디렉토리
~/ : home디렉토리 위치

 

절대경로와 상대경로의 차이 파악하기

절대경로와 상대경로는 동일한 경로를 가리키더라도 그 표현법이 다르다. 절대경로의 경우, 자기 자신을 기준으로 하는 것이 아니라 가장 상단의 디렉토리를 기준으로 고정하여 순차적으로 하위 디렉토리를 명시한다. 그러나 상대경로는 현재의 디렉토리를 기준으로 작성하게 된다. 

 

셋은 같은 경로를 가리킴

~$ cd /home/ubuntu/dir1 : 절대경로
~$ cd ./dir1 : 현재 경로 (현재 /home/ubuntu 디렉토리에 위치하였다고 가정)
~$ cd ~/dir1 : 상대 경로

 

 


 

chmod 사용법

chmod 명령어는 change mode의 의미이다. 위에서 본 코드처럼 ls -l 명령어를 사용하게 되면 확인할 수 있는 '-rwxrwxrwx'부분을 변경해주는 명령어이다. 그 의미는 파일 혹은 디렉토리의 권한을 변경할 수 있다는 것이다. 

 

 

nano 혹은 vi에디터로 파일을 작성하였을 때, 'ls -l' 명령어를 사용하여 다음과 같은 두 코드를 확인하였다고 가정한다.

두 코드는 명령어 앞 부분의 의미를 이해하기 위한 임의의 코드이다. 아래에 명시되어있는 내용으로 해당 코드를 해석해보자.

-rwxrwxrwx 1 ubuntu ubuntu 7 Apr 14 07:41 test1.txt
drw-rw-r-- 1 ubuntu ubuntu 7 Apr 14 07:41 test2
  • 앞이 -로 시작하면 file이고, d로 시작하면 directory이다.
  • 처음 rwx는 user가 가질 수 있는 권한이다.
  • 두번째 rwx는 group이 가질 수 있는 권한이다.
  • 세번째 rwx는 other(나머지 일반 유저)가 가질 수 있는 권한이다.
  • 권한이 주어지지 않는 경우 -로 표기한다. (맨 앞자리는 제외 : 파일의 의미이기 때문)
  • r : read 가능 여부
  • w : write 가능 여부
  • x : excute 가능 여부

출처 : https://cloudxlab.com/blog/linux-tutorial-part-1/file-permissions-rwx/

 

결국 위의 코드를 다음과 같은 의미로 해석할 수 있다.

  • test1.txt의 경우 file이고, user · group · other가 모두 조회, 작성, 실행이 가능하다. 
  • test2의 경우 directory이고, user와 group은 조회 및 작성이 가능하며, other은 조회만 가능하다. 

 

 

출처 : https://www.reddit.com/r/linux/comments/ayditr/chmod_cheatsheet/

 

위의 사진은 rwx부분을 숫자로 표현한 내용이다. 2진수를 사용하기 때문에 2의 제곱배로 rwx를 표현할 수 있다. 가장 마지막인 w을 인덱스 0번으로 하게 되면 r이 2², w가 2¹, x가 2º이 되기 때문에 r,w,x는 숫자 4,2,1로 변환해서 표현이 가능하다. 위처럼 chmod 777을 하게 되면 rwxrwxrwx가 모두 가능하다는 의미가 된다.

 

예를 들어 'other에 쓰기 권한을 부여하도록 test 파일의 권한을 변경해라.'라고 한다면, 아래와 같이 나타낼 수 있는 것이다.

//기존 파일로 ls -l 명령어를 사용한 상태라고 가정
-rwxr-xr-- ~ test
//아래의 명령어를 사용하여 권한을 변경할 수 있다.
chmod 756 test

chmod명령어는 rwx권한을 숫자로만 변경할 수 있는 것이 아니라 '+','-' 연산자를 사용해서 변경할 수 있다. u(user), g(group), o(other)와 r,w,x 사이에 연산자를 결합하여 표현한다. 숫자보다 직관적으로 표현할 수 있다는 것이 장점이다. 위의 코드를 연산자를 사용해서 표현하면 다음과 같다.

chmod o+w test

 

 


 

두 파일에서 내용을 복사하거나 연결하는 경우 : cat

  • >: 기존 파일에 처음부터 기존 내용을 덮어쓰기 (정보 손실)
  • >>: 기존 파일에 있는 내용 바로 뒤에 이어쓰기 (정보 보존)

어린이날에 놀고싶은 어른..

nano에디터로 test0504.txt파일과 test0505.txt파일을 만들어준다. cat 명령어를 >나 >> 문자 없이 사용하는 경우 파일의 내용을 에디터 없이 화면에 바로 보여준다. 현재 test0504.txt파일에는 "this is files. my name is file0504.txt"라는 내용이 작성되어있고, test0505.txt파일에는 "my name is test0505. 와 어린이날!"이라는 내용이 작성되어있는 것을 cat 명령어로 확인할 수 있다. cat 명령어를 >문자와 함께 사용하는 경우 좌측에 있는 파일의 내용이 우측에 있는 파일로 덮어쓰기된다. >>문자는 좌측 내용을 우측 내용에 이어쓰기하는 기능이다. 이미지를 통해 결과를 확인해본다.

 

특정 문자열이 들어간 파일을 찾고 싶은 경우: grep

'grep 문자열 파일 이름' 으로 작성한다. -H는 실행코드 앞에 파일명이 포함되어 출력된다. (근데 나는 -H를 안붙여도 그냥 헤더가 나오더라.. 교수님이 실습해주시는 화면에서는 안나왔는데..)

 

grep file *.* or grep -H file *.* : "file"이라는 문자열이 들어간 모든 파일(모든 확장자)을 찾음
grep file * : 확장자가 없는 파일을 찾음
grep -Hw files * : "files"만 찾음 (files1, ~files 같이 양 옆에 다른 문자가 붙는 경우 검색에서 제외)

grep은 강의와 내 실습이 잘 맞지 않는 부분이었는데, -H도 그렇지만 확장자가 없는 파일을 찾는 명령어도 잘 출력이 안되었다. 어떤 문제가 있는지는 모르겠지만 원인이 확인되면 다시 덧붙여서 작성하겠다.

 

 

특정 조건에 맞는 파일을 찾는 경우 : find

find ./ -name file1 : ./위치(현재위치)부터 name이 file1인 파일을 찾음

file1을 하나 더 만들어서 결과를 확인해보기 위해 dir1디렉토리로 접근해 touch명령어로 file1과 file1.txt를 생성하였다. 다시 cd 명령으로 기본 경로로 돌아와서 find 명령어로 이름이 file1인 파일을 검색하면 .txt확장자 없는 file1파일들이 다른 경로에 있더라도 검색되는 것을 확인할 수 있다.

 

 

현재 실행중인 프로세스 상태를 확인하는 경우 : ps

ps -ef : 현재 실행중인 모든 프로세스를 확인
ps -ef | grep file : file과 관련된 프로세스만 확인
kill : 프로세스를 죽임

 

유저를 추가 : adduser

유저를 생성하는 것은 super user의 권한이기 때문에 sudo명령어를 사용한다.
sudo adduser guest : guest유저를 생성

 

소유자 변경 : chown

소유자 변경은 super user의 권한이기 때문에 sudo명령어를 사용한다.

sudo chown ubuntu : 특정 디렉토리로 이동해서 실행하면 ubuntu로 소유자가 변경됨
sudo chown ubuntu:ubuntu test.txt : test.txt의 오너를 ubuntu로, 그룹을 ubuntu으로 변경

 

 

사실 후반에 새롭게 인스턴스를 생성해서 실습하게 되어서 ls명령어를 쓰니 디렉토리가 텅텅 훤히 비었다. 그러니 chown 명령어 부분에만 집중하자. 아까 위에서 새롭게 만든 guest유저가 test.txt 파일을 작성하였다. ls -l 명령어로 '-rw-rw-r-- 1 guest guest 0 ~'부분을 확인할 수 있다. chown명령어를 사용하여 test.txt파일의 소유자를 ubuntu에게, 그룹을 ubuntu로 변경한다. 이후 다시 ls -l 명령어를 통해 test.txt파일의 권한이 ubuntu, ubuntu로 변경되었음을 확인할 수 있다.

 

'DevOps > Cloud' 카테고리의 다른 글

[Cloud]네트워크 기초  (0) 2021.05.26
[AWS] EC2에 MySQL 설치하기  (0) 2021.05.25
[AWS] teraterm을 이용하여 EC2 인스턴스 사용  (0) 2021.04.26
[AWS] EC2 인스턴스 생성  (0) 2021.04.14
[클라우드] 공부내용 기록  (0) 2021.03.21

댓글