Permission denied라는 에러가 발생한 원인을 분석하려면 사용자(user), 슈퍼 사용자(super user), 그룹(group)의 개념을 알아야 한다. 하나씩 알아보자.
✅ 사용자(user)
컴퓨터 환경에서 사용자(user)란 컴퓨터에 접근하는 계정을 의미한다. 윈도우나 맥을 써보면 하나의 컴퓨터에서 여러 사용자를 만들어서 사용할 수 있는 것처럼, 리눅스에서도 여러 사용자를 만들어서 사용할 수 있다.
✅ 컴퓨터에 생성되어 있는 모든 사용자 계정 조회하기
AWS EC2에 아래 명령어를 입력해보자. AWS EC2를 활용해 생성한 리눅스 환경에 기본적으로 생성되어 있는 사용자들이다.
$ cat /etc/passwd
첫 번째 :을 기준으로 왼쪽에 있는 값이 사용자들(users)이다. 사용자를 따로 만든 적도 없는데 root, daemon, bin, sys 등 다양한 사용자가 생성되어 있다. 여러 사용자들 중에서 가장 위에 있는 root와 가장 아래에 있는 ubuntu만 활용할 것이니 이 두 가지 사용자만 기억해두자.
✅ 리눅스에서의 사용자 유형
리눅스에서 사용자 유형은 크게 3가지 종류로 나뉜다.
슈퍼 사용자 (관리자) : 시스템의 모든 권한을 가진 계정
어떠한 제한도 없이 모든 명령어를 실행시킬 수 있으며 모든 파일을 조작할 수 있다.
실수로 중요한 시스템 파일을 지우는 것도 가능하므로, 안전을 위해 평소에는 일반 사용자 계정을 사용하는 것을 추천한다.
일반적으로 root 계정이 슈퍼 사용자로 설정되어 있다.
일반 사용자
권한이 허용된 명령어만 실행시킬 수 있고, 권한이 허용된 파일만 조작할 수 있다.
실수로 중요한 시스템 파일을 지우는 것이 불가능하다.
ex) ubuntu
시스템 사용자
(설명 생략 - 중요하지 않음)
이 3가지 종류 중에서 처음에는 슈퍼 사용자와 일반 사용자만 알아두면 된다. 머릿속에는 ‘ubuntu 계정이 일반 사용자고, root 계정이 슈퍼 사용자구나’만 기억해도 충분하다.
✅ 현재 어떤 사용자로 접속해있는 상태일까?
사용자(user)란 컴퓨터에 접근하는 계정을 의미한다고 했다. 그럼 내가 현재 어떤 사용자 계정으로 접속해 있는 지 확인하려면 어떻게 할까?
터미널의 입력하는 부분에서 @ 왼쪽에 있는 값이 현재 접속해있는 사용자 계정이다.
명령어로 whoami라고 입력하면 현재 접속해있는 사용자 계정을 알려준다.
✅ 다른 사용자로 접속하려면 어떻게 할까?
# 슈퍼 사용자(root 계정)로 접속하는 방법
$ sudo su
root라는 사용자로 변경됐음을 알 수 있다.
슈퍼 사용자로 전환되면 입력창에서 $가 #으로 바뀐다.
#으로 바뀌는 이유는 슈퍼 사용자임을 직관적으로 알려주기 위함이다.
# 일반 사용자(ubuntu 계정)로 접속하는 방법
# su [사용자명]
$ su ubuntu